|  |  |  | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoSta.*; | 
|---|
|  |  |  | import com.dy.pmsGlobal.daoTst.TstCommandMapper; | 
|---|
|  |  |  | 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.PrBillOfMaterial; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPr.PrProductionNode; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoPr.PrWorkingInstruction; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoSta.*; | 
|---|
|  |  |  | import com.dy.pmsGlobal.pojoTst.TstCommand; | 
|---|
|  |  |  | import com.dy.pmsGlobal.util.DeviceResult; | 
|---|
|  |  |  | import com.dy.pmsGlobal.util.DeviceStatus; | 
|---|
|  |  |  | import com.dy.pmsGlobal.util.QrCodeConstant; | 
|---|
|  |  |  | import com.dy.pmsGlobal.util.UserUtil; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.apache.dubbo.common.utils.PojoUtils; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | 
|---|
|  |  |  | private static final String WORK_TYPE_TEST = "2"; | 
|---|
|  |  |  | private static final String WORK_TYPE_INSPECTION = "3"; | 
|---|
|  |  |  | private static final String WORK_TYPE_REPAIR = "4"; | 
|---|
|  |  |  | private static final String WORK_TYPE_OTHER = "5"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private StaDeviceLastMapper deviceLastDao; | 
|---|
|  |  |  | private StaDeviceLifeMapper deviceLifeDao; | 
|---|
|  |  |  | 
|---|
|  |  |  | private StaRepairInfoMapper repairInfoDao; | 
|---|
|  |  |  | private PltProductQualityInspectionItemsMapper qualityItemsDao; | 
|---|
|  |  |  | private PltProductTestInspectionItemsMapper testItemsDao; | 
|---|
|  |  |  | private TstCommandMapper tstCommandDao; | 
|---|
|  |  |  | private PltProductMapper productDao; | 
|---|
|  |  |  | private PltProParamsMapper paramsDao; | 
|---|
|  |  |  | private PltProductFileMapper productFileDao; | 
|---|
|  |  |  | 
|---|
|  |  |  | this.deviceLifeLastDao = deviceLifeLastDao; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | public void setTstCommandDao(TstCommandMapper tstCommandDao) { | 
|---|
|  |  |  | this.tstCommandDao = tstCommandDao; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int save(QueryVo params) { | 
|---|
|  |  |  | long workId = Long.parseLong(params.workId); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | StaDeviceLast deviceLast = buildDeviceLast(params, workLast, deviceList.get(0)); | 
|---|
|  |  |  | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKey(deviceLast); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | saveDeviceProductionLog(deviceLast); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (preRecord != null) { | 
|---|
|  |  |  | record.id = preRecord.id; | 
|---|
|  |  |  | record.inTime = preRecord.outTime; | 
|---|
|  |  |  | record.inLineTime = preRecord.inLineTime; | 
|---|
|  |  |  | record.outLineTime = preRecord.outLineTime;//下边判断是否结束会用到 得留着 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | record.inTime = new Date(); | 
|---|
|  |  |  | 
|---|
|  |  |  | assemblyPlan.setInputNumber(assemblyPlan.getInputNumber() + 1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | record.outTime = new Date(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | record.planId = workLast.planId; | 
|---|
|  |  |  | record.planId = assemblyPlan.getId(); | 
|---|
|  |  |  | record.workId = Long.parseLong(params.workId); | 
|---|
|  |  |  | record.stationId = workLast.stationId; | 
|---|
|  |  |  | record.deviceNo = deviceNo; | 
|---|
|  |  |  | record.currNode = workLast.nodeId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | record.updatedBy = workLast.userId; | 
|---|
|  |  |  | record.assistants = workLast.assistants; | 
|---|
|  |  |  | record.errorMsg = params.errorMsg; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Boolean isEnd = false;//是否经历过结束节点 | 
|---|
|  |  |  | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
|---|
|  |  |  | record.nodeContent = node.content; | 
|---|
|  |  |  | if (node.isRecord) { | 
|---|
|  |  |  | record.deviceCycleContent = node.deviceCycleContent; | 
|---|
|  |  |  | Boolean isEnd = false;//是否经历过或正在经历结束节点 | 
|---|
|  |  |  | if (workLast.nodeId == null) { | 
|---|
|  |  |  | if (record.outLineTime != null) { | 
|---|
|  |  |  | isEnd = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotBlank(params.getContent())){ | 
|---|
|  |  |  | record.nodeContent = params.getContent(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
|---|
|  |  |  | record.nodeContent = node.content; | 
|---|
|  |  |  | PrProductionNode nextNode = nodeDao.selectNodeBySort(node.getProcessId() , (node.getSort() + 1)); | 
|---|
|  |  |  | record.nextNodeContent = nextNode.content; | 
|---|
|  |  |  | record.nextNode = nextNode.id; | 
|---|
|  |  |  | if (node.isRecord) { | 
|---|
|  |  |  | record.deviceCycleContent = node.deviceCycleContent; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (node.getIsEnd() && record.outLineTime == null) { | 
|---|
|  |  |  | record.outLineTime = new Date(); | 
|---|
|  |  |  | assemblyPlan.setOutputNumber(assemblyPlan.getOutputNumber() + 1); | 
|---|
|  |  |  | isEnd = true; | 
|---|
|  |  |  | } else if (record.outLineTime != null) { | 
|---|
|  |  |  | isEnd = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (node.getIsEnd() && record.outLineTime == null) { | 
|---|
|  |  |  | record.outLineTime = new Date(); | 
|---|
|  |  |  | assemblyPlan.setOutputNumber(assemblyPlan.getOutputNumber() + 1); | 
|---|
|  |  |  | isEnd = true; | 
|---|
|  |  |  | }else if(record.outLineTime != null){ | 
|---|
|  |  |  | isEnd = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assemblyPlanDao.updateByPrimaryKeySelective(assemblyPlan); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | record.status = getStatus(params.status, isEnd, workLast.workType.toString()); | 
|---|
|  |  |  | record.result = getResult(params.status, workLast.workType.toString()); | 
|---|
|  |  |  | assemblyPlanDao.updateByPrimaryKeySelective(assemblyPlan); | 
|---|
|  |  |  | return record; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 原状态: 0:待生产,1:组装中,2:完成,3:维修,4:报废,5:测试不通过,6:品检不通过 | 
|---|
|  |  |  | *20240717当前状态  状态: 1, 组装中,2:完成,3:维修,4:报废 | 
|---|
|  |  |  | * @param status    状态 | 
|---|
|  |  |  | * @param isEnd 是否经历过结束节点 | 
|---|
|  |  |  | * 20240717当前状态  状态: 1, 组装中,2:完成,3:维修,4:报废 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param status 状态 | 
|---|
|  |  |  | * @param isEnd  是否经历过结束节点 | 
|---|
|  |  |  | * @return 状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer getStatus(String status, boolean isEnd, String workType) { | 
|---|
|  |  |  | //组装   2024/07/17 目前组装workType 1 只有MarkOk     //测试    //品检 | 
|---|
|  |  |  | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)) { | 
|---|
|  |  |  | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)|| WORK_TYPE_OTHER.equals(workType)) { | 
|---|
|  |  |  | return switch (status) { | 
|---|
|  |  |  | case QrCodeConstant.MarkOk -> isEnd ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkQualified -> isEnd ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkUnqualified -> DeviceStatus.REPAIR.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkWaste -> DeviceStatus.WASTE.getCode(); | 
|---|
|  |  |  | default -> throw new RuntimeException("状态错误"); | 
|---|
|  |  |  | 
|---|
|  |  |  | //维修 | 
|---|
|  |  |  | throw new RuntimeException("状态错误,无效的节点类型: " + workType); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 结果: 1:通过,2:测试通过,3:品检通过,4:维修通过,5:测试不通过,6:品检不通过,7:报废 | 
|---|
|  |  |  | * @param status    前端出来的状态 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param status 前端出来的状态 | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer getResult(String status, String workType) { | 
|---|
|  |  |  | //组装 | 
|---|
|  |  |  | if (WORK_TYPE_ASSEMBLY.equals(workType)) { | 
|---|
|  |  |  | //组装  临时任务-其他 | 
|---|
|  |  |  | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_OTHER.equals(workType)) { | 
|---|
|  |  |  | return switch (status) { | 
|---|
|  |  |  | case QrCodeConstant.MarkOk -> DeviceResult.PASS.getCode(); | 
|---|
|  |  |  | default -> throw new RuntimeException("状态错误"); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //测试 | 
|---|
|  |  |  | }else if (WORK_TYPE_TEST.equals(workType)) { | 
|---|
|  |  |  | } else if (WORK_TYPE_TEST.equals(workType)) { | 
|---|
|  |  |  | return switch (status) { | 
|---|
|  |  |  | case QrCodeConstant.MarkOk -> DeviceResult.TEST_PASS.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkQualified -> DeviceResult.TEST_PASS.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkUnqualified -> DeviceResult.TEST_FAIL.getCode(); | 
|---|
|  |  |  | default -> throw new RuntimeException("状态错误"); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //品检 | 
|---|
|  |  |  | }else if (WORK_TYPE_INSPECTION.equals(workType)) { | 
|---|
|  |  |  | } else if (WORK_TYPE_INSPECTION.equals(workType)) { | 
|---|
|  |  |  | return switch (status) { | 
|---|
|  |  |  | case QrCodeConstant.MarkOk -> DeviceResult.INSPECTION_PASS.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkQualified -> DeviceResult.INSPECTION_PASS.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkUnqualified -> DeviceResult.INSPECTION_FAIL.getCode(); | 
|---|
|  |  |  | default -> throw new RuntimeException("状态错误"); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //维修 | 
|---|
|  |  |  | }else if (WORK_TYPE_REPAIR.equals(workType)) { | 
|---|
|  |  |  | } else if (WORK_TYPE_REPAIR.equals(workType)) { | 
|---|
|  |  |  | return switch (status) { | 
|---|
|  |  |  | case QrCodeConstant.MarkOk -> DeviceResult.REPAIR_PASS.getCode(); | 
|---|
|  |  |  | case QrCodeConstant.MarkWaste -> DeviceResult.WASTE.getCode(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | throw new RuntimeException("状态错误,无效的节点类型: " + workType); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int repair(QueryVo vo) { | 
|---|
|  |  |  | long workId = Long.parseLong(vo.workId); | 
|---|
|  |  |  | 
|---|
|  |  |  | repairInfo.repairTime = new Date(); | 
|---|
|  |  |  | repairInfo.repairBy = workLast.userId; | 
|---|
|  |  |  | repairInfo.repairReason = vo.errorMsg; | 
|---|
|  |  |  | repairInfo.fromNode = preDeviceRecord.currNode; | 
|---|
|  |  |  | if (preDeviceRecord != null) { | 
|---|
|  |  |  | repairInfo.fromNode = preDeviceRecord.currNode; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | repairInfoDao.insertSelective(repairInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | deviceLast.setRepairId(repairInfo.getId()); | 
|---|
|  |  |  | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKey(deviceLast); | 
|---|
|  |  |  | saveDeviceProductionLog(deviceLast); | 
|---|
|  |  |  | boolean isEndNode = nodeDao.isEndNode(preDeviceRecord.currNode); | 
|---|
|  |  |  | if (isEndNode) { | 
|---|
|  |  |  | //只要经历过结束节点,就一直记录device life | 
|---|
|  |  |  | if (preDeviceRecord != null && preDeviceRecord.getOutLineTime() != null) { | 
|---|
|  |  |  | saveDeviceLife(deviceLast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return count; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
|---|
|  |  |  | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKey(deviceLast); | 
|---|
|  |  |  | saveDeviceProductionLog(deviceLast); | 
|---|
|  |  |  | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
|---|
|  |  |  | if (node.isRecord) { | 
|---|
|  |  |  | if (node != null && node.isRecord) { | 
|---|
|  |  |  | saveDeviceLife(deviceLast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return count; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
|---|
|  |  |  | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKeySelective(deviceLast); | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKey(deviceLast); | 
|---|
|  |  |  | saveDeviceProductionLog(deviceLast); | 
|---|
|  |  |  | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); | 
|---|
|  |  |  | if (node.isRecord) { | 
|---|
|  |  |  | if (node != null && node.isRecord) { | 
|---|
|  |  |  | saveDeviceLife(deviceLast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return count; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //无任务计划中的其他 传workId ,手写工作内容 , 数量 | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int otherWork(QueryVo vo) { | 
|---|
|  |  |  | long workId = Long.parseLong(vo.workId); | 
|---|
|  |  |  | StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); | 
|---|
|  |  |  | if (workLast == null) { | 
|---|
|  |  |  | throw new RuntimeException("系统中没有该条登录信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int count = 0; | 
|---|
|  |  |  | //保存工作记录 //如果有设备码 | 
|---|
|  |  |  | if(vo.deviceNo != null && StringUtils.isNotBlank(vo.deviceNo[0])){ | 
|---|
|  |  |  | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); | 
|---|
|  |  |  | count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : | 
|---|
|  |  |  | deviceLastDao.updateByPrimaryKey(deviceLast); | 
|---|
|  |  |  | saveDeviceProductionLog(deviceLast); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | StaDeviceProductionLog log = new StaDeviceProductionLog(); | 
|---|
|  |  |  | log.setId(null); // 设备生产日志ID设为null,表示新增 | 
|---|
|  |  |  | log.setDeviceNo("");  //RepairId  planId  currNode deviceCycleContent  memo | 
|---|
|  |  |  | log.setWorkId(workId); | 
|---|
|  |  |  | log.setStationId(workLast.getStationId()); | 
|---|
|  |  |  | log.setNodeContent(vo.getContent()); | 
|---|
|  |  |  | log.setStatus(DeviceStatus.COMPLETED.getCode());//完成状态 | 
|---|
|  |  |  | log.setResult(DeviceResult.PASS.getCode());//通过 | 
|---|
|  |  |  | log.setErrorMsg(vo.getErrorMsg()); | 
|---|
|  |  |  | log.setAssistants(workLast.getAssistants()); | 
|---|
|  |  |  | log.setInTime(new Date()); | 
|---|
|  |  |  | log.setOutTime(new Date()); | 
|---|
|  |  |  | log.setUpdatedBy(workLast.getUserId()); | 
|---|
|  |  |  | log.setNumber(vo.getNumber()); | 
|---|
|  |  |  | count = deviceProductionLogDao.insertSelective(log); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return count; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (node.instruction != null) { | 
|---|
|  |  |  | addUrl(node.instruction); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (node.bill != null) { | 
|---|
|  |  |  | addBillUrl(node.bill); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return node; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
|---|
|  |  |  | doc.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + doc.fileId; | 
|---|
|  |  |  | doc.webUrl = fileRestVo.fileWebDownloadPath + doc.fileId; | 
|---|
|  |  |  | doc.orgName = file.orgName; | 
|---|
|  |  |  | doc.extName = file.extName; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<PltProductQualityInspectionItems> getQualityItems(String proId) { | 
|---|
|  |  |  | Map<String, Object> params = new HashMap<>(); | 
|---|
|  |  |  | params.put("proId", proId);//item  start  count | 
|---|
|  |  |  | params.put("disabled", "0"); | 
|---|
|  |  |  | //查询符合条件的记录 | 
|---|
|  |  |  | return qualityItemsDao.selectSome(params); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<PltProductTestInspectionItems> getTestItems(String proId) { | 
|---|
|  |  |  | Map<String, Object> params = new HashMap<>(); | 
|---|
|  |  |  | params.put("proId", proId); | 
|---|
|  |  |  | params.put("disabled", "0"); | 
|---|
|  |  |  | return testItemsDao.selectSome(params); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
|---|
|  |  |  | ins.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + ins.fileId; | 
|---|
|  |  |  | ins.webUrl = 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 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.fileWebDownloadPath + doc.fileId; | 
|---|
|  |  |  | //                doc.orgName = file.orgName; | 
|---|
|  |  |  | //                doc.extName = file.extName; | 
|---|
|  |  |  | //            }); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        return pro; | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String getFilePathWithWebUrl(Long fileId) { | 
|---|
|  |  |  | OthFile file = othFileMapper.selectByPrimaryKey(fileId); | 
|---|
|  |  |  | 
|---|
|  |  |  | return fileRestVo.fileWebUrl + file.filePath; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Map<String, String> queryByDeviceNo(String deviceNo,List<PltProduct> productList) { | 
|---|
|  |  |  | public Map<String, String> queryByDeviceNo(String deviceNo, List<PltProduct> productList) { | 
|---|
|  |  |  | Map<String, String> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("deviceNo", deviceNo); | 
|---|
|  |  |  | map.put("proName", ""); | 
|---|
|  |  |  | 
|---|
|  |  |  | map.put("proId", ""); | 
|---|
|  |  |  | map.put("proCode", ""); | 
|---|
|  |  |  | //判断是不是是本厂物料 | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(productList)){ | 
|---|
|  |  |  | if (CollectionUtils.isEmpty(productList)) { | 
|---|
|  |  |  | productList = productDao.selectAll(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | PltProduct product = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | map.put("proType", product.getType()); | 
|---|
|  |  |  | BigInteger proId = BigInteger.valueOf(product.getId()); | 
|---|
|  |  |  | map.put("proId", proId.toString()); | 
|---|
|  |  |  | map.put("proCode",product.getCode()); | 
|---|
|  |  |  | map.put("proCode", product.getCode()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return map; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //查询产品所在的任务 | 
|---|
|  |  |  | public PrAssemblyPlan queryPlanByDeviceNo(String deviceNo) { | 
|---|
|  |  |  | String proCode = ""; | 
|---|
|  |  |  | String lotCode = ""; | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(deviceNo) && deviceNo.length() == 22) { | 
|---|
|  |  |  | proCode = deviceNo.substring(3,6); | 
|---|
|  |  |  | lotCode = deviceNo.substring(6,15); | 
|---|
|  |  |  | proCode = deviceNo.substring(3, 6); | 
|---|
|  |  |  | lotCode = deviceNo.substring(6, 15); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | PrAssemblyPlan plan = assemblyPlanDao.selectByDeviceNo(proCode,lotCode); | 
|---|
|  |  |  | if(plan != null){ | 
|---|
|  |  |  | PrAssemblyPlan plan = assemblyPlanDao.selectByDeviceNo(proCode, lotCode); | 
|---|
|  |  |  | if (plan != null) { | 
|---|
|  |  |  | plan.setBatchNo(lotCode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return plan; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public List<StaDeviceLife> queryLifeByDeviceNo(String deviceNo) { | 
|---|
|  |  |  | return deviceLifeDao.selectByDeviceNo(deviceNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return deviceProductionLogDao.selectByDeviceNo(devoiceNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void addBillUrl(PrBillOfMaterial bill) { | 
|---|
|  |  |  | if (bill == null || bill.fileId == null) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OthFile file = othFileMapper.selectByPrimaryKey(bill.fileId); | 
|---|
|  |  |  | if (file == null) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); | 
|---|
|  |  |  | bill.webUrl = fileRestVo.fileWebDownloadPath + bill.fileId; | 
|---|
|  |  |  | bill.orgName = file.orgName; | 
|---|
|  |  |  | bill.extName = file.extName; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public List<TstCommand> getCommand(String proId, int type) { | 
|---|
|  |  |  | Map<String, Object> params = new HashMap<>(); | 
|---|
|  |  |  | params.put("proId", proId); | 
|---|
|  |  |  | params.put("type", type); | 
|---|
|  |  |  | return tstCommandDao.selectSome(params); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public List<PltProduct> selectAll(QueryVo queryVo) { | 
|---|
|  |  |  | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); | 
|---|
|  |  |  | return productDao.selectAll(params); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|