|  |  | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | 
 |  |  | import com.dy.pmsGlobal.daoPlt.PltProductMapper; | 
 |  |  | import com.dy.pmsGlobal.daoPlt.PltProductQualityInspectionItemsMapper; | 
 |  |  | import com.dy.pmsGlobal.daoPlt.PltProductTestInspectionItemsMapper; | 
 |  |  | import com.dy.pmsGlobal.daoOth.OthFileMapper; | 
 |  |  | import com.dy.pmsGlobal.daoPlt.*; | 
 |  |  | import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; | 
 |  |  | import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper; | 
 |  |  | import com.dy.pmsGlobal.daoSta.*; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.PltProduct; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.PltProductQualityInspectionItems; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.PltProductTestInspectionItems; | 
 |  |  | import com.dy.pmsGlobal.dyFile.FileOperate; | 
 |  |  | import com.dy.pmsGlobal.dyFile.FileRestVo; | 
 |  |  | import com.dy.pmsGlobal.pojoOth.OthFile; | 
 |  |  | import com.dy.pmsGlobal.pojoPlt.*; | 
 |  |  | import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan; | 
 |  |  | import com.dy.pmsGlobal.pojoPr.PrProductionNode; | 
 |  |  | import com.dy.pmsGlobal.pojoPr.PrWorkingInstruction; | 
 |  |  | import com.dy.pmsGlobal.pojoSta.*; | 
 |  |  | import com.dy.pmsGlobal.util.DeviceStatus; | 
 |  |  | import com.dy.pmsGlobal.util.QrCodeConstant; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     private StaDeviceLastMapper deviceLastDao; | 
 |  |  |     private StaDeviceLifeMapper deviceLifeDao; | 
 |  |  |     private StaDeviceLifeLastMapper deviceLifeLastDao; | 
 |  |  |     private StaWipSnExMapper wipSnExDao; | 
 |  |  |     private StaDeviceProductionLogMapper deviceProductionLogDao; | 
 |  |  |     private StaAssemblyWorkLastMapper assemblyWorkLastDao; | 
 |  |  | 
 |  |  |     private PltProductQualityInspectionItemsMapper qualityItemsDao; | 
 |  |  |     private PltProductTestInspectionItemsMapper testItemsDao; | 
 |  |  |     private PltProductMapper productDao; | 
 |  |  |     private PltProParamsMapper paramsDao; | 
 |  |  |     private PltProductFileMapper productFileDao; | 
 |  |  |     private FileOperate fileOperate; | 
 |  |  |     private OthFileMapper othFileMapper; | 
 |  |  |     @Value("${dy.webFile.fmUrl}") | 
 |  |  |     private String fmUrl; | 
 |  |  |     @Autowired | 
 |  |  |     public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { | 
 |  |  |         this.deviceLastDao = deviceLastDao; | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setProductDao(PltProductMapper productDao) { | 
 |  |  |         this.productDao = productDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setParamsDao(PltProParamsMapper paramsDao) { | 
 |  |  |         this.paramsDao = paramsDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setProductFileDao(PltProductFileMapper productFileDao) { | 
 |  |  |         this.productFileDao = productFileDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setFileOperate(FileOperate fileOperate) { | 
 |  |  |         this.fileOperate = fileOperate; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setOthFileMapper(OthFileMapper othFileMapper) { | 
 |  |  |         this.othFileMapper = othFileMapper; | 
 |  |  |     } | 
 |  |  |     @Autowired | 
 |  |  |     public void setDeviceLifeLastDao(StaDeviceLifeLastMapper deviceLifeLastDao) { | 
 |  |  |         this.deviceLifeLastDao = deviceLifeLastDao; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  | 
 |  |  |     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) { | 
 |  |  | 
 |  |  |         record.planId = workLast.planId; | 
 |  |  |         record.workId = Long.parseLong(params.workId); | 
 |  |  |         record.stationId = workLast.stationId; | 
 |  |  |         record.equipNo = deviceNo; | 
 |  |  |         record.deviceNo = deviceNo; | 
 |  |  |         record.currNode = workLast.nodeId; | 
 |  |  |  | 
 |  |  |         record.updatedBy = workLast.userId; | 
 |  |  |         record.assistants = params.assistants; | 
 |  |  |         record.errorMsg = params.errorMsg; | 
 |  |  |  | 
 |  |  |         PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
 |  |  |         record.nodeContent = node.content; | 
 |  |  |         if (node.isRecord) { | 
 |  |  |             record.equipCycleContent = node.equipCycleContent; | 
 |  |  |             record.deviceCycleContent = node.deviceCycleContent; | 
 |  |  |         } | 
 |  |  |         record.status = getStatus(params.status, node.isEnd,params.workType); | 
 |  |  |         return record; | 
 |  |  | 
 |  |  |         StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo); | 
 |  |  |         StaRepairInfo repairInfo = new StaRepairInfo(); | 
 |  |  |         repairInfo.workId = workId; | 
 |  |  |         repairInfo.equipNo = vo.deviceNo; | 
 |  |  |         repairInfo.deviceNo = vo.deviceNo; | 
 |  |  |         repairInfo.repairTime = new Date(); | 
 |  |  |         repairInfo.repairBy = workLast.userId; | 
 |  |  |         repairInfo.repairReason = vo.errorMsg; | 
 |  |  | 
 |  |  |         saveDeviceProductionLog(deviceLast); | 
 |  |  |         return count; | 
 |  |  |     } | 
 |  |  |     //根据节点查出节点作业指导书 | 
 |  |  |     public PrProductionNode getSopByNodeId(String nodeId) { | 
 |  |  |         if(com.alibaba.excel.util.StringUtils.isBlank(nodeId)){ | 
 |  |  |             throw new RuntimeException("节点ID不能为空"); | 
 |  |  |         } | 
 |  |  |         PrProductionNode node = nodeDao.selectByPrimaryKey(Long.parseLong(nodeId)); | 
 |  |  |         if(node == null){ | 
 |  |  |             throw new RuntimeException("节点ID不存在,请检查"); | 
 |  |  |         } | 
 |  |  |         if(node.instruction != null){ | 
 |  |  |             addUrl(node.instruction); | 
 |  |  |         } | 
 |  |  |         return  node; | 
 |  |  |     } | 
 |  |  |     //主要技术参数    俩个方法同 platform-->product-->productSv | 
 |  |  |     public List<PltProductParams> getParamsByProId(String proId) { | 
 |  |  |         if(StringUtils.isBlank(proId)){ | 
 |  |  |             throw new RuntimeException("产品ID不能为空"); | 
 |  |  |         } | 
 |  |  |         List<PltProductParams> proParams = paramsDao.selectParams(Long.parseLong(proId)); | 
 |  |  |         return  proParams; | 
 |  |  |     } | 
 |  |  |     // 根据产品查出产品文件 | 
 |  |  |     public List<PltProductFile> getFileByProId(String proId) { | 
 |  |  |         if(StringUtils.isBlank(proId)){ | 
 |  |  |             throw new RuntimeException("产品ID不能为空"); | 
 |  |  |         } | 
 |  |  |         List<PltProductFile> proFiles = productFileDao.selectDocuments(Long.parseLong(proId)); | 
 |  |  |         proFiles.stream().forEach(doc -> { | 
 |  |  |             OthFile file = othFileMapper.selectByPrimaryKey(doc.fileId); | 
 |  |  |             if (file == null) { | 
 |  |  |                 return; | 
 |  |  |             } | 
 |  |  |             FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
 |  |  |             doc.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + doc.fileId; | 
 |  |  |             doc.orgName = file.orgName; | 
 |  |  |             doc.extName = file.extName; | 
 |  |  |         }); | 
 |  |  |         return  proFiles; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public List<PltProductQualityInspectionItems> getQualityItems(String proId) { | 
 |  |  |         Map<String, Object> params = new HashMap<>(); | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  |     private void addUrl(PrWorkingInstruction ins) { | 
 |  |  |         if (ins == null || ins.fileId == null) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         OthFile file = othFileMapper.selectByPrimaryKey(ins.fileId); | 
 |  |  |         if (file == null) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
 |  |  |         ins.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + ins.fileId; | 
 |  |  |         ins.orgName = file.orgName; | 
 |  |  |         ins.extName = file.extName; | 
 |  |  |     } | 
 |  |  |     private PltProduct addWebUrl(PltProduct pro) { | 
 |  |  |         if (pro != null) { | 
 |  |  |             if (pro.image != null) { | 
 |  |  |                 String filePathWithWebUrl = getFilePathWithWebUrl(pro.image); | 
 |  |  |                 pro.imageWebPath = filePathWithWebUrl; | 
 |  |  |                 pro.imageWebPathZip = fileOperate.getImgFileZipPath(filePathWithWebUrl); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             pro.proFiles.stream().forEach(doc -> { | 
 |  |  |                 OthFile file = othFileMapper.selectByPrimaryKey(doc.fileId); | 
 |  |  |                 if (file == null) { | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
 |  |  |                 doc.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + doc.fileId; | 
 |  |  |                 doc.orgName = file.orgName; | 
 |  |  |                 doc.extName = file.extName; | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |         return pro; | 
 |  |  |     } | 
 |  |  |     private String getFilePathWithWebUrl(Long fileId) { | 
 |  |  |         OthFile file = othFileMapper.selectByPrimaryKey(fileId); | 
 |  |  |         FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
 |  |  |         return fileRestVo.fileWebUrl + file.filePath; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public Map<String,String> queryByDeviceNo(String deviceNo) { | 
 |  |  |         Map<String,String> map = new HashMap<>(); | 
 |  |  |         map.put("deviceNo", deviceNo); | 
 |  |  |         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()); | 
 |  |  |         } | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public List<StaDeviceLife> queryLifeByDeviceNo(String deviceNo) { | 
 |  |  |         return deviceLifeDao.selectByDeviceNo(deviceNo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public List<StaDeviceProductionLog> queryLogByDeviceNo(String devoiceNo) { | 
 |  |  |         return deviceProductionLogDao.selectByDeviceNo(devoiceNo); | 
 |  |  |     } | 
 |  |  | } |