Merge branch 'master' of http://bore.pub:10439/r/HangZhouMes
# Conflicts:
# hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
| | |
| | | /** |
| | | * 上片机线路 |
| | | */ |
| | | private String stationCell; |
| | | private int stationCell; |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: dev |
| | | active: cz |
| | | application: |
| | | name: cacheGlass |
| | | liquibase: |
| | |
| | | import com.mes.engineering.mapper.EngineeringMapper; |
| | | import com.mes.rawglassdetails.entity.RawGlassStorageDetails; |
| | | import com.mes.rawglassdetails.service.RawGlassStorageDetailsService; |
| | | import com.mes.rawglassstation.service.RawGlassStorageStationService; |
| | | import com.mes.rawglasstask.entity.RawGlassStorageTask; |
| | | import com.mes.rawglasstask.service.RawGlassStorageTaskService; |
| | | import com.mes.uppattenusage.entity.vo.UpPattenUsageVO; |
| | |
| | | public class RawGlassTask { |
| | | |
| | | @Autowired |
| | | private RawGlassStorageStationService rawGlassStorageStationService; |
| | | @Autowired |
| | | private RawGlassStorageDetailsService rawGlassStorageDetailsService; |
| | | |
| | | @Autowired |
| | |
| | | private static final List<String> LOAD_STATION_01 = Arrays.asList("101", "102"); |
| | | private static final List<String> LOAD_STATION_02 = Arrays.asList("103", "104"); |
| | | private static final List<Integer> LOAD_STATION_MAX = Arrays.asList(102, 104); |
| | | private static final Integer LEFTING_01 = 98; |
| | | private static final Integer LEFTING_02 = 99; |
| | | private static final Integer LOAD_GLASS_01_01 = 101; |
| | | private static final Integer LOAD_GLASS_01_02 = 102; |
| | | private static final Integer LOAD_GLASS_02_01 = 103; |
| | | private static final Integer LOAD_GLASS_02_02 = 104; |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void rawStorageTask() throws Exception { |
| | | ReadWriteEntity requestWord = miloService.readFromOpcUa("storage-device.dev.Task Request"); |
| | | ReadWriteEntity confireWord = miloService.readFromOpcUa("storage-device.dev.Task Confirmation Word"); |
| | | ReadWriteEntity taskWord = miloService.readFromOpcUa("storage-device.dev.Task sending word"); |
| | | ReadWriteEntity requestWord = miloService.readFromOpcUa("A01-CC.dev.request"); |
| | | ReadWriteEntity confireWord = miloService.readFromOpcUa("A01-CC.dev.confirmationWord"); |
| | | ReadWriteEntity reportWord = miloService.readFromOpcUa("A01-CC.dev.reportWord"); |
| | | ReadWriteEntity taskWord = miloService.readFromOpcUa("A01-CC.dev.taskWord"); |
| | | String requestValue = requestWord.getValue() + ""; |
| | | if ("0".equals(requestValue)) { |
| | | if ("1".equals(confireWord.getValue() + "")) { |
| | | if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) { |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task Confirmation Word", 0)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.confirmationWord", 0)); |
| | | miloService.writeToOpcWord(list); |
| | | } |
| | | if ("1".equals(taskWord.getValue() + "")) { |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 0)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 0)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", 0)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", 0)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 0)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 0)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.startSlot", 0)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.endSlot", 0)); |
| | | miloService.writeToOpcWord(list); |
| | | } |
| | | return; |
| | |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void rawStorageInCar() throws Exception { |
| | | ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Loading rack"); |
| | | ReadWriteEntity entity = miloService.readFromOpcUa("A01-CC.dev.inCar"); |
| | | String value = entity.getValue() + ""; |
| | | if (!"1".equals(value)) { |
| | | log.info("大车忙碌"); |
| | | log.info("大车上没有架子"); |
| | | return; |
| | | } |
| | | //查询任务 |
| | | RawGlassStorageDetails one = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); |
| | | if (one == null) { |
| | | log.info("没有正在执行的任务"); |
| | | return; |
| | | } |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getId, one.getId()) |
| | |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void rawStorageFinish() throws Exception { |
| | | ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Task report letter"); |
| | | ReadWriteEntity entity = miloService.readFromOpcUa("A01-CC.dev.reportWord"); |
| | | String value = entity.getValue() + ""; |
| | | if ("0".equals(value)) { |
| | | log.info("当前任务未汇报,结束本次任务"); |
| | |
| | | RawGlassStorageDetails targetDetails = generateDetails(details, task.getEndSlot()); |
| | | Integer taskType = task.getTaskType(); |
| | | if ("1".equals(value)) { |
| | | log.info("将详情表的状态改为已出库"); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR)); |
| | | log.info("任务状态已更改为:已完成"); |
| | | rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>() |
| | | .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW) |
| | | .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS)); |
| | | switch (taskType) { |
| | | case 1: |
| | | log.info("进片任务"); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR)); |
| | | //todo:生成入库详情表:其他信息不变, |
| | | rawGlassStorageDetailsService.save(targetDetails); |
| | | log.info("1、入库,3、调度任务。{}", taskType); |
| | | if (targetDetails.getRemainQuantity() > 0) { |
| | | rawGlassStorageDetailsService.save(targetDetails); |
| | | } |
| | | break; |
| | | case 2: |
| | | log.info("出片任务"); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()) |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR)); |
| | | case 4: |
| | | log.info("2、出片,4、入库请求。{}", taskType); |
| | | targetDetails = new RawGlassStorageDetails(); |
| | | targetDetails.setSlot(task.getEndSlot()); |
| | | targetDetails.setShelf(task.getStartSlot()); |
| | | targetDetails.setState(Const.RAW_GLASS_STATE_IN); |
| | | rawGlassStorageDetailsService.save(targetDetails); |
| | | break; |
| | | case 3: |
| | | log.info("调度任务"); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR)); |
| | | rawGlassStorageDetailsService.save(targetDetails); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>() |
| | | .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW) |
| | | .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS)); |
| | | } else { |
| | | if (taskType.equals(Const.RAW_GLASS_TASK_TYPE_IN_REQUEST)) { |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()) |
| | | .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR)); |
| | | } else { |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()) |
| | | .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR)); |
| | | } |
| | | rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>() |
| | | .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW) |
| | | .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE)); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR)); |
| | | } |
| | | |
| | | } |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task Confirmation Word", 1)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.confirmationWord", 1)); |
| | | miloService.writeToOpcWord(list); |
| | | } |
| | | |
| | |
| | | */ |
| | | public boolean outboundTask() throws Exception { |
| | | List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT)); |
| | | // .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1 and device_id = 4")); |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT) |
| | | .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1")); |
| | | if (CollectionUtil.isEmpty(rawGlassList)) { |
| | | log.info("系统没有需要出库的原片信息"); |
| | | return Boolean.FALSE; |
| | |
| | | //获取工位上是否有架子, |
| | | List<RawGlassStorageDetails> emptyLeftingList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL) |
| | | .in(RawGlassStorageDetails::getSlot, 98, 99)); |
| | | if (CollectionUtil.isNotEmpty(emptyLeftingList) && emptyLeftingList.size() >= 2) { |
| | | .in(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1 and device_id = 4")); |
| | | if (CollectionUtil.isNotEmpty(emptyLeftingList) && emptyLeftingList.size() > 1) { |
| | | log.info("吊装位当前都有架子,结束出片任务"); |
| | | return Boolean.FALSE; |
| | | } |
| | | //获取需要落架的 |
| | | List<Integer> leftingList = emptyLeftingList.stream().map(RawGlassStorageDetails::getSlot).collect(Collectors.toList()); |
| | | int lefting = CollectionUtil.isEmpty(leftingList) ? LEFTING_01 : leftingList.get(0).equals(LEFTING_01) ? LEFTING_02 : LEFTING_01; |
| | | Integer startSlot = rawGlassList.get(0).getSlot(); |
| | | //生成出库任务 |
| | | rawGlassStorageDetailsService.generateTask(rawGlassList.get(0).getSlot(), 98, rawGlassList.get(0).getSlot(), |
| | | rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT); |
| | | rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT); |
| | | |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", rawGlassList.get(0).getSlot())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", 98)); |
| | | miloService.writeToOpcWord(list); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", startSlot)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", lefting)); |
| | | // miloService.writeToOpcWord(list); |
| | | |
| | | //修改出片任务状态 |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | |
| | | log.info("吊装位被禁用/架子所在工位被禁用/无原片信息"); |
| | | return Boolean.FALSE; |
| | | } |
| | | //获取吊装位架子信息 |
| | | // List<Integer> shelfList = rawGlassList.stream().map(RawGlassStorageDetails::getShelf).collect(Collectors.toList()); |
| | | // List<RawGlassStorageStation> stationList = rawGlassStorageStationService.list(new LambdaQueryWrapper<RawGlassStorageStation>().notInSql(RawGlassStorageStation::getSlot, "select slot from raw_glass_storage_details where " + |
| | | // "state in('100','102','103')") |
| | | // .eq(RawGlassStorageStation::getEnableState, Const.SLOT_ON) |
| | | // .in(RawGlassStorageStation::getDeviceId, Const.RAW_GLASS_DEVICE)); |
| | | // if (CollectionUtil.isEmpty(stationList)) { |
| | | // log.info("没有空的工位"); |
| | | // return Boolean.FALSE; |
| | | // } |
| | | //生成进笼任务 |
| | | RawGlassStorageDetails details = rawGlassList.get(0); |
| | | rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(), |
| | | details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN); |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", details.getSlot())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", details.getShelf())); |
| | | miloService.writeToOpcWord(list); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", details.getSlot())); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", details.getShelf())); |
| | | // miloService.writeToOpcWord(list); |
| | | //生成工位任务,将吊装位的玻璃状态改位进笼中 |
| | | // 修改吊装位的原片状态为103 出片中 |
| | | //修改吊装位的原片状态为103 出片中 |
| | | //修改出片任务状态 |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot()) |
| | |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | private boolean rawGlassDispatchByEngineering(String stationCell, String enginneerId) throws Exception { |
| | | /** |
| | | * @param stationCell 设备信息 5 、 6 |
| | | * @param enginneerId 共亨号 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private boolean rawGlassDispatchByEngineering(int stationCell, String enginneerId) throws Exception { |
| | | //当前尺寸需要上片的数量 |
| | | List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(enginneerId); |
| | | if (CollectionUtils.isEmpty(pattenUsageList)) { |
| | | log.info("正在执行的工程原片无可上片的原片信息"); |
| | | return Boolean.FALSE; |
| | | } |
| | | //获取当前上片位1号架子信息 |
| | | int endSlot = stationCell == LOAD_GLASS_01_01 ? LOAD_GLASS_01_01 : LOAD_GLASS_02_01; |
| | | int endSlot02 = stationCell == LOAD_GLASS_01_02 ? LOAD_GLASS_01_01 : LOAD_GLASS_02_02; |
| | | Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream() |
| | | .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber)); |
| | | //1、查询2个上片的原片详情 |
| | |
| | | .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth()) |
| | | .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight()) |
| | | .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness()) |
| | | .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1") |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | // .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size()) |
| | | .orderByAsc(RawGlassStorageDetails::getRemainQuantity) |
| | | .last("limit 1") |
| | | ); |
| | | rawGlassStorageDetailsService.generateTask(details.getSlot(), rawGlassDetailsList.get(0).getSlot(), details.getSlot(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | rawGlassStorageDetailsService.generateTask(details.getSlot(), endSlot, details.getSlot(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", details.getSlot())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", rawGlassDetailsList.get(0).getSlot())); |
| | | miloService.writeToOpcWord(list); |
| | | //结束调度任务 修改工位状态(起始位)状态为103 RAW_GLASS_STATE_RUNNING 任务完成后将状态改为101 目标位新增一条数据,架子号为(起始位) |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getShelf, details.getShelf()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .eq(RawGlassStorageDetails::getSlot, details.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | return Boolean.TRUE; |
| | | } |
| | | if (rawGlassDetailsList.size() == 2) { |
| | | RawGlassStorageDetails glassStorageDetails = rawGlassDetailsList.get(0); |
| | | if (usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId())) { |
| | | if (glassStorageDetails.getRemainQuantity() == 0) { |
| | | //将架子放回原工位上 |
| | | rawGlassStorageDetailsService.generateTask(glassStorageDetails.getSlot(), glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), glassStorageDetails.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", glassStorageDetails.getSlot())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getShelf())); |
| | | miloService.writeToOpcWord(list); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | return Boolean.TRUE; |
| | | } |
| | | } |
| | | log.info("上片位都有架子,结束本条线{}的调度任务", stationCell); |
| | | return Boolean.FALSE; |
| | | } |
| | | RawGlassStorageDetails glassStorageDetails = rawGlassDetailsList.get(0); |
| | | if (LOAD_STATION_MAX.contains(glassStorageDetails.getSlot())) { |
| | | log.info("上片位2号有架子,结束本条线{}的调度任务", stationCell); |
| | | if (rawGlassDetailsList.size() == 2) { |
| | | if (!((usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId()))) |
| | | || ((usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId())) |
| | | && glassStorageDetails.getRemainQuantity() == 0)) { |
| | | //将架子放回原工位上 |
| | | rawGlassStorageDetailsService.generateTask(endSlot, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), 0, Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf())); |
| | | // miloService.writeToOpcWord(list); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); |
| | | return Boolean.TRUE; |
| | | } |
| | | return Boolean.FALSE; |
| | | } |
| | | //比较当前1号架子上的玻璃剩余数量是否为0或者已用完 |
| | | if (usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId())) { |
| | | RawGlassStorageDetails details = null; |
| | | if (upPattenUsage01VOS.size() > glassStorageDetails.getRemainQuantity()) { |
| | | //2号位上片:继续当前尺寸的原片 |
| | | details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId()) |
| | | .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth()) |
| | | .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight()) |
| | | .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness()) |
| | | .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size()) |
| | | .orderByAsc(RawGlassStorageDetails::getRemainQuantity) |
| | | .last("limit 1")); |
| | | } else { |
| | | //2号位上片:获取第二种尺寸的原片 |
| | | List<UpPattenUsageVO> upPattenUsage02VOS = upListMap.get("2"); |
| | | if (CollectionUtils.isEmpty(upPattenUsage01VOS)) { |
| | | return Boolean.FALSE; |
| | | } |
| | | usageVO = upPattenUsage02VOS.get(0); |
| | | details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId()) |
| | | .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth()) |
| | | .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight()) |
| | | .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness()) |
| | | .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size()) |
| | | .orderByAsc(RawGlassStorageDetails::getRemainQuantity) |
| | | .last("limit 1")); |
| | | //todo:1条线且当条线为2号上片为 |
| | | if (LOAD_STATION_MAX.contains(glassStorageDetails.getSlot())) { |
| | | log.info("上片位2号有架子,结束本条线{}的调度任务", stationCell); |
| | | if (!((usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId()))) |
| | | || ((usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId())) |
| | | && glassStorageDetails.getRemainQuantity() == 0)) { |
| | | //将架子放回原工位上 |
| | | rawGlassStorageDetailsService.generateTask(endSlot02, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), 0, Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot02)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf())); |
| | | // miloService.writeToOpcWord(list); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); |
| | | return Boolean.TRUE; |
| | | } |
| | | //将工位的架子传送到上片位 |
| | | rawGlassStorageDetailsService.generateTask(details.getShelf(), glassStorageDetails.getSlot(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", glassStorageDetails.getShelf())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getSlot())); |
| | | miloService.writeToOpcWord(list); |
| | | |
| | | return Boolean.TRUE; |
| | | return Boolean.FALSE; |
| | | } else { |
| | | //将架子放回原工位上 |
| | | rawGlassStorageDetailsService.generateTask(0, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), glassStorageDetails.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, glassStorageDetails.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | //比较当前1号架子上的玻璃剩余数量是否为0或者已用完 |
| | | if (usageVO.getWidth() == glassStorageDetails.getPatternWidth() && usageVO.getHeight() == glassStorageDetails.getPatternHeight() && |
| | | usageVO.getThickness() == glassStorageDetails.getPatternThickness() && usageVO.getFilmsId().equals(glassStorageDetails.getFilmsId())) { |
| | | RawGlassStorageDetails details = null; |
| | | if (upPattenUsage01VOS.size() > glassStorageDetails.getRemainQuantity()) { |
| | | //2号位上片:继续当前尺寸的原片 |
| | | details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId()) |
| | | .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth()) |
| | | .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight()) |
| | | .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness()) |
| | | .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size()) |
| | | .orderByAsc(RawGlassStorageDetails::getRemainQuantity) |
| | | .last("limit 1")); |
| | | } else { |
| | | //2号位上片:获取第二种尺寸的原片 |
| | | List<UpPattenUsageVO> upPattenUsage02VOS = upListMap.get("2"); |
| | | if (CollectionUtils.isEmpty(upPattenUsage01VOS)) { |
| | | return Boolean.FALSE; |
| | | } |
| | | usageVO = upPattenUsage02VOS.get(0); |
| | | details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getFilmsId, usageVO.getFilmsId()) |
| | | .eq(RawGlassStorageDetails::getPatternWidth, usageVO.getWidth()) |
| | | .eq(RawGlassStorageDetails::getPatternHeight, usageVO.getHeight()) |
| | | .eq(RawGlassStorageDetails::getPatternThickness, usageVO.getThickness()) |
| | | .gt(RawGlassStorageDetails::getRemainQuantity, upPattenUsage01VOS.size()) |
| | | .orderByAsc(RawGlassStorageDetails::getRemainQuantity) |
| | | .last("limit 1")); |
| | | } |
| | | //将工位的架子传送到上片位 |
| | | rawGlassStorageDetailsService.generateTask(details.getSlot(), endSlot02, details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, details.getSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task sending word", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Task distribution", 1)); |
| | | list.add(generateReadWriteEntity("storage-device.dev.Starting material rack number", glassStorageDetails.getShelf())); |
| | | list.add(generateReadWriteEntity("storage-device.dev.End shelf number", glassStorageDetails.getSlot())); |
| | | miloService.writeToOpcWord(list); |
| | | return Boolean.TRUE; |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", glassStorageDetails.getShelf())); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", endSlot02)); |
| | | // miloService.writeToOpcWord(list); |
| | | |
| | | return Boolean.TRUE; |
| | | } else { |
| | | //将架子放回原工位上 |
| | | rawGlassStorageDetailsService.generateTask(endSlot, glassStorageDetails.getShelf(), glassStorageDetails.getShelf(), glassStorageDetails.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); |
| | | rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .eq(RawGlassStorageDetails::getSlot, endSlot).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING)); |
| | | |
| | | // List<ReadWriteEntity> list = new ArrayList<>(); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.startSlot", endSlot)); |
| | | // list.add(generateReadWriteEntity("A01-CC.dev.endSlot", glassStorageDetails.getShelf())); |
| | | // miloService.writeToOpcWord(list); |
| | | return Boolean.TRUE; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | return targetDetails; |
| | | } |
| | | |
| | | |
| | | private ReadWriteEntity generateReadWriteEntity(String identifier, int value) { |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(identifier); |
| | | readWriteEntity.setValue(value); |
| | | return readWriteEntity; |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | String outWarehousingRequest(int leftingStation); |
| | | |
| | | boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType); |
| | | boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) throws Exception; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.kangaroohy.milo.model.ReadWriteEntity; |
| | | import com.kangaroohy.milo.service.MiloService; |
| | | import com.mes.common.config.Const; |
| | | import com.mes.rawglassdetails.entity.RawGlassStorageDetails; |
| | | import com.mes.rawglassdetails.entity.request.RawGlassRequest; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | RawGlassStorageTaskService rawGlassStorageTaskService; |
| | | |
| | | @Autowired(required = false) |
| | | MiloService miloService; |
| | | |
| | | @Override |
| | | public boolean deleteRawGlassStorageDetails(String device_id) { |
| | |
| | | } |
| | | Integer shelf = shelfList.get(0); |
| | | log.info("生成任务"); |
| | | generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST); |
| | | try { |
| | | generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST); |
| | | } catch (Exception e) { |
| | | return "fail"; |
| | | } |
| | | //生成一条详情数据 仅记录架子状态 |
| | | RawGlassStorageDetails details = new RawGlassStorageDetails(); |
| | | details.setSlot(shelf); |
| | |
| | | if (null == glassStorageDetails) { |
| | | log.info("当前吊装位没有架子"); |
| | | } |
| | | //todo:原片信息存入详情表 |
| | | //原片信息存入详情表 |
| | | BeanUtils.copyProperties(request, glassStorageDetails); |
| | | log.info("覆盖后得到的工位详情信息为:{}", glassStorageDetails); |
| | | updateById(glassStorageDetails); |
| | |
| | | .eq(RawGlassStorageDetails::getSlot, details.getSlot()) |
| | | .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN) |
| | | .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); |
| | | generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT_REQUEST); |
| | | try { |
| | | generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT_REQUEST); |
| | | } catch (Exception e) { |
| | | return "fail"; |
| | | } |
| | | return "success"; |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) { |
| | | public boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) throws Exception { |
| | | RawGlassStorageTask task = RawGlassStorageTask.builder() |
| | | .startSlot(startSlot) |
| | | .endSlot(endSlot) |
| | |
| | | .taskState(Const.RAW_GLASS_TASK_NEW) |
| | | .shelf(shelf) |
| | | .createTime(new Date()).build(); |
| | | return rawGlassStorageTaskService.save(task); |
| | | rawGlassStorageTaskService.save(task); |
| | | |
| | | |
| | | List<ReadWriteEntity> list = new ArrayList<>(); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.startSlot", startSlot)); |
| | | list.add(generateReadWriteEntity("A01-CC.dev.endSlot", endSlot)); |
| | | miloService.writeToOpcWord(list); |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | private ReadWriteEntity generateReadWriteEntity(String identifier, int value) { |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(identifier); |
| | | readWriteEntity.setValue(value); |
| | | return readWriteEntity; |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 启用标记 |
| | | */ |
| | | private String enableState; |
| | | private Integer enableState; |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | private Date updateTime; |
| | | |
| | | |
| | | } |
| | |
| | | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | | kangaroohy: |
| | | milo: |
| | | enabled: true |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | |
| | | enabled: false |
| | | mybatis-plus: |
| | | mapper-locations: classpath*:mapper/*.xml |
| | | # configuration: |
| | | # log-impl: org.apache.ibatis.logging.stdout.StdOutImplkangaroohy: |
| | | configuration: |
| | | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | | kangaroohy: |
| | | milo: |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | | endpoint: opc.tcp://zidonghua:49320 |
| | | security-policy: basic256sha256 |
| | | username: zsh |
| | | password: 1qaz2wsx3edc4rfv |
| | | enabled: false |
| | |
| | | -- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_details' and table_schema = 'hangzhoumes'; |
| | | CREATE TABLE raw_glass_storage_details |
| | | ( |
| | | id bigint NOT NULL AUTO_INCREMENT, |
| | | device_id int NULL DEFAULT NULL COMMENT '设备id', |
| | | slot int NULL DEFAULT NULL COMMENT '格子id', |
| | | pattern_width double(8, 2) NULL DEFAULT NULL COMMENT '原片宽', |
| | | pattern_height double(8, 2) NULL DEFAULT NULL COMMENT '原片高', |
| | | pattern_thickness double(8, 2) NULL DEFAULT NULL COMMENT '原片厚度', |
| | | films_id varchar(64) NULL DEFAULT NULL COMMENT '膜系', |
| | | create_time datetime NOT NULL COMMENT '创建时间', |
| | | remain_quantity int NULL DEFAULT NULL COMMENT '剩余数量', |
| | | state int NULL DEFAULT NULL COMMENT '状态', |
| | | id bigint NOT NULL AUTO_INCREMENT, |
| | | device_id int DEFAULT NULL COMMENT '设备id', |
| | | slot int DEFAULT NULL COMMENT '格子id', |
| | | pattern_width double(8, 2) DEFAULT NULL COMMENT '原片宽', |
| | | pattern_height double(8, 2) DEFAULT NULL COMMENT '原片高', |
| | | pattern_thickness double(8, 2) DEFAULT NULL COMMENT '原片厚度', |
| | | films_id varchar(64) DEFAULT NULL COMMENT '膜系', |
| | | create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | remain_quantity int DEFAULT NULL COMMENT '剩余数量', |
| | | state int DEFAULT NULL COMMENT '状态', |
| | | shelf int DEFAULT NULL COMMENT '架子号', |
| | | PRIMARY KEY (id) USING BTREE |
| | | ); |
| | | -- rollback DROP TABLE raw_glass_storage_details; |
| | |
| | | -- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_station' and table_schema = 'hangzhoumes'; |
| | | CREATE TABLE raw_glass_storage_station |
| | | ( |
| | | id bigint NOT NULL AUTO_INCREMENT, |
| | | device_id int NULL DEFAULT NULL COMMENT '设备id', |
| | | slot int NULL DEFAULT NULL COMMENT '栅格号', |
| | | enable_state varchar(255) NULL DEFAULT NULL COMMENT '启用标记', |
| | | PRIMARY KEY (id) |
| | | id bigint NOT NULL, |
| | | device_id int DEFAULT NULL COMMENT '设备id', |
| | | slot int DEFAULT NULL COMMENT '栅格号', |
| | | enable_state int DEFAULT NULL COMMENT '启用标记', |
| | | shelf int DEFAULT NULL COMMENT '架子号' |
| | | ); |
| | | -- rollback DROP TABLE raw_glass_storage_station; |
| | | |
| | |
| | | -- precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'raw_glass_storage_task' and table_schema = 'hangzhoumes'; |
| | | CREATE TABLE raw_glass_storage_task |
| | | ( |
| | | id bigint NOT NULL AUTO_INCREMENT, |
| | | start_slot int NULL DEFAULT NULL COMMENT '起始格子', |
| | | end_slot int NULL DEFAULT NULL COMMENT '目标格子', |
| | | pattern_quantity int NULL DEFAULT NULL COMMENT '原片数量', |
| | | task_type int NULL DEFAULT NULL COMMENT '任务类型', |
| | | enable_state int NULL DEFAULT NULL COMMENT '任务状态', |
| | | create_time datetime NULL DEFAULT NULL COMMENT '创建时间', |
| | | id bigint NOT NULL AUTO_INCREMENT, |
| | | start_slot int DEFAULT NULL COMMENT '起始格子', |
| | | end_slot int DEFAULT NULL COMMENT '目标格子', |
| | | pattern_quantity int DEFAULT NULL COMMENT '原片数量', |
| | | task_type int DEFAULT NULL COMMENT '任务类型', |
| | | task_state int DEFAULT NULL COMMENT '任务状态', |
| | | shelf int DEFAULT NULL COMMENT '架子号', |
| | | create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
| | | update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
| | | PRIMARY KEY (id) USING BTREE |
| | | ); |
| | | -- rollback DROP TABLE raw_glass_storage_task; |
| | |
| | | -- preconditions onFail:CONTINUE onError:CONTINUE |
| | | -- precondition-sql-check expectedResult:0 SELECT count(0) FROM information_schema.columns WHERE table_schema = 'hangzhoumes' AND table_name = 'engineering' AND column_name = 'station_cell'; |
| | | ALTER TABLE engineering |
| | | ADD COLUMN station_cell varchar(20); |
| | | ADD COLUMN station_cell int; |
| | | |
| | | -- changeset zsh:20241017001 |
| | | -- preconditions onFail:CONTINUE onError:CONTINUE |
| | | -- precondition-sql-check expectedResult:0 select count(1) from raw_glass_storage_station; |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (1, 1, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (2, 1, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (3, 1, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (4, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (5, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (6, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (7, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (8, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (9, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (10, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (11, 2, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (12, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (13, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (14, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (15, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (16, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (17, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (18, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (19, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (20, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (21, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (22, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (23, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (24, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (25, 3, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (98, 4, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (99, 4, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (101, 5, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (102, 5, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (103, 6, '1'); |
| | | INSERT INTO raw_glass_storage_station (slot, device_id, enable_state) |
| | | VALUES (104, 6, '1'); |
| | | INSERT INTO raw_glass_storage_station (id, device_id, slot, enable_state, shelf) |
| | | VALUES (1, 1, 1, 1, 1), |
| | | (2, 1, 2, 1, 2), |
| | | (3, 1, 3, 1, 3), |
| | | (4, 2, 4, 1, 4), |
| | | (5, 2, 5, 1, 5), |
| | | (6, 2, 6, 1, 6), |
| | | (7, 2, 7, 1, 7), |
| | | (8, 2, 8, 1, 8), |
| | | (9, 2, 9, 1, 9), |
| | | (10, 2, 10, 1, 10), |
| | | (11, 2, 11, 1, 11), |
| | | (12, 3, 12, 1, 12), |
| | | (13, 3, 13, 1, 13), |
| | | (14, 3, 14, 1, 14), |
| | | (15, 3, 15, 1, 15), |
| | | (16, 3, 16, 1, 16), |
| | | (17, 3, 17, 1, 17), |
| | | (18, 3, 18, 1, 18), |
| | | (19, 3, 19, 1, 19), |
| | | (20, 3, 20, 1, 20), |
| | | (21, 3, 21, 1, 21), |
| | | (22, 3, 22, 1, 22), |
| | | (23, 3, 23, 1, 23), |
| | | (24, 3, 24, 1, 24), |
| | | (25, 3, 25, 1, 25), |
| | | (26, 4, 98, 1, NULL), |
| | | (27, 4, 99, 1, NULL), |
| | | (28, 5, 101, 1, NULL), |
| | | (29, 5, 102, 1, NULL), |
| | | (30, 6, 103, 1, NULL), |
| | | (31, 6, 104, 1, NULL); |
| | | |
| | | |
| | | |
| | | |
| | | |