ZengTao
2024-10-21 7606618b32d522da823b5dd11f4ee64761be26dc
Merge branch 'master' of http://bore.pub:10439/r/HangZhouMes

# Conflicts:
# hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
22个文件已修改
1 文件已重命名
28个文件已删除
2527 ■■■■ 已修改文件
UI-Project/config.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/utils/constants.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/NewPage.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java 521 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageStationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageTaskMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/controller/RawGlassStorageStationController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/entity/RawGlassStorageStation.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/RawGlassStorageDetailsMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/RawGlassStorageStationMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/config.js
@@ -1,9 +1,9 @@
export default {
//  serverUrl: "10.153.19.150:88/api",
 serverUrl: "192.168.1.199:88/api",
 serverUrl: "10.153.19.150:88/api",
//  serverUrl: "192.168.1.199:88/api",
//  serverUrl: "127.0.0.1:88/api",
  // serverUrl2: "10.153.19.150:88"
  serverUrl2: "192.168.1.199:88"
  serverUrl2: "10.153.19.150:88"
  // serverUrl2: "192.168.1.199:88"
    // serverUrl2: "127.0.0.1:88"
  //serverUrl:"res.abeim.cn"
UI-Project/src/utils/constants.js
@@ -1,4 +1,4 @@
 export const WebSocketHost = "192.168.1.199";
// export const WebSocketHost = "10.153.19.150";
//  export const WebSocketHost = "192.168.1.199";
export const WebSocketHost = "10.153.19.150";
// export const WebSocketHost = "127.0.0.1";
export const host = "88";
UI-Project/src/views/NewPage.vue
@@ -5,11 +5,11 @@
<el-input v-model="current" style="margin-left: 20px;margin-top: 15px;width: 240px" placeholder="请输入工程号" @input="updateUrl"/>
    <el-button style="margin-top: 15px;margin-left: 15px;"  type="primary" @click="fetchData">查询</el-button>  
  </div>  
  <el-card style="flex: 1;margin-left: 150px;margin-top: 50px;margin-right: 10px;width: 1558px;" height="900" v-loading="loading">
  <el-card style="flex: 1;margin-left: 400px;margin-top: 50px;margin-right: 10px;width: 1000px;" height="900" v-loading="loading">
  <div v-for="(row, rowIndex) in divsData" :key="rowIndex" class="row">  
      <div v-for="(rect, colIndex) in row" :key="colIndex" class="div-container">  
    <div style="text-align: center;">炉号:{{ getAdjustedRectsForRow(rowIndex)[0].layout_id }}</div>  
  <el-scrollbar height="430px" width="1516px" style="background-color: #e9e9eb;">
  <el-scrollbar height="550px" width="958px" style="background-color: #e9e9eb;">
  <div  style="position: relative;width: 100%;height: 100%;">
    <div
      v-for="(rect, index) in getAdjustedRectsForRow(rowIndex)"
@@ -99,20 +99,20 @@
  if (rawRowData) {
adjustedRectsPerRow.value[rowIndex] = rawRowData.map(rect => {
      let adjustedWidth, adjustedHeight,newX;
      if (rect.rotate_angle  === 0) {
      if (rect.rotate_angle  === 90) {
       newX = rect.olHeight -(rect.y_axis + rect.height); 
       adjustedWidth = rect.height * (1516/rect.olHeight);
       adjustedHeight = rect.width * (430/rect.olWidth);
       adjustedWidth = rect.height * (958/rect.olHeight);
       adjustedHeight = rect.width * (550/rect.olWidth);
      } else {  
        newX = rect.olHeight -(rect.y_axis + rect.width); 
       adjustedWidth = rect.width * (1516/rect.olHeight);
       adjustedHeight = rect.height * (430/rect.olWidth);
       adjustedWidth = rect.width * (958/rect.olHeight);
       adjustedHeight = rect.height * (550/rect.olWidth);
      } 
      let adjustedRect = {  
        ...rect,
        y_axis: rect.x_axis * (430/rect.olWidth),
        x_axis: newX * (1516/rect.olHeight),
        // y_axis: rect.x_axis * (430/rect.olWidth),
        y_axis: rect.x_axis * (550/rect.olWidth),
        x_axis: newX * (958/rect.olHeight),
        // y_axis: rect.x_axis * (550/rect.olWidth),
        width: adjustedWidth,  
        height: adjustedHeight,  
        widtha: rect.width,  
@@ -137,10 +137,10 @@
margin-bottom: 20px;
}
.div-container {  
width: 1516px;
width: 958px;
float: left;
background-color: #f4f4f5;
height: 430px;
height: 550px;
box-sizing: border-box;
}
</style>
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -189,6 +189,8 @@
    public static final Integer RAW_GLASS_TASK_TYPE_IN = 1;
    public static final Integer RAW_GLASS_TASK_TYPE_OUT = 2;
    public static final Integer RAW_GLASS_TASK_TYPE_DISPATCH = 3;
    public static final Integer RAW_GLASS_TASK_TYPE_IN_REQUEST = 4;
    public static final Integer RAW_GLASS_TASK_TYPE_OUT_REQUEST = 5;
    /**
     * 原片仓储任务类型
@@ -198,5 +200,29 @@
    public static final Integer ENGINEERING_NEW = 0;
    public static final Integer ENGINEERING_RUNNING = 1;
    /**
     * 原片仓储任务类型
     * 在笼内100
     * 出笼101
     * 准备出笼102
     * 执行中103
     * 在车上104
     */
    public static final Integer RAW_GLASS_STATE_IN = 100;
    public static final Integer RAW_GLASS_STATE_OUT = 101;
    public static final Integer RAW_GLASS_STATE_WAIT_OUT = 102;
    public static final Integer RAW_GLASS_STATE_RUNNING = 103;
    public static final Integer RAW_GLASS_STATE_CAR = 104;
    public static final List<Integer> RAW_GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103);
    public static final Integer RAW_GLASS_TASK_NEW = 0;
    public static final Integer RAW_GLASS_TASK_SUCCESS = 1;
    public static final Integer RAW_GLASS_TASK_FAILURE = 2;
    /**
     * 设备号
     */
    public static final List<Integer> RAW_GLASS_DEVICE = Arrays.asList(1, 2, 3);
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -96,6 +96,10 @@
     * 备注
     */
    private String notes;
    /**
     * 上片机线路
     */
    private String stationCell;
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -16,6 +16,7 @@
  threshold: 3
  ratio: 10
  cache: # 卧式理片最大尺寸
  cache: # 卧式理片最大尺寸
    cacheWidth: 3600
    cacheHeight: 3000
  max: # 第二条线的最大尺寸信息
@@ -33,9 +34,10 @@
kangaroohy:
  milo:
    enabled: false
    primary: default
    config:
      default:
        endpoint: opc.tcp://127.0.0.1:49320
        endpoint: opc.tcp://zidonghua:49320
        security-policy: basic256sha256
        username: zsh
        password: 1qaz2wsx3edc4rfv
hangzhoumesParent/moduleService/GlassStorageModule/pom.xml
@@ -24,6 +24,12 @@
            <version>2.8.9</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.mes</groupId>
            <artifactId>servicebase</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <properties>
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -2,14 +2,14 @@
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import com.mes.common.config.Const;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.milo.model.ReadWriteEntity;
import com.mes.milo.service.MiloService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
@@ -22,10 +22,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -50,186 +47,412 @@
    @Resource
    private UpPattenUsageMapper upPattenUsageMapper;
    @Autowired
    @Autowired(required = false)
    private MiloService miloService;
    private static final List<String> liftingStation = Arrays.asList("1", "2");
    private static final List<String> loadGlassStation = Arrays.asList("3", "4", "5", "6");
    private static final List<Integer> LIFTING_STATION = Arrays.asList(4);
    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);
    @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");
        String requestValue = requestWord.getValue() + "";
        if ("0".equals(requestValue)) {
            if ("1".equals(confireWord.getValue() + "")) {
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("storage-device.dev.Task Confirmation Word", 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));
                miloService.writeToOpcWord(list);
            }
            return;
        }
        if (!"1".equals(requestValue)) {
            log.info("无请求");
            return;
        }
        //是否有正在执行的任务
        boolean flag = isHasRunningTask();
        if (flag) {
            log.info("有未完成的任务,结束");
            return;
        }
        //todo:优先进上片机位
        flag = rawGlassDispatchTask();
        if (flag) {
            log.info("执行调度任务,结束");
            return;
        }
        flag = outboundTask();
        if (flag) {
            log.info("执行出库任务,结束");
            return;
        }
        flag = warehouseTask();
        if (flag) {
            log.info("执行入库任务");
            return;
        }
        log.info("无任务执行,结束");
    }
    @Scheduled(fixedDelay = 1000)
    public void rawStorageInCar() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Loading rack");
        String value = entity.getValue() + "";
        if (!"1".equals(value)) {
            log.info("大车忙碌");
            return;
        }
        //查询任务
        RawGlassStorageDetails one = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
        if (one == null) {
            return;
        }
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getId, one.getId())
                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
    }
    @Scheduled(fixedDelay = 1000)
    public void rawStorageFinish() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("storage-device.dev.Task report letter");
        String value = entity.getValue() + "";
        if ("0".equals(value)) {
            log.info("当前任务未汇报,结束本次任务");
            return;
        }
        RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
        if (null == details) {
            log.info("无执行中的任务");
            return;
        }
        RawGlassStorageTask task = rawGlassStorageTaskService.getOne(new LambdaQueryWrapper<RawGlassStorageTask>()
                .in(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW));
        RawGlassStorageDetails targetDetails = generateDetails(details, task.getEndSlot());
        Integer taskType = task.getTaskType();
        if ("1".equals(value)) {
            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);
                    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));
                    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 {
            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));
        miloService.writeToOpcWord(list);
    }
    private boolean isHasRunningTask() {
        RawGlassStorageTask task = rawGlassStorageTaskService.getOne(new LambdaQueryWrapper<RawGlassStorageTask>()
                .in(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW));
        return task == null ? Boolean.FALSE : Boolean.TRUE;
    }
    /**
     * 原片调度:1、查询工程原片表,按照顺序将原片放入上片1号位,后续原片放上片2号位,出现尺寸替换,判断原上片位是否有玻璃,有 先出后进,无 直接进片
     */
    public boolean rawGlassDispatchTask() throws Exception {
        //查询当前系统正在执行的订单
        List<Engineering> engineeringList = engineeringMapper.selectList(new LambdaQueryWrapper<Engineering>()
                .eq(Engineering::getState, Const.ENGINEERING_RUNNING).last("order by id"));
        if (CollectionUtils.isEmpty(engineeringList)) {
            log.info("没有正在执行的工程");
            return false;
        }
        for (Engineering engineering : engineeringList) {
            boolean flag = rawGlassDispatchByEngineering(engineering.getStationCell(), engineering.getEngineerId());
            if (flag) {
                return flag;
            }
        }
        return Boolean.FALSE;
    }
    /**
     * 出库任务:1、点出库,立马生成出片任务 2、点出库修改工位详情内的状态为待出库,定时任务扫描生成出库任务
     */
    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"));
        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) {
            log.info("吊装位当前都有架子,结束出片任务");
            return Boolean.FALSE;
        }
        //获取需要落架的
        //生成出库任务
        rawGlassStorageDetailsService.generateTask(rawGlassList.get(0).getSlot(), 98, rawGlassList.get(0).getSlot(),
                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);
        //修改出片任务状态
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot())
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT)
                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
        return Boolean.TRUE;
    }
    /**
     * 入库任务:吊装位有玻璃,先去工位表查询空格子,生成入库任务从吊装位到目标格子
     *
     * @throws Exception
     */
    @Scheduled(fixedDelay = 1000)
    public void warehouseTask() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
        String value = entity.getValueString();
        if (!"1".equals(value)) {
            log.info("大车忙碌");
            return;
        }
    public boolean warehouseTask() throws Exception {
        List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
                .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot in (1,2)"));
                .gt(RawGlassStorageDetails::getRemainQuantity, 0)
                .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1 and device_id = 4")
                .inSql(RawGlassStorageDetails::getShelf, "select slot from raw_glass_storage_station where enable_state = 1 "));
        if (CollectionUtil.isEmpty(rawGlassList)) {
            log.info("吊装位被禁用或没有玻璃");
            return;
            log.info("吊装位被禁用/架子所在工位被禁用/无原片信息");
            return Boolean.FALSE;
        }
        //查询工位信息是否有
        List<RawGlassStorageStation> stationList = rawGlassStorageStationService.list(new LambdaQueryWrapper<RawGlassStorageStation>().notInSql(RawGlassStorageStation::getSlot, "select slot_id from raw_glass_storage_details where state = '100'")
                .eq(RawGlassStorageStation::getEnableState, Const.SLOT_ON));
        if (CollectionUtil.isEmpty(stationList)) {
            log.info("没有空的工位");
            return;
        }
        //获取吊装位架子信息
