|  |  |  | 
|---|
|  |  |  | import com.alibaba.excel.util.StringUtils; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoBa.BaUserMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPlt.PltProductMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPlt.PltProductionLineMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPlt.PltStationMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoSta.StaAssemblyWorkLastMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoBa.BaUser; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPlt.PltProduct; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPlt.PltProductionLine; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPlt.PltStation; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPr.PrProductionNode; | 
|---|
|  |  |  | 
|---|
|  |  |  | private static final String WORK_TYPE_INSPECTION = "3"; | 
|---|
|  |  |  | private static final String WORK_TYPE_REPAIR = "4"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final String USER_PREFIX = "101"; | 
|---|
|  |  |  | private static final String STATION_PREFIX = "103"; | 
|---|
|  |  |  | //    private static final String USER_PREFIX = "101"; | 
|---|
|  |  |  | //    private static final String STATION_PREFIX = "103"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private PrAssemblyPlanMapper assemblyDao; | 
|---|
|  |  |  | private BaUserMapper baUserDao; | 
|---|
|  |  |  | 
|---|
|  |  |  | private StaAssemblyWorkHistoryMapper assemblyWorkHistoryDao; | 
|---|
|  |  |  | private PrProductionNodeMapper nodeDao; | 
|---|
|  |  |  | private PltProductMapper productDao; | 
|---|
|  |  |  | private PltProductionLineMapper lineDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | public void setAssemblyDao(PrAssemblyPlanMapper assemblyDao) { | 
|---|
|  |  |  | 
|---|
|  |  |  | this.productDao = productDao; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | public void setLineDao(PltProductionLineMapper lineDao) { | 
|---|
|  |  |  | this.lineDao = lineDao; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public BaUser getUserInfo(String id) { | 
|---|
|  |  |  | Long userId = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new RuntimeException("员工编码不能为空"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //用户101 | 
|---|
|  |  |  | if (id.startsWith(USER_PREFIX)) { | 
|---|
|  |  |  | if (id.startsWith(QrCodeConstant.TypeWorker)) { | 
|---|
|  |  |  | userId = Long.parseLong(id.toString().substring(3)); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | userId = Long.parseLong(id.toString()); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new RuntimeException("工站编码不能为空"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //工站103 | 
|---|
|  |  |  | if (id.startsWith(STATION_PREFIX)) { | 
|---|
|  |  |  | if (id.startsWith(QrCodeConstant.TypeStation)) { | 
|---|
|  |  |  | stationId = Long.parseLong(id.toString().substring(3)); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | stationId = Long.parseLong(id.toString()); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new RuntimeException("工站编码:" + stationId + "不在系统中,请先维护工站信息"); | 
|---|
|  |  |  | } else if (stationInfo.getDisabled()) { | 
|---|
|  |  |  | throw new RuntimeException("工站(" + stationInfo.getName() + ")编码:" + stationId + "在系统已禁用,请先启用工站"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //检查线体是否被禁用 | 
|---|
|  |  |  | PltProductionLine lineInfo = lineDao.selectByPrimaryKey(stationInfo.getLineId()); | 
|---|
|  |  |  | if (lineInfo == null ) { | 
|---|
|  |  |  | throw new RuntimeException("工站(" + stationInfo.getName() + ")编码:" + stationId + "所在线体编码:" + lineInfo.getId() + "在系统不存在,请先找管理人员检查"); | 
|---|
|  |  |  | }else if(lineInfo.getDisabled()){ | 
|---|
|  |  |  | throw new RuntimeException("工站(" + stationInfo.getName() + ")编码:" + stationId + "所在线体编码:" + lineInfo.getName() + "在系统已禁用,请先启用线体"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return stationInfo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new RuntimeException("工站编码或员工编码均不能为空,请检查"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //工站103 | 
|---|
|  |  |  | if (vo.getStationId().startsWith(USER_PREFIX)) { | 
|---|
|  |  |  | if (vo.getStationId().startsWith(QrCodeConstant.TypeWorker)) { | 
|---|
|  |  |  | userInfo = getUserInfo(vo.getStationId()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | stationInfo = getStationInfo(vo.getStationId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (vo.getUserId().startsWith(STATION_PREFIX)) { | 
|---|
|  |  |  | if (vo.getUserId().startsWith(QrCodeConstant.TypeStation)) { | 
|---|
|  |  |  | stationInfo = getStationInfo(vo.getUserId()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | userInfo = getUserInfo(vo.getUserId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | List<PrProductionNode> nodeInfo = assyPlan.getProcess().getNodes().stream() | 
|---|
|  |  |  | .filter(node -> node.id.equals(result.getNodeId())).collect(Collectors.toList()); | 
|---|
|  |  |  | result.setPlanName(assyPlan.getName()); | 
|---|
|  |  |  | result.setProcessName(assyPlan.getProcessName()); | 
|---|
|  |  |  | result.setNodeName(assyPlan.getProcess().getNodes().get(0).getContent()); | 
|---|
|  |  |  | result.setNodeName(nodeInfo.get(0).getContent()); | 
|---|
|  |  |  | //找到对应的产品信息 | 
|---|
|  |  |  | PltProduct product = productDao.selectByPrimaryKey(assyPlan.getProId()); | 
|---|
|  |  |  | if (product != null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | //查询到当前的信息 如果登录信息一模一样,不会更新 | 
|---|
|  |  |  | if (checkResult.getId() != null) { | 
|---|
|  |  |  | BeanUtils.copyProperties(checkResult, result);//checkResult拷贝到result | 
|---|
|  |  |  | result.setDt(new Date()); | 
|---|
|  |  |  | assemblyWorkLastDao.updateByPrimaryKeySelective(result); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //逐个封装保存 | 
|---|
|  |  |  | BeanUtils.copyProperties(vo, result);//vo拷贝到result | 
|---|
|  |  |  | 
|---|
|  |  |  | .filter(node -> node.id.equals(vo.getNodeId())).collect(Collectors.toList()); | 
|---|
|  |  |  | result.setPlanName(assyPlan.getName()); | 
|---|
|  |  |  | result.setProcessName(assyPlan.getProcessName()); | 
|---|
|  |  |  | result.setNodeName(assyPlan.getProcess().getNodes().get(0).getContent()); | 
|---|
|  |  |  | result.setNodeName(nodeInfo.get(0).getContent()); | 
|---|
|  |  |  | //找到对应的产品信息 | 
|---|
|  |  |  | PltProduct product = productDao.selectByPrimaryKey(assyPlan.getProId()); | 
|---|
|  |  |  | if (product == null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | BaUser userInfo = getUserInfo(assistant); | 
|---|
|  |  |  | //当前登录人不能是辅助人员 | 
|---|
|  |  |  | if (workLast.getUserId() == userInfo.getId()) { | 
|---|
|  |  |  | if (workLast.getUserId().intValue() == userInfo.getId().intValue()) { | 
|---|
|  |  |  | throw new RuntimeException(userInfo.getName() + "是当前登录人员,不必添加为辅助人员."); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String userId = userInfo.getId().toString(); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (workLast == null) { | 
|---|
|  |  |  | throw new RuntimeException("系统中没有当前登录信息,请检查或重新登录"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if ((!StringUtils.isBlank(assistant)) && assistant.startsWith(USER_PREFIX)) { | 
|---|
|  |  |  | if ((!StringUtils.isBlank(assistant)) && assistant.startsWith(QrCodeConstant.TypeWorker)) { | 
|---|
|  |  |  | assistant = assistant.substring(3); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!StringUtils.isBlank(workLast.getAssistants())) { | 
|---|