| | |
| | | //2、去笼子内查找是否可以继续存放的笼子 |
| | | List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); |
| | | List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); |
| | | return computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.TRUE) && computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.FALSE); |
| | | return computeIsTemperingTargetByLine(glassInfos, taskList, line) && computeIsTemperingTargetByLine(glassInfos, taskList, line); |
| | | } |
| | | |
| | | /** |
| | | * 是否钢化玻璃进笼目标位置 |
| | | * |
| | | * @param glassInfos 当条线卧转立所有玻璃 |
| | | * @param taskList 当条线卧转立所有任务 |
| | | * @param isTempering true 钢化 false 不钢化 |
| | | * @param glassInfos 当条线卧转立所有玻璃 |
| | | * @param taskList 当条线卧转立所有任务 |
| | | * @param line 任务是哪条线 |
| | | */ |
| | | private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList, Boolean isTempering) { |
| | | private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList, Integer line) { |
| | | //1、将玻璃信息集合转为glassid为key的map |
| | | Map<String, GlassInfo> glassInfoMap = glassInfos.stream() |
| | | .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); |
| | |
| | | bigStorageCageDetailsService.save(cageDetails); |
| | | } |
| | | //todo:按照进片信息向打车发送进车数据 |
| | | sendTaskListToPLC(taskList); |
| | | sendTaskListToPLC(taskList, line); |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList) { |
| | | private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList, Integer line) { |
| | | S7control s7control = S7object.getinstance().plccontrol; |
| | | PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; |
| | | String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress(); |
| | | String mesD05Address = plcMesObject.getPlcParameter("MESToD05").getAddress(); |
| | | String outLine = line.equals(Const.A09_OUT_TARGET_POSITION) ? mesD03Address : mesD05Address; |
| | | for (int i = 1; i <= taskList.size(); i++) { |
| | | s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), Short.parseShort(taskList.get(i).getLine() + "")); |
| | | s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport1" + i).getAddress(), Short.parseShort(taskList.get(i).getTargetSlot() + "")); |
| | | s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), (short) taskList.get(i).getLine()); |
| | | s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport1" + i).getAddress(), (short) taskList.get(i).getTargetSlot()); |
| | | } |
| | | s7control.writeWord(outLine, (short) 1); |
| | | } |
| | | |
| | | private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list) { |
| | |
| | | if (bigStorageCageOutTaskList.size() > carMaxSize || e.getWidth() > remainWidth) { |
| | | break; |
| | | } |
| | | remainWidth = remainWidth - e.getWidth().intValue() - galssGap; |
| | | remainWidth = remainWidth - (int) e.getWidth() - galssGap; |
| | | bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.A09_OUT_TARGET_POSITION, |
| | | e.getWidth().intValue(), 0, 0, 1)); |
| | | (int) e.getWidth(), 0, 0, 1)); |
| | | } |
| | | Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "未获取出片数据,结束出片任务"); |
| | | log.info("获取出片任务数据{}条,执行保存", bigStorageCageOutTaskList.size()); |