//        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;
//        }
        //生成进笼任务
        generateTask(rawGlassList.get(0).getSlotId(), stationList.get(0).getSlot(),
                rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
        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);
        //生成工位任务,将吊装位的玻璃状态改位进笼中
//        修改吊装位的原片状态为103 出片中
        //修改出片任务状态
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot())
                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
        return Boolean.TRUE;
    }
    /**
     * 出库任务:1、点出库,立马生成出片任务 2、点出库修改工位详情内的状态为待出库,定时任务扫描生成出库任务
     */
    @Scheduled(fixedDelay = 1000)
    public void outboundTask() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
        String value = entity.getValueString();
        if (!"2".equals(value)) {
            log.info("大车忙碌");
            return;
        }
        List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING)
                .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot not in (1,2)"));
        if (CollectionUtil.isEmpty(rawGlassList)) {
            log.info("系统没有需要出库的原片信息");
            return;
        }
        List<Integer> emptyLeftingList = rawGlassStorageDetailsService.listBySlotState(liftingStation, Arrays.asList(Const.GLASS_STATE_IN));
        if (CollectionUtil.isEmpty(emptyLeftingList)) {
            log.info("吊装位当前都有原片,结束出片任务");
        }
        //生成出库任务
        generateTask(rawGlassList.get(0).getSlotId(), emptyLeftingList.get(0),
                rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
    }
    /**
     * 原片调度:1、查询工程原片表,按照顺序将原片放入上片1号位,后续原片放上片2号位,出现尺寸替换,判断原上片位是否有玻璃,有 先出后进,无 直接进片
     */
    @Scheduled(fixedDelay = 1000)
    public void rawGlassDispatchTask() throws Exception {
        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
        String value = entity.getValueString();
        if (!"2".equals(value)) {
            log.info("大车忙碌");
            return;
        }
        //查询当前系统正在执行的订单
        Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING).last("order by id limit 1"));
        if (null == engineering) {
            log.info("没有正在执行的工程");
            return;
        }
    private boolean rawGlassDispatchByEngineering(String stationCell, String enginneerId) throws Exception {
        //当前尺寸需要上片的数量
        List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(engineering.getEngineerId());
        List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(enginneerId);
        if (CollectionUtils.isEmpty(pattenUsageList)) {
            log.info("正在执行的工程原片无可上片的原片信息");
            return;
            return Boolean.FALSE;
        }
        Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream()
                .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber));
        //todo:按照工程号按照工程下未完成的尺寸的顺序,当1号上片位架子上的当前尺寸玻璃少于3片且2号上片位无原片玻璃,则将去调度玻璃去2号上片位,
        //todo:当一号上片位架子上的玻璃位空或者当前尺寸用完时时,将2号(有玻璃)上片位调度到1号上片位
        //1、查询4个上片的原片详情
        //1、查询2个上片的原片详情
        List<RawGlassStorageDetails> rawGlassDetailsList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN).in(RawGlassStorageDetails::getSlotId, loadGlassStation));
                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN).in(RawGlassStorageDetails::getDeviceId, stationCell)
                .orderByAsc(RawGlassStorageDetails::getSlot));
        List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
        UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
        if (CollectionUtils.isEmpty(rawGlassDetailsList)) {
            //表示1上片位没有原片,直接找原片放入对应的上片位
            List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
            UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
            //表示1上片位没有架子,直接找原片放入对应路线的1号上片位
            RawGlassStorageDetails 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")
                            .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")
            );
            generateTask(details.getSlotId(), 1, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
            //结束调度任务
            rawGlassStorageDetailsService.generateTask(details.getSlot(), rawGlassDetailsList.get(0).getSlot(), 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)
                    .set(RawGlassStorageDetails::getDeviceId, Const.RAW_GLASS_STATE_RUNNING));
            return Boolean.TRUE;
        }
        Map<Integer, List<RawGlassStorageDetails>> listMap = rawGlassDetailsList.stream().collect(Collectors.groupingBy(RawGlassStorageDetails::getSlotId));
        RawGlassStorageDetails rawGlass03Details = listMap.get(3).get(0);
        RawGlassStorageDetails rawGlass04Details = listMap.get(4).get(0);
