|  |  | 
 |  |  | import com.dy.pmsGlobal.daoSta.StaAssemblyWorkHistoryMapper; | 
 |  |  | import com.dy.pmsGlobal.daoSta.StaAssemblyWorkLastMapper; | 
 |  |  | import com.dy.pmsGlobal.pojoBa.BaUser; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.PltProduct; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.PltStation; | 
 |  |  | import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan; | 
 |  |  | import com.dy.pmsGlobal.pojoPr.PrProductionNode; | 
 |  |  | 
 |  |  |         return stationInfo; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public StaAssemblyWorkLast checkStationUsed(String id) { | 
 |  |  |         StaAssemblyWorkLast result = new StaAssemblyWorkLast(); | 
 |  |  |         PltStation stationInfo = null; | 
 |  |  |         if (StringUtils.isBlank(id)) { | 
 |  |  |             throw new RuntimeException("工站编码不能为空,请检查"); | 
 |  |  |         } | 
 |  |  |         stationInfo = getStationInfo(id); | 
 |  |  |         //检查表中stationId是否已经存在 | 
 |  |  |         StaAssemblyWorkLast param = new StaAssemblyWorkLast(); | 
 |  |  |         param.setStationId(stationInfo.getId()); | 
 |  |  |         param.setStatus(STATUS_NORMAL); | 
 |  |  |         List<StaAssemblyWorkLast> workLasts = assemblyWorkLastDao.selectList(param); | 
 |  |  |         if (workLasts.size() > 0) { | 
 |  |  |             BeanUtils.copyProperties(workLasts.get(0), result); | 
 |  |  |             //校验planId processId nodeId | 
 |  |  |             /*PrAssemblyPlan assyPlan = assemblyDao.selectByPrimaryKey(workLasts.get(0).getPlanId()); | 
 |  |  |             if (assyPlan == null) { | 
 |  |  |                 throw new RuntimeException("组装任务已经在系统中删除请检查,请先到登出界面解除工站占用 ,再重新扫描"); | 
 |  |  |             } | 
 |  |  |             boolean hasNodeId = assyPlan.getProcess().getNodes().stream() | 
 |  |  |                     .anyMatch(node -> node.id.equals(workLasts.get(0).getNodeId())); | 
 |  |  |             if (!hasNodeId) { | 
 |  |  |                 throw new RuntimeException("节点信息有误或被其他人员修改,,请先到登出界面解除工站占用 ,再重新扫描"); | 
 |  |  |             } | 
 |  |  |             result.setPlan(assyPlan);*/ | 
 |  |  |         } else { | 
 |  |  |             result.setStationId(stationInfo.getId()); | 
 |  |  |             result.setStationName(stationInfo.getName()); | 
 |  |  |             result.setLineId(stationInfo.getLineId()); | 
 |  |  |             result.setLineName(stationInfo.getLineName()); | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public StaAssemblyWorkLast checkUserAndStationUsed(QueryVo vo) { | 
 |  |  |         StaAssemblyWorkLast result = new StaAssemblyWorkLast(); | 
 |  |  |         PltStation stationInfo = null; | 
 |  |  | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public StaAssemblyWorkLast getWorkLast(String workId) { | 
 |  |  |         StaAssemblyWorkLast result = assemblyWorkLastDao.selectByPrimaryKey(Long.parseLong(workId)); | 
 |  |  |         if (result == null) { | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         BaUser userInfo = getUserInfo(result.getUserId().toString()); | 
 |  |  |         PltStation stationInfo = getStationInfo(result.getStationId().toString()); | 
 |  |  |         //校验planId processId nodeId | 
 |  |  |         PrAssemblyPlan assyPlan = assemblyDao.selectByPrimaryKey(result.getPlanId()); | 
 |  |  |         boolean hasNodeId = assyPlan.getProcess().getNodes().stream() | 
 |  |  |                 .anyMatch(node -> node.id.equals(result.getNodeId())); | 
 |  |  |         if (userInfo == null || stationInfo == null || assyPlan == null || (!hasNodeId)) { | 
 |  |  |             //直接删除记录 | 
 |  |  |             logout(result.getId().toString()); | 
 |  |  |             result.setId(null); | 
 |  |  |             if(userInfo == null){ | 
 |  |  |                 result.setUserId(null); | 
 |  |  |                 result.setUserName(""); | 
 |  |  |             } | 
 |  |  |             if(stationInfo == null){ | 
 |  |  |                 result.setStationId(null); | 
 |  |  |                 result.setStationName(""); | 
 |  |  |             } | 
 |  |  |             if(assyPlan == null){ | 
 |  |  |                 result.setPlanId(null); | 
 |  |  |                 result.setPlanName(""); | 
 |  |  |             } | 
 |  |  |             if(!hasNodeId){ | 
 |  |  |                 result.setNodeId(null); | 
 |  |  |                 result.setNodeName(""); | 
 |  |  |             } | 
 |  |  |             return result; | 
 |  |  |         }else { | 
 |  |  |             result.setPlanName(assyPlan.getName()); | 
 |  |  |             result.setProcessName(assyPlan.getProcessName()); | 
 |  |  |             result.setNodeName(assyPlan.getProcess().getNodes().get(0).getContent()); | 
 |  |  |             //找到对应的产品信息 | 
 |  |  |             PltProduct  product = productDao.selectByPrimaryKey(assyPlan.getProId()); | 
 |  |  |             if (product != null) { | 
 |  |  |                 result.setProId(product.getId()); | 
 |  |  |                 result.setProName(product.getName()); | 
 |  |  |                 String devicePrefix = "110" + product.getCode() + assyPlan.getBatchNo(); | 
 |  |  |                 result.setDevicePrefix(devicePrefix); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         result.setStationId(stationInfo.getId()); | 
 |  |  |         result.setStationName(stationInfo.getName()); | 
 |  |  |         result.setLineId(stationInfo.getLineId()); | 
 |  |  |         result.setLineName(stationInfo.getLineName()); | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public StaAssemblyWorkLast checkStationUsed(String stationId) { | 
 |  |  |         StaAssemblyWorkLast result = new StaAssemblyWorkLast(); | 
 |  |  |         PltStation stationInfo = null; | 
 |  |  |         if (StringUtils.isBlank(stationId)) { | 
 |  |  |             throw new RuntimeException("工站编码不能为空,请检查"); | 
 |  |  |         } | 
 |  |  |         stationInfo = getStationInfo(stationId); | 
 |  |  |         //检查表中stationId是否已经存在 | 
 |  |  |         StaAssemblyWorkLast param = new StaAssemblyWorkLast(); | 
 |  |  |         param.setStationId(stationInfo.getId()); | 
 |  |  |         param.setStatus(STATUS_NORMAL); | 
 |  |  |         List<StaAssemblyWorkLast> workLasts = assemblyWorkLastDao.selectList(param); | 
 |  |  |         if (workLasts.size() > 0) { | 
 |  |  |             result =  getWorkLast(workLasts.get(0).getId().toString()); | 
 |  |  |         } | 
 |  |  |         result.setStationId(stationInfo.getId()); | 
 |  |  |         result.setStationName(stationInfo.getName()); | 
 |  |  |         result.setLineId(stationInfo.getLineId()); | 
 |  |  |         result.setLineName(stationInfo.getLineName()); | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public StaAssemblyWorkLast save(QueryVo vo) { | 
 |  |  |         //先check | 
 |  |  | 
 |  |  |             throw new RuntimeException("节点信息有误或被其他人员修改,请重新选择节点信息"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //怎么将只包含这个节点的信息全部回传呢 | 
 |  |  |         //数据逐个封装返回 | 
 |  |  |         vo.setLineId(checkResult.getLineId()); | 
 |  |  |         StaAssemblyWorkLast staLast = new StaAssemblyWorkLast(); | 
 |  |  |         BeanUtils.copyProperties(vo, staLast); | 
 |  |  | 
 |  |  |         staLast.setStationId(checkResult.getStationId()); | 
 |  |  |         int count = 0; | 
 |  |  |         if (checkResult.getId() == null) { | 
 |  |  |             BeanUtils.copyProperties(vo, staLast); | 
 |  |  |             BeanUtils.copyProperties(vo, staLast);//vo拷贝到staLast | 
 |  |  |             staLast.setUserId(checkResult.getUserId()); | 
 |  |  |             staLast.setStationId(checkResult.getStationId()); | 
 |  |  |             staLast.setStatus(STATUS_NORMAL); | 
 |  |  | 
 |  |  |         StaAssemblyWorkLast result = assemblyWorkLastDao.selectByPrimaryKey(staLast.getId()); | 
 |  |  |         List<PrProductionNode> nodeInfo = assyPlan.getProcess().getNodes().stream() | 
 |  |  |                 .filter(node -> node.id.equals(vo.getNodeId())).collect(Collectors.toList()); | 
 |  |  |         assyPlan.getProcess().setNodes(nodeInfo); | 
 |  |  |         result.setPlan(assyPlan); | 
 |  |  |         result.setPlanName(assyPlan.getName()); | 
 |  |  |         result.setProcessName(assyPlan.getProcessName()); | 
 |  |  |         result.setNodeName(assyPlan.getProcess().getNodes().get(0).getContent()); | 
 |  |  |         //找到对应的产品信息 | 
 |  |  |         PltProduct  product = productDao.selectByPrimaryKey(assyPlan.getProId()); | 
 |  |  |         if (product == null) { | 
 |  |  |             throw new RuntimeException("产品信息有误或被其他人员修改,请登录管理系统查看任务关联产品ID为:" + assyPlan.getProId()); | 
 |  |  |         } | 
 |  |  |         result.setProId(product.getId()); | 
 |  |  |         result.setProName(product.getName()); | 
 |  |  |         String devicePrefix = "110" + product.getCode() + assyPlan.getBatchNo(); | 
 |  |  |         result.setDevicePrefix(devicePrefix); | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |             }); | 
 |  |  |         });*/ | 
 |  |  |         return planList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //workId   assistants 传的是单个的userId  必传参数 | 
 |  |  |     public List<BaUser> updateAssistant(QueryVo vo) { | 
 |  |  |         //找到workId | 
 |  |  |         StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(vo.getWorkId()); | 
 |  |  |         if (workLast == null) { | 
 |  |  |             throw new RuntimeException("系统中没有该条登录信息,请检查或重新登录"); | 
 |  |  |         } | 
 |  |  |         //如果assistants 有101 则删掉 | 
 |  |  |         StringBuilder sb = new StringBuilder(); | 
 |  |  |         String[] assistantArr = vo.getAssistants().split(","); | 
 |  |  |         for (String item : assistantArr) { | 
 |  |  |             if (item.startsWith(USER_PREFIX)) { | 
 |  |  |                 sb.append(item.substring(3)).append(","); | 
 |  |  |             } else { | 
 |  |  |                 sb.append(item).append(","); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         String assistantStr = assistantArr.length > 0 ? sb.deleteCharAt(sb.length() - 1).toString() : ""; | 
 |  |  |         List<BaUser> userInfo = baUserDao.selectByAssistants(vo.getAssistants()); | 
 |  |  |         return userInfo; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public int addAssistant(String workId, String assistant) { | 
 |  |  | 
 |  |  |         List<BaUser> assistantList = baUserDao.selectByAssistants(workLast.getAssistants()); | 
 |  |  |         return assistantList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |