hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -232,11 +232,13 @@ /** * 原片仓储任务状态 * 新建0 * 已完成1 * 新建 0 * 运行中 1 * 已完成2 */ public static final Integer ENGINEERING_NEW = 0; public static final Integer ENGINEERING_RUNNING = 1; public static final Integer ENGINEERING_SUCCESS = 2; /** * 原片仓储任务类型 hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -177,9 +177,9 @@ .createTime(new Date()).build(); rawGlassStorageTaskService.save(task); List<ReadWriteEntity> list = new ArrayList<>(); list.add(generateReadWriteEntity("PLC.CC.taskWord", 1)); list.add(generateReadWriteEntity("PLC.CC.startSlot", startSlot)); list.add(generateReadWriteEntity("PLC.CC.endSlot", endSlot)); list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot)); list.add(generateReadWriteEntity("CC.CC.endSlot", endSlot)); miloService.writeToOpcWord(list); return Boolean.TRUE; } hangzhoumesParent/common/servicebase/src/main/resources/mapper/LoadGlassDeviceTaskMapper.xml
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -68,6 +68,9 @@ @ApiModelProperty(value = "厚度", position = 11) private double thickness; @ApiModelProperty(value = "旋转角度", position = 12) private Integer angle; /** * x坐标 */ hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -231,6 +231,7 @@ cageDetails.setState(Const.GLASS_STATE_NEW); cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); cageDetails.setSequence(bigStorageDTO.getSlotSequence()); cageDetails.setAngle((int) info.getAngle()); cageDetails.setGap(glassGap); cageDetails.setFilmsId(info.getFilmsid()); cageDetails.setId(null); @@ -255,6 +256,7 @@ cageDetails.setDeviceId(0); cageDetails.setSequence(0); cageDetails.setGap(glassGap); cageDetails.setAngle((int) info.getAngle()); cageDetails.setFilmsId(info.getFilmsid()); cageDetails.setId(null); bigStorageCageDetailsService.save(cageDetails); @@ -690,9 +692,12 @@ */ private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfoByVirtualSlot(List<T> list, String tableName, int targetSlot, int state, int taskType) { //任务数据:获取车子存放玻璃最大数量,玻璃间隔 List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId( list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence()); List<T> outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList()); List<T> outGlassList = list; if (!THROUGH_SLOT.equals(list.get(0).getSlot())) { List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId( list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence()); outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList()); } Assert.isFalse(CollectionUtil.isEmpty(outGlassList), "未获取出片数据,结束出片任务"); log.info("获取出片任务数据{}条,执行保存", outGlassList.size()); List<BigStorageCageTask> bigStorageCageTaskList = outGlassList.stream() hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -71,22 +71,22 @@ @Scheduled(fixedDelay = 1000) public void rawStorageTask() throws Exception { ReadWriteEntity requestWord = miloService.readFromOpcUa("PLC.CC.request"); ReadWriteEntity confireWord = miloService.readFromOpcUa("PLC.CC.confirmation"); ReadWriteEntity reportWord = miloService.readFromOpcUa("PLC.CC.reportWord"); ReadWriteEntity taskWord = miloService.readFromOpcUa("PLC.CC.taskWord"); ReadWriteEntity requestWord = miloService.readFromOpcUa("CC.CC.request"); ReadWriteEntity confireWord = miloService.readFromOpcUa("CC.CC.confirmation"); ReadWriteEntity reportWord = miloService.readFromOpcUa("CC.CC.reportWord"); ReadWriteEntity taskWord = miloService.readFromOpcUa("CC.CC.taskWord"); String requestValue = requestWord.getValue() + ""; if ("0".equals(requestValue)) { if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) { List<ReadWriteEntity> list = new ArrayList<>(); list.add(generateReadWriteEntity("PLC.CC.confirmation", 0)); list.add(generateReadWriteEntity("CC.CC.confirmation", 0)); miloService.writeToOpcWord(list); } if ("1".equals(taskWord.getValue() + "")) { List<ReadWriteEntity> list = new ArrayList<>(); list.add(generateReadWriteEntity("PLC.CC.taskWord", 0)); list.add(generateReadWriteEntity("PLC.CC.startSlot", 0)); list.add(generateReadWriteEntity("PLC.CC.endSlot", 0)); list.add(generateReadWriteEntity("CC.CC.taskWord", 0)); list.add(generateReadWriteEntity("CC.CC.startSlot", 0)); list.add(generateReadWriteEntity("CC.CC.endSlot", 0)); miloService.writeToOpcWord(list); } return; @@ -122,7 +122,7 @@ @Scheduled(fixedDelay = 1000) public void rawStorageInCar() throws Exception { ReadWriteEntity entity = miloService.readFromOpcUa("PLC.CC.inCar"); ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.inCar"); String value = entity.getValue() + ""; if (!"1".equals(value)) { log.info("大车上没有架子"); @@ -142,7 +142,7 @@ @Scheduled(fixedDelay = 1000) public void rawStorageFinish() throws Exception { ReadWriteEntity entity = miloService.readFromOpcUa("PLC.CC.reportWord"); ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.reportWord"); String value = entity.getValue() + ""; if ("0".equals(value)) { log.info("当前任务未汇报,结束本次任务"); @@ -207,7 +207,7 @@ } List<ReadWriteEntity> list = new ArrayList<>(); list.add(generateReadWriteEntity("PLC.CC.confirmation", 1)); list.add(generateReadWriteEntity("CC.CC.confirmation", 1)); miloService.writeToOpcWord(list); } @@ -266,10 +266,10 @@ rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT); // List<ReadWriteEntity> list = new ArrayList<>(); // list.add(generateReadWriteEntity("PLC.CC.taskWord", 1)); // list.add(generateReadWriteEntity("PLC.CC.taskSending", 1)); // list.add(generateReadWriteEntity("PLC.CC.startSlot", startSlot)); // list.add(generateReadWriteEntity("PLC.CC.endSlot", lefting)); // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); // list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot)); // list.add(generateReadWriteEntity("CC.CC.endSlot", lefting)); // miloService.writeToOpcWord(list); //修改出片任务状态 @@ -300,10 +300,10 @@ rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN); // List<ReadWriteEntity> list = new ArrayList<>(); // list.add(generateReadWriteEntity("PLC.CC.taskWord", 1)); // list.add(generateReadWriteEntity("PLC.CC.taskSending", 1)); // list.add(generateReadWriteEntity("PLC.CC.startSlot", details.getSlot())); // list.add(generateReadWriteEntity("PLC.CC.endSlot", details.getShelf())); // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); // list.add(generateReadWriteEntity("CC.CC.startSlot", details.getSlot())); // list.add(generateReadWriteEntity("CC.CC.endSlot", details.getShelf())); // miloService.writeToOpcWord(list); //生成工位任务,将吊装位的玻璃状态改位进笼中 //修改吊装位的原片状态为103 出片中 @@ -390,11 +390,15 @@ log.info("2号上片位玻璃尺寸不一致,1号上片位生成调度任务"); //按照尺寸及数量获取数量最接近的格子信息 RawGlassStorageDetails rawDetails = getRawGlassStorageDetailsBySize(usageVOS.get(0), usageVOS.size()); if(null == rawDetails){ log.info("仓库内无需要上架的玻璃"); return Boolean.FALSE; } rawGlassStorageDetailsService.generateTask(rawDetails.getSlot(), loadStation.get(0), rawDetails.getShelf(), rawDetails.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); //结束调度任务 修改工位状态(起始位)状态为103 RAW_GLASS_STATE_RUNNING 任务完成后将状态改为101 目标位新增一条数据,架子号为(起始位) rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() .eq(RawGlassStorageDetails::getSlot, rawDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); return Boolean.TRUE; } } else { @@ -404,7 +408,7 @@ rawGlassStorageDetailsService.generateTask(rawDetails.getSlot(), loadStation.get(0), rawDetails.getShelf(), rawDetails.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() .eq(RawGlassStorageDetails::getSlot, rawDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); return Boolean.TRUE; } } else { hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -10,6 +10,8 @@ import com.mes.opctask.entity.LoadGlassDeviceTaskHistory; import com.mes.opctask.service.LoadGlassDeviceTaskHistoryService; import com.mes.opctask.service.LoadGlassDeviceTaskService; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.service.OptimizeProjectService; import com.mes.rawglassdetails.entity.RawGlassStorageDetails; import com.mes.rawglassdetails.service.RawGlassStorageDetailsService; import com.mes.uppattenusage.entity.UpPattenUsage; @@ -48,6 +50,8 @@ private LoadGlassDeviceTaskHistoryService loadGlassDeviceTaskHistoryService; @Resource private UpPattenUsageMapper upPattenUsageMapper; @Resource private OptimizeProjectService optimizeProjectService; private static final List<Integer> LOAD_STATION_01 = Arrays.asList(101, 102); private static final List<Integer> LOAD_STATION_02 = Arrays.asList(103, 104); @@ -58,7 +62,6 @@ private static final String LOAD_GLASS_DEVICE_ONE_TASK = "load_glass_device_one_task"; private static final String LOAD_GLASS_DEVICE_TWO_TASK = "load_glass_device_two_task"; //设备id 上片位信息 任务表不一致 历史任务表公用一张 新增任务/任务结束,后会在历史表中新增一条记录并在结束后更新任务 一个任务即可 //定时任务扫描上片位有没有原片 @@ -84,6 +87,25 @@ @Scheduled(fixedDelay = 300) public void opcLoadGlassTwoFinish() { opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE); } /** * 定时任务扫码已完成上片的工程,将工程状态改为已完成,同步pp表的工程表,状态改为300 */ @Scheduled(fixedDelay = 3000) public void updateEngineerState() { log.info("修改已完成工程状态任务开始执行"); List<Engineering> engineerings = engineeringMapper.selectList(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING)); for (Engineering engineering : engineerings) { Integer count = upPattenUsageMapper.selectCount(new LambdaQueryWrapper<UpPattenUsage>() .eq(UpPattenUsage::getEngineeringId, engineering.getEngineerId()).ne(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS)); if (count == 0) { engineeringMapper.update(null, new LambdaUpdateWrapper<Engineering>().set(Engineering::getState, Const.ENGINEERING_SUCCESS) .eq(Engineering::getEngineerId, engineering.getEngineerId())); optimizeProjectService.update(null, new LambdaUpdateWrapper<OptimizeProject>().set(OptimizeProject::getState, 300) .eq(OptimizeProject::getProjectNo, engineering.getEngineerId())); } } } private void opcLoadGlassChild(String tableName, Integer deviceId) { @@ -118,7 +140,7 @@ List<Integer> loadStation = LOAD_GLASS_DEVICE_ONE_TASK.equals(tableName) ? LOAD_STATION_01 : LOAD_STATION_02; List<RawGlassStorageDetails> loadStationList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>() .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1") .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL) .eq(RawGlassStorageDetails::getDeviceId, deviceId)); if (CollectionUtils.isEmpty(loadStationList)) { log.info("当前上片线路两个上片位都没有原片信息,结束本次上片任务,等待仓储调度任务");