|  |  | 
 |  |  |  | 
 |  |  |     private StaDeviceLastMapper deviceLastDao; | 
 |  |  |     private StaDeviceLifeMapper deviceLifeDao; | 
 |  |  |     private StaDeviceLifeLastMapper deviceLifeLastDao; | 
 |  |  |     private StaWipSnExMapper wipSnExDao; | 
 |  |  |     private StaDeviceProductionLogMapper deviceProductionLogDao; | 
 |  |  |     private StaAssemblyWorkLastMapper assemblyWorkLastDao; | 
 |  |  | 
 |  |  |     private OthFileMapper othFileMapper; | 
 |  |  |     @Value("${dy.webFile.fmUrl}") | 
 |  |  |     private String fmUrl; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { | 
 |  |  |         this.deviceLastDao = deviceLastDao; | 
 |  |  | 
 |  |  |     public void setOthFileMapper(OthFileMapper othFileMapper) { | 
 |  |  |         this.othFileMapper = othFileMapper; | 
 |  |  |     } | 
 |  |  |     @Autowired | 
 |  |  |     public void setDeviceLifeLastDao(StaDeviceLifeLastMapper deviceLifeLastDao) { | 
 |  |  |         this.deviceLifeLastDao = deviceLifeLastDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public int save(QueryVo params) { | 
 |  |  | 
 |  |  |         } | 
 |  |  |         PrAssemblyPlan plan = assemblyPlanDao.selectByPrimaryKey(workLast.getPlanId()); | 
 |  |  |         // 验证并处理设备号和物料号 | 
 |  |  |         Set<String> deviceSet = new HashSet<>(Arrays.asList(params.deviceNo.split(","))); | 
 |  |  |         Set<String> deviceSet = new HashSet<>(Arrays.asList(params.deviceNo)); | 
 |  |  |         // 分类设备号和物料号 | 
 |  |  |         List<String> deviceList = new ArrayList<>(); | 
 |  |  |         List<String> materialList = new ArrayList<>(); | 
 |  |  | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         if (deviceList.isEmpty()) { | 
 |  |  |             throw new RuntimeException("设备号(" + params.deviceNo + ")均不属于当前任务计划"); | 
 |  |  |             throw new RuntimeException("设备号(" + Arrays.toString(params.deviceNo) + ")均不属于当前任务计划"); | 
 |  |  |         } | 
 |  |  |         if (deviceList.size() > 1) { | 
 |  |  |             throw new RuntimeException("设备号有且只能有一个属于当前任务计划"); | 
 |  |  | 
 |  |  |     private void saveDeviceLife(StaDeviceLast deviceLast) { | 
 |  |  |         StaDeviceLife life = new StaDeviceLife(); | 
 |  |  |         BeanUtils.copyProperties(deviceLast, life); | 
 |  |  |         life.setId(null); | 
 |  |  |         deviceLifeDao.insertSelective(life); | 
 |  |  |  | 
 |  |  |         StaDeviceLifeLast lastLife = new StaDeviceLifeLast(); | 
 |  |  |         BeanUtils.copyProperties(deviceLast, lastLife); | 
 |  |  |         lastLife.setId(null); | 
 |  |  |         int count = deviceLifeLastDao.updateByDeviceNo(lastLife); | 
 |  |  |         if (count == 0){ | 
 |  |  |             deviceLifeLastDao.insertSelective(lastLife); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private StaDeviceLast buildDeviceLast(QueryVo params, StaAssemblyWorkLast workLast,String deviceNo) { | 
 |  |  |         //组装数据 | 
 |  |  |         StaDeviceLast record = new StaDeviceLast(); | 
 |  |  |  | 
 |  |  |         //pr_assembly_plan input_number +1  投入数加1 | 
 |  |  |         PrAssemblyPlan assemblyPlan = assemblyPlanDao.selectByPrimaryKey(workLast.planId); | 
 |  |  |         StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceNo); | 
 |  |  |         if (preRecord != null) { | 
 |  |  |             record.id = preRecord.id; | 
 |  |  |             record.inTime = preRecord.outTime; | 
 |  |  |             record.outLineTime = preRecord.outLineTime; | 
 |  |  |         }else{ | 
 |  |  |             record.inTime = new Date(); | 
 |  |  |             record.inLineTime = new Date(); | 
 |  |  |             assemblyPlan.setInputNumber(assemblyPlan.getInputNumber() + 1); | 
 |  |  |         } | 
 |  |  |         record.outTime = new Date(); | 
 |  |  |  | 
 |  |  | 
 |  |  |         record.currNode = workLast.nodeId; | 
 |  |  |  | 
 |  |  |         record.updatedBy = workLast.userId; | 
 |  |  |         record.assistants = params.assistants; | 
 |  |  |         record.assistants = workLast.assistants; | 
 |  |  |         record.errorMsg = params.errorMsg; | 
 |  |  |  | 
 |  |  |         PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
 |  |  |         record.nodeContent = node.content; | 
 |  |  |         if (node.isRecord) { | 
 |  |  |             record.deviceCycleContent = node.equipCycleContent; | 
 |  |  |             record.deviceCycleContent = node.deviceCycleContent; | 
 |  |  |         } | 
 |  |  |         record.status = getStatus(params.status, node.isEnd,params.workType); | 
 |  |  |         if(node.getIsEnd() && record.outLineTime == null){ | 
 |  |  |             record.outLineTime = new Date(); | 
 |  |  |             assemblyPlan.setOutputNumber(assemblyPlan.getOutputNumber() + 1); | 
 |  |  |         } | 
 |  |  |         assemblyPlanDao.updateByPrimaryKeySelective(assemblyPlan); | 
 |  |  |         record.status = getStatus(params.status, node.isEnd,workLast.workType.toString()); | 
 |  |  |         return record; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (workLast == null) { | 
 |  |  |             throw new RuntimeException("系统中没有该条登录信息"); | 
 |  |  |         } | 
 |  |  |         StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo); | 
 |  |  |         StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo[0]); | 
 |  |  |         StaRepairInfo repairInfo = new StaRepairInfo(); | 
 |  |  |         repairInfo.workId = workId; | 
 |  |  |         repairInfo.deviceNo = vo.deviceNo; | 
 |  |  |         repairInfo.deviceNo = vo.deviceNo[0]; | 
 |  |  |         repairInfo.repairTime = new Date(); | 
 |  |  |         repairInfo.repairBy = workLast.userId; | 
 |  |  |         repairInfo.repairReason = vo.errorMsg; | 
 |  |  |         repairInfo.fromNode = preDeviceRecord.currNode; | 
 |  |  |         repairInfoDao.insertSelective(repairInfo); | 
 |  |  |  | 
 |  |  |         StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo); | 
 |  |  |         StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
 |  |  |  | 
 |  |  |         int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
 |  |  |                 deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
 |  |  | 
 |  |  |             throw new RuntimeException("系统中没有该条登录信息"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo); | 
 |  |  |         StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
 |  |  |         int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
 |  |  |                 deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
 |  |  |         saveDeviceProductionLog(deviceLast); | 
 |  |  | 
 |  |  |     public Map<String,String> queryByDeviceNo(String deviceNo) { | 
 |  |  |         Map<String,String> map = new HashMap<>(); | 
 |  |  |         map.put("deviceNo", deviceNo); | 
 |  |  |         map.put("proName", "-"); | 
 |  |  |         map.put("proType", "-"); | 
 |  |  |         map.put("proName", ""); | 
 |  |  |         map.put("proType", ""); | 
 |  |  |  | 
 |  |  |         PltProduct product = productDao.selectByCode(deviceNo.substring(3,6)); | 
 |  |  |         if(product != null){ | 
 |  |  |             map.put("proName", product.getName()); | 
 |  |  |             map.put("proType", product.getType()); | 
 |  |  |         } | 
 |  |  |         /*else{ | 
 |  |  |             throw new RuntimeException("该编码("+deviceNo +")不是主要物料(系统中管控的其他设备)"); | 
 |  |  |         }*/ | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  |