//        RawGlassStorageDetails rawGlass05Details = listMap.get(5).get(0);
//        RawGlassStorageDetails rawGlass06Details = listMap.get(6).get(0);
        //todo:上片1号位2种清空方式:方式一:原片用完  方式二:当前尺寸用完
        if (null == rawGlass03Details) {
            if (null == rawGlass04Details) {
                //表示1上片位没有原片,直接找原片放入对应的上片位
                List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
                UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
                RawGlassStorageDetails 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")
                );
                generateTask(details.getSlotId(), 1, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
                //结束调度任务
            } else {
                //将2号上片位的原片放入1号上片位
                generateTask(2, 1, rawGlass04Details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
                //结束调度任务
            }
        } else {
            if (null == rawGlass04Details) {
                List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("2");
                if (CollectionUtils.isEmpty(upPattenUsage01VOS)) {
                    return;
        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;
                }
                UpPattenUsageVO usageVO = upPattenUsage01VOS.get(0);
                RawGlassStorageDetails details = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
            }
            log.info("上片位都有架子,结束本条线{}的调度任务", stationCell);
            return Boolean.FALSE;
        }
        RawGlassStorageDetails glassStorageDetails = rawGlassDetailsList.get(0);
        if (LOAD_STATION_MAX.contains(glassStorageDetails.getSlot())) {
            log.info("上片位2号有架子,结束本条线{}的调度任务", stationCell);
            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")
                );
                generateTask(details.getSlotId(), 2, details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
                        .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.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;
        } 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));
            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;
        }
    }
    private RawGlassStorageDetails generateDetails(RawGlassStorageDetails details, Integer targetSlot) {
    /**
     * 生成原片仓储任务
     *
     * @param startSlot
     * @param endSlot
     * @param patternQuantity
     * @param taskType
     * @return
     */
    private boolean generateTask(int startSlot, int endSlot, Integer patternQuantity, int taskType) {
        RawGlassStorageTask task = RawGlassStorageTask.builder()
                .originateSlot(startSlot)
                .endSlot(endSlot)
                .patternQuantity(patternQuantity)
                .taskType(taskType)
                .createTime(new Date()).build();
        return rawGlassStorageTaskService.save(task);
        RawGlassStorageDetails targetDetails = new RawGlassStorageDetails();
//        details.setDeviceId();
        targetDetails.setSlot(targetSlot);
        targetDetails.setShelf(details.getShelf());
        targetDetails.setPatternWidth(details.getPatternWidth());
        targetDetails.setPatternHeight(details.getPatternHeight());
        targetDetails.setPatternThickness(details.getPatternThickness());
        targetDetails.setFilmsId(details.getFilmsId());
        targetDetails.setRemainQuantity(details.getRemainQuantity());
        targetDetails.setCreateTime(new Date());
        targetDetails.setState(Const.RAW_GLASS_STATE_IN);
        return targetDetails;
    }
    private ReadWriteEntity generateReadWriteEntity(String identifier, int value) {
        ReadWriteEntity readWriteEntity = new ReadWriteEntity();
        readWriteEntity.setIdentifier(identifier);
        readWriteEntity.setValue(value);
        return readWriteEntity;
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -1,16 +1,15 @@
package com.mes.rawglassdetails.controller;
import com.mes.entity.request.GeneralRequest;
import com.mes.rawglassdetails.entity.request.RawGlassRequest;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.userinfo.entity.vo.SysUserVO;
import com.mes.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 前端控制器
@@ -22,14 +21,23 @@
@RequestMapping("/rawGlassStorageDetails")
public class RawGlassStorageDetailsController {
  @Autowired private RawGlassStorageDetailsService rawGlassStorageDetailsService;
  @Autowired
  private RawGlassStorageDetailsService rawGlassStorageDetailsService;
  @ApiOperation("入库请求")
  @PostMapping("/warehousingRequest")
  public Result<String> warehousingRequest(int leftingStation) {
    return Result.build(
            200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.warehousingRequest(leftingStation));
  }
  @ApiOperation("原片入库")
  @PostMapping("/patternWarehousing")
  public Result<String> patternWarehousing(@Validated @RequestBody RawGlassRequest request) {
    return Result.build(
        200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.patternWarehousing(request));
            200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.patternWarehousing(request));
  }
  @ApiOperation("更新剩余数量")
  @PostMapping("/updateQuantity")
  public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) {
@@ -46,4 +54,12 @@
  public Result<Object> outWarehousing(@RequestBody Long slotId) {
    return Result.success(rawGlassStorageDetailsService.outWarehousing(slotId));
  }
  @ApiOperation("出库请求")
  @PostMapping("/outWarehousingRequest")
  public Result<String> outWarehousingRequest(int leftingStation) {
    return Result.build(
            200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.outWarehousingRequest(leftingStation));
  }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
@@ -10,7 +10,7 @@
/**
 * <p>
 *
 *
 * </p>
 *
 * @author wf
@@ -22,54 +22,48 @@
    private static final long serialVersionUID = 1L;
      @TableId(value = "id", type = IdType.AUTO)
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 设备id
     */
    private Integer deviceId;
    /**
     * 格子id
     */
    private Integer slotId;
    private Integer slot;
    /**
     * 架子信息
     */
    private Integer shelf;
    /**
     * 原片宽
     */
    private Double patternWidth;
    /**
     * 原片高
     */
    private Double patternHeight;
    /**
     * 原片厚度
     */
    private Double patternThickness;
    /**
     * 膜系
     */
    private String filmsId;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 剩余数量
     */
    private Integer remainQuantity;
    /**
     * 状态
     */
    private int state;
    private Integer state;
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java
@@ -1,6 +1,5 @@
package com.mes.rawglassdetails.entity.request;
import com.mes.userinfo.entity.vo.SysUserVO;
import lombok.Data;
/**
@@ -9,7 +8,7 @@
 * @Description:
 */
@Data
public class RawGlassRequest extends SysUserVO {
public class RawGlassRequest {
    /**
     * 原片宽
@@ -34,10 +33,10 @@
    /**
     * 剩余数量
     */
    private String remainQuantity;
    private Integer remainQuantity;
    /**
     * 栅格号
     */
    private String slotId;
    private String slot;
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
@@ -23,5 +23,5 @@
     * @param state
     * @return
     */
    List<Integer> listBySlotState(@Param("leftingStation") List<String> liftingStation, @Param("state") List<Integer> state);
    List<Integer> listBySlotState(@Param("leftingStation") List<Integer> liftingStation, @Param("state") List<Integer> state);
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageStationMapper.xml
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageTaskMapper.xml
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -14,15 +14,12 @@
    List<RawGlassStorageDetails> selectDetails();
    /**
     * 删除表  先在这里创  然后点那个相关问题
     *
     * @return boolean
     */
    boolean deleteRawGlassStorageDetails(String device_id);
    /**
     * 原片入库
@@ -38,5 +35,11 @@
    String outWarehousing(Long slotId);
    List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state);
    List<Integer> listBySlotState(List<Integer> liftingStation, List<Integer> state);
    String warehousingRequest(int leftingStation);
    String outWarehousingRequest(int leftingStation);
    boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType);
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -1,5 +1,6 @@
package com.mes.rawglassdetails.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,9 +9,13 @@
import com.mes.rawglassdetails.entity.request.RawGlassRequest;
import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
@@ -22,6 +27,10 @@
@Service
@Slf4j
public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
    @Autowired
    RawGlassStorageTaskService rawGlassStorageTaskService;
    @Override
    public boolean deleteRawGlassStorageDetails(String device_id) {
        QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
@@ -40,13 +49,42 @@
    @Override
    public String patternWarehousing(RawGlassRequest request) {
        //todo:原片信息存入详情表
    public String warehousingRequest(int leftingStation) {
        RawGlassStorageDetails storageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL));
        if (null != storageDetails) {
            log.info("当前吊装位有架子,结束本地入库请求");
            return "fail";
        }
        List<Integer> shelfList = listBySlotState(Const.RAW_GLASS_DEVICE, Const.RAW_GLASS_STATE_IN_ALL);
        if (CollectionUtils.isEmpty(shelfList)) {
            log.info("当前工位不存在可用的空架子");
            return "fail";
        }
        Integer shelf = shelfList.get(0);
        log.info("生成任务");
        generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST);
        //生成一条详情数据  仅记录架子状态
        RawGlassStorageDetails details = new RawGlassStorageDetails();
        BeanUtils.copyProperties(request, details);
        details.setState(Const.GLASS_STATE_IN);
        details.setCreateTime(new Date());
        details.setSlot(shelf);
        details.setShelf(shelf);
        details.setState(Const.RAW_GLASS_STATE_RUNNING);
        save(details);
        return "success";
    }
    @Override
    public String patternWarehousing(RawGlassRequest request) {
        RawGlassStorageDetails glassStorageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                .eq(RawGlassStorageDetails::getSlot, request.getSlot()));
        if (null == glassStorageDetails) {
            log.info("当前吊装位没有架子");
        }
        //todo:原片信息存入详情表
        BeanUtils.copyProperties(request, glassStorageDetails);
        log.info("覆盖后得到的工位详情信息为:{}", glassStorageDetails);
        updateById(glassStorageDetails);
        return "success";
    }
@@ -55,27 +93,71 @@
        update(
                new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
                        .eq(RawGlassStorageDetails::getSlotId, request.getSlotId()));
                        .eq(RawGlassStorageDetails::getSlot, request.getSlot())
                        .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
        return "success";
    }
    @Override
    public String deleteWarehousing(Long slotId) {
        update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
                .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT));
        update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slotId)
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
        return "success";
    }
    @Override
    public String outWarehousing(Long slotId) {
        update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
                .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING));
        update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slotId)
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT));
        //生成一条详情数据  仅记录架子状态
        return "success";
    }
    @Override
    public List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state) {
    public List<Integer> listBySlotState(List<Integer> liftingStation, List<Integer> state) {
        return baseMapper.listBySlotState(liftingStation, state);
    }
    @Override
    public String outWarehousingRequest(int leftingStation) {
        //对应工位是否有空架子
        RawGlassStorageDetails details = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
                .eq(RawGlassStorageDetails::getSlot, leftingStation));
        if (null == details) {
            log.info("无空架子,结束本地出片请求");
            return "fail";
        }
        //生成一条详情数据  仅记录架子状态
        update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                .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);
        return "success";
    }
    /**
     * 生成原片仓储任务
     *
     * @param startSlot
     * @param endSlot
     * @param patternQuantity
     * @param taskType
     * @return
     */
    @Override
    public boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) {
        RawGlassStorageTask task = RawGlassStorageTask.builder()
                .startSlot(startSlot)
                .endSlot(endSlot)
                .patternQuantity(patternQuantity)
                .taskType(taskType)
                .taskState(Const.RAW_GLASS_TASK_NEW)
                .shelf(shelf)
                .createTime(new Date()).build();
        return rawGlassStorageTaskService.save(task);
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/controller/RawGlassStorageStationController.java
@@ -29,9 +29,6 @@
    } else {
      return Result.build(200, "禁用", result);
    }
  }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/entity/RawGlassStorageStation.java
@@ -17,33 +17,24 @@
    private static final long serialVersionUID = 1L;
  @TableId(value = "id", type = IdType.AUTO)
  private Long id;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 设备id
     */
    private Integer deviceId;
    /**
     * 栅格号
     */
    private Integer slot;
    /**
     * 栅格号
     */
    private Integer shelf;
    /**
     * 启用标记
     */
    private String enableState;
    /**
     * 开始工位
     */
    private Integer startSlot;
    /**
     * 目标工位
     */
    private Integer endSlot;
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
@@ -27,32 +27,30 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 起始格子
     */
    private Integer originateSlot;
    private Integer startSlot;
    /**
     * 目标格子
     */
    private Integer endSlot;
    /**
     * 架子号
     */
    private Integer shelf;
    /**
     * 原片数量
     */
    private Integer patternQuantity;
    /**
     * 任务类型
     */
    private Integer taskType;
    /**
     * 任务状态
     */
    private Integer taskState;
    /**
     * 创建时间
     */
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml
@@ -5,7 +5,7 @@
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        hangzhoumes:
          url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8
          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
spring:
  profiles:
    active: prod
    active: dev
  application:
    name: glassStorage
  liquibase:
@@ -16,5 +16,12 @@
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
kangaroohy:
  milo:
    enabled: false
    enabled: true
    primary: default
    config:
      default:
        endpoint: opc.tcp://192.168.10.241:49320
        security-policy: basic256sha256
        username: liu
        password: 1qaz2wsx3edc4rfv
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/RawGlassStorageDetailsMapper.xml
File was renamed from hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
@@ -3,17 +3,22 @@
<mapper namespace="com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper">
    <select id="listBySlotState" resultType="java.lang.Integer">
        select t.slot
        from raw_glass_storage_station t
        inner JOIN raw_glass_storage_details t1
        on t.slot = t1.slot_id and t.enable_state = 1
        and t.slot in
        <foreach collection="leftingStation" item="item" open='(' close=')' separator=','>
            #{item}
        </foreach>
        and t1.state not in
        SELECT
        T.SLOT
        FROM
        RAW_GLASS_STORAGE_STATION T
        LEFT JOIN RAW_GLASS_STORAGE_DETAILS AS T1 ON T.DEVICE_ID = T1.DEVICE_ID
        AND T.SLOT = T1.SLOT
        AND T1.STATE IN
        <foreach collection="state" item="item" open='(' close=')' separator=','>
            #{item}
        </foreach>
        WHERE
        T.ENABLE_STATE = 1
        AND T.DEVICE_ID IN
        <foreach collection="leftingStation" item="item" open='(' close=')' separator=','>
            #{item}
        </foreach>
        AND T1.SLOT IS NULL
    </select>
</mapper>
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/RawGlassStorageStationMapper.xml
@@ -4,7 +4,7 @@
    <resultMap id="baseMap" type="com.mes.rawglassdetails.entity.RawGlassStorageDetails">
        <result column="device_id" property="deviceId"/>
        <result column="slot" property="slotId"/>
        <result column="slot" property="slot"/>
        <result column="pattern_width" property="patternWidth"/>
        <result column="pattern_height" property="patternHeight"/>
        <result column="pattern_thickness" property="patternThickness"/>
@@ -27,7 +27,7 @@
               T.ENABLE_STATE
        FROM RAW_GLASS_STORAGE_STATION T
                 LEFT JOIN RAW_GLASS_STORAGE_DETAILS T1 ON T.DEVICE_ID = T1.DEVICE_ID
            AND T.SLOT = T1.SLOT_ID
            AND T.SLOT = T1.SLOT
            AND T1.STATE = 100
    </select>
</mapper>
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/ShelfRackMapper.xml
File was deleted
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/mapper/StorageTaskMapper.xml
File was deleted
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -6,7 +6,7 @@
  application:
    name: temperingGlass
  liquibase:
    enabled: true
    enabled: false
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/changelog/changelog.sql
@@ -195,7 +195,7 @@
    start_slot       int      NULL DEFAULT NULL COMMENT '起始格子',
    end_slot         int      NULL DEFAULT NULL COMMENT '目标格子',
    pattern_quantity int      NULL DEFAULT NULL COMMENT '原片数量',
    enable_type      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 '创建时间',
    PRIMARY KEY (id) USING BTREE
@@ -209,5 +209,71 @@
ALTER TABLE engineering
    ADD COLUMN station_cell varchar(20);
-- 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');