|  |  | 
 |  |  |     private PrAssemblyPlanMapper assemblyPlanDao; | 
 |  |  | //    private PrProductionProcessMapper processDao; | 
 |  |  |     private PrProductionNodeMapper nodeDao; | 
 |  |  |     private StaRepairInfoMapper repairInfoDao; | 
 |  |  |     @Autowired | 
 |  |  |     public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { | 
 |  |  |         this.deviceLastDao = deviceLastDao; | 
 |  |  | 
 |  |  |     public void setNodeDao(PrProductionNodeMapper nodeDao) { | 
 |  |  |         this.nodeDao = nodeDao; | 
 |  |  |     } | 
 |  |  |     @Autowired | 
 |  |  |     public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) { | 
 |  |  |         this.repairInfoDao = repairInfoDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public int save(QueryVo params) { | 
 |  |  |         long taskId = Long.parseLong(params.taskId); | 
 |  |  |         StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(taskId); | 
 |  |  |         long workId = Long.parseLong(params.workId); | 
 |  |  |         StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); | 
 |  |  |         if (workLast == null) { | 
 |  |  |             throw new RuntimeException("工单不存在"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             throw new RuntimeException("设备号有且只能有一个"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         StaDeviceLast deviceLast = saveDeviceLast(params, workLast, deviceList); | 
 |  |  |         StaDeviceLast deviceLast = buildDeviceLast(params, workLast, deviceList.get(0)); | 
 |  |  |         int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
 |  |  |                 deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
 |  |  |  | 
 |  |  | 
 |  |  |         deviceLifeDao.insertSelective(life); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private StaDeviceLast saveDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, List<String> deviceList){ | 
 |  |  |     private StaDeviceLast buildDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, String deviceNo){ | 
 |  |  |         //组装数据 | 
 |  |  |         StaDeviceLast record = new StaDeviceLast(); | 
 |  |  |  | 
 |  |  |         StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceList.get(0)); | 
 |  |  |         StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceNo); | 
 |  |  |         if(preRecord != null){ | 
 |  |  |             record.id = preRecord.id; | 
 |  |  |             record.inTime = preRecord.outTime; | 
 |  |  |         } | 
 |  |  |         record.outTime = new Date(); | 
 |  |  |  | 
 |  |  |         record.setPlanId(workLast.planId); | 
 |  |  |         record.setClaimId(Long.parseLong(params.taskId)); | 
 |  |  |         record.setStationId(workLast.stationId); | 
 |  |  |         record.setEquipNo(deviceList.get(0)); | 
 |  |  |         record.setCurrNode(workLast.nodeId); | 
 |  |  |         record.planId = workLast.planId; | 
 |  |  |         record.workId = Long.parseLong(params.workId); | 
 |  |  |         record.stationId = workLast.stationId; | 
 |  |  |         record.equipNo = deviceNo; | 
 |  |  |         record.currNode = workLast.nodeId; | 
 |  |  | //        record.setNextNode(getNextNode(params.status,workLast.nodeId)); | 
 |  |  |  | 
 |  |  |         record.updatedBy = workLast.userId; | 
 |  |  | 
 |  |  |             default -> throw new RuntimeException("状态错误"); | 
 |  |  |         }; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public int repair(QueryVo vo) { | 
 |  |  |         long workId = Long.parseLong(vo.workId); | 
 |  |  |         StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); | 
 |  |  |         if (workLast == null) { | 
 |  |  |             throw new RuntimeException("工单不存在"); | 
 |  |  |         } | 
 |  |  |         StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo); | 
 |  |  |         StaRepairInfo repairInfo = new StaRepairInfo(); | 
 |  |  |         repairInfo.workId = workId; | 
 |  |  |         repairInfo.equipNo = vo.deviceNo; | 
 |  |  |         repairInfo.repairTime = new Date(); | 
 |  |  |         repairInfo.repairBy = workLast.userId; | 
 |  |  |         repairInfo.repairReason = vo.errorMsg; | 
 |  |  |         repairInfo.fromNode = preDeviceRecord.currNode; | 
 |  |  |         repairInfoDao.insertSelective(repairInfo); | 
 |  |  |  | 
 |  |  |         StaDeviceLast deviceLast = new StaDeviceLast(); | 
 |  |  |         BeanUtils.copyProperties(preDeviceRecord, deviceLast); | 
 |  |  |         deviceLast.repairId = repairInfo.id; | 
 |  |  |         deviceLast.errorCode = vo.errorMsg; | 
 |  |  |         deviceLast.assistants = vo.assistants; | 
 |  |  |         //如果原节点是结束节点或之后的节点,是则更新为完成,否则更新为组装中(默认维修节点的状态只能为 确定或 报废) | 
 |  |  |         boolean isEndNode = nodeDao.isEndNode(preDeviceRecord.currNode); | 
 |  |  |         if(QrCodeConstant.MarkWaste.equals(vo.status)){ | 
 |  |  |             deviceLast.status = STATUS_WASTE; | 
 |  |  |         }else{ | 
 |  |  |             deviceLast.status = isEndNode? STATUS_COMPLETE:STATUS_OK; | 
 |  |  |         } | 
 |  |  |         int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
 |  |  |                 deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
 |  |  |         saveDeviceProductionLog(deviceLast); | 
 |  |  |  | 
 |  |  |         if (isEndNode) { | 
 |  |  |             saveDeviceLife(deviceLast); | 
 |  |  |         } | 
 |  |  |         return count; | 
 |  |  |     } | 
 |  |  | } |