wu
2024-04-19 f8b836e2c1a6f2e296ee51849b7bd0e3788da719
Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
25个文件已修改
1个文件已添加
49个文件已删除
2986 ■■■■ 已修改文件
CacheVerticalGlassModule/.vs/CacheVerticalGlassModule/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/.vs/ProjectSettings.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/.vs/VSWorkspaceState.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/.vs/slnx.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/pom.xml 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/MesApplication.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/CacheUtil.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/Constants.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcStorageCage.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7object.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7object2.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/Result.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/common/interceptor/JwtInterceptor.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/InterceptorConfig.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/MyCorsConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/MybatisPlusConfig.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/SwaggerConfig.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/config/WebSocketConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/controller/dto/UserDTO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuItemController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCage.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysError.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysMenu.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysMenuItem.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/User.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/exception/GlobalExceptionHandle.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/exception/ServiceException.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/mapper/BigStorageCageMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysErrorMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/UserService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/tools/TokenTools.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/java/com/mes/tools/WebSocketServer.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/resources/application.yml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCage.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/src/test/java/com/mes/MesApplicationTests.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/target/classes/application.yml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/target/classes/mapper/BigStorageCage.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 349 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/pom.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/pom.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/pom.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CacheVerticalGlassModule/.vs/CacheVerticalGlassModule/v16/.suo
Binary files differ
CacheVerticalGlassModule/.vs/ProjectSettings.json
File was deleted
CacheVerticalGlassModule/.vs/VSWorkspaceState.json
File was deleted
CacheVerticalGlassModule/.vs/slnx.sqlite
Binary files differ
CacheVerticalGlassModule/pom.xml
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/MesApplication.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/CacheUtil.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/Constants.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcStorageCage.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7object.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/PlcTools/S7object2.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/Result.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/common/interceptor/JwtInterceptor.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/InterceptorConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/MyCorsConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/MybatisPlusConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/SwaggerConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/config/WebSocketConfig.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/controller/dto/UserDTO.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuItemController.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysError.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysMenu.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/SysMenuItem.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/entity/userInfo/User.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/exception/GlobalExceptionHandle.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/exception/ServiceException.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/mapper/BigStorageCageMapper.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysErrorMapper.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuMapper.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/tools/TokenTools.java
File was deleted
CacheVerticalGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
File was deleted
CacheVerticalGlassModule/src/main/resources/application.yml
File was deleted
CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCage.xml
File was deleted
CacheVerticalGlassModule/src/test/java/com/mes/MesApplicationTests.java
File was deleted
CacheVerticalGlassModule/target/classes/application.yml
File was deleted
CacheVerticalGlassModule/target/classes/mapper/BigStorageCage.xml
File was deleted
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,52 +1,209 @@
<script setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {reactive,  onMounted} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
const dialogFormVisiblea = ref(false)
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import Landingindication from "./Landingindication.vue";
// import Landingindicationtwo from "./Landingindicationtwo.vue";
import Landingindicationtwo from "./Landingindicationtwo.vue";
import unloadrequest from "@/utils/unloadrequest";
const dialogFormVisiblea = ref(false)
const tableData = [
  {
    id: '1',
    long: '1005',
    wide: '183.6',
    thick: '1991',
    state: '未启用',
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    thick: '191',
    state: '未启用'
  },
  {
    id: '3',
    long: '105',
    wide: '183',
    thick: '191',
    state: '未启用'
  },
  {
    id: '4',
    long: '105',
    wide: '183',
    thick: '191',
    state: '未启用'
  },
  {
    id: '5',
    long: '105',
    wide: '183',
    thick: '191',
    state: '未启用'
  },
]
const dialogFormVisiblea2 = ref(false)
let socket;
const initWebSocket = (token) =>{ //初始化we
let viewname = "unloadglass";
if (typeof WebSocket === "undefined") {
  console.log("您的浏览器不支持WebSocket");
} else {
  let socketUrl = "ws://" + "localhost"+":88" + "/api/unLoadGlass/api/talk/" + viewname;
  if (socket != null) {
    socket.close();
    socket = null;
  }
  // 开启一个websocket服务
  socket = new WebSocket(socketUrl);
  // 打开事件
  socket.onopen = function () {
    console.log("websocket已打开");
  };
socket.onmessage = (msg) => {
if (!msg.data) {
return; // 如果收到空数据,则直接返回,不执行后续逻辑
}
    let obj = JSON.parse(msg.data);
      console.log('收到消息:', obj.data);
  }
  }
  }
// 数据
const loading = ref(false);
// 弹框显示控制
const dialogFormVisible = ref(false);
// 表单数据
const workstationId = ref('');
const flowCardId = ref('');
const flowCardOptions = ref([]);
// 方法
const handleSelectionChange = () => {
  // 处理表格行选择事件
};
const handleBindRack = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
  // 发起接口请求获取流程卡号
    fetchFlowCardId();
  dialogFormVisiblea.value = true; // 打开绑定架子对话框
};
//获取流程卡号
const fetchFlowCardId = async () => {
  try {
    const response = await unloadrequest.get('/api/unLoadGlass/getflowCardId');
    console.log(response)
    if (response.code === 200) {
      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flowcard_id }));
    } else {
      ElMessage.error(response.msg);
    }
  } catch (error) {
    console.error(error);
  }
};
//确认
const handleConfirm = async () => {
  try {
    const response = await unloadrequest.post('/api/unLoadGlass/updateFlowCardId', {
      workstationId: workstationId.value,
      flowCardId: flowCardId.value
    });
    console.log(response)
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      console.log('绑定成功');
      ElMessage.success(response.message);
      dialogFormVisiblea.value = false;
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
    }
  } catch (error) {
    // 处理错误
    console.error(error);
  }
};
const handleBindRack2 = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
  dialogFormVisiblea2.value = true; // 打开绑定架子对话框
};
//清除内容
const handleclear = async () => {
    try {
        const response = await unloadrequest.post('/api/unLoadGlass/clear', {
            workstationId: workstationId.value,
        });
        console.log(response);
        if (response.code === 200) {
            // 清除成功的逻辑
            console.log('清除成功');
            ElMessage.success(response.message);
            dialogFormVisiblea2.value = false;
        } else if (response.code === 400) {
            // 清除失败的逻辑
            console.log('清除失败');
            console.log(response.message); // 打印服务器返回的错误信息
            ElMessage.error(response.message);
            dialogFormVisiblea2.value = false;
        }
    } catch (error) {
        // console.log(error);
         ElMessage.error("清除失败");
            dialogFormVisiblea2.value = false;
    }
};
const tableData = reactive([]);
// 发送获取表格数据的请求
const fetchTableData = async () => {
  try {
    // 发送获取表格数据的请求,并等待响应
    const response = await unloadrequest.get('/api/unLoadGlass/getone');
    // 检查响应状态
    if (response.code === 200) {
      // 更新表格数据
      console.log('成功获取表格数据:', response.data);
      tableData.splice(0, tableData.length, ...response.data);
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
    }
  } catch (error) {
    // 处理请求失败的情况
    ElMessage.error('获取表格数据失败,请重试');
  }
};
initWebSocket();
onMounted(fetchTableData);
setInterval(fetchTableData, 2000)
const open = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
@@ -84,17 +241,6 @@
  }
}
const dialogForm = () => {
  ElMessageBox.confirm(
    '是否清空该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
}
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -133,6 +279,10 @@
  ],
})
</script>
<template>
@@ -142,53 +292,80 @@
        <el-table height="100%" ref="table" 
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="下片位" min-width="80" />
          <el-table-column prop="long" align="center" label="架号" min-width="120" />
          <el-table-column prop="wide" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="wide" align="center" label="总数量" min-width="120" />
          <el-table-column prop="wide" align="center" label="已落架数量" min-width="120" />
          <el-table-column prop="state" align="center" label="启用状态" min-width="120" />
          <el-table-column prop="workstationId" align="center" label="下片位" min-width="80" />
          <el-table-column prop="workstationId" align="center" label="架号" min-width="120" />
          <el-table-column prop="flowCardId" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="totalquantity" align="center" label="总数量" min-width="120" />
          <el-table-column prop="racksnumber" align="center" label="已落架数量" min-width="120" />
          <el-table-column prop="work_state" align="center" label="状态" min-width="120" />
          <el-table-column prop="deviceId" align="center" label="设备号" min-width="120" />
          <el-table-column prop="enableState" align="center" label="启用状态" min-width="120" />
          <el-table-column fixed="right" label="操作" align="center" width="200">
            <template #default>
              <el-button size="mini" type="text" plain v-show="state !== '已启用' " @click="dialogFormVisiblea = true">绑定架子</el-button>
              <el-button size="mini" type="text" plain   @click="dialogForm">清空</el-button>
            </template>
            <template #default="scope">
            <el-button size="mini" type="text" plain v-show="scope.row.enableState !== '已启用' " @click="handleBindRack(scope.row)">绑定架子</el-button>
            <el-button size="mini" type="text" plain  @click="handleBindRack2(scope.row)">清空</el-button>
          </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
  <div style="display: flex;">
  <div id="main-body">
      <Landingindication></Landingindication>
    </div>
  <!-- <div id="main-body">
    <Landingindicationtwo></Landingindicationtwo>
    </div> -->
    </div>
    <el-dialog v-model="dialogFormVisiblea" top="21vh" width="30%" title="绑定架子" >
    <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form  label-width="100px" label-position="right">
              <el-form-item label="架号:" :required="true" style="width: 18vw">
                <el-input  autocomplete="off"/>
              </el-form-item>
              <el-form-item label="流程卡号:" :required="true" style="width: 18vw;">
                <el-input autocomplete="off" />
              </el-form-item>
        </el-form>
            </el-form>
          </div>
      <el-form  size="mini" label-width="150px">
        <el-form  label-width="100px" label-position="right">
          <el-form-item label="架号:" :required="true" style="width: 18vw">
            <el-input v-model="workstationId" autocomplete="off"/>
          </el-form-item>
          <el-form-item label="流程卡号:" :required="true" style="width: 18vw;">
          <el-select v-model="flowCardId" placeholder="请选择流程卡号">
            <el-option v-for="item in flowCardOptions" :key="item.flowcard_id" :label="item.flowcard_id" :value="item.flowcard_id" />
          </el-select>
        </el-form-item>
      </el-form>
      </el-form>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="dialogFormVisiblea = false">
        <el-button type="primary" @click="handleConfirm">
          确认
        </el-button>
        <el-button @click="dialogFormVisiblea = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" title="清除架子玻璃" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleclear">
          确认
        </el-button>
        <el-button @click="dialogFormVisiblea2 = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
    <!-- workstationId: '1',
    workstationId: '1005',
    flowCardId: '183.6',
    totalquantity: '1991',
    racksnumber:"1",
    work_state: '待识别', -->
  </div>
  <div style="display: flex;">
  <div id="main-body">
      <Landingindication></Landingindication>
    </div>
  <div id="main-bodya">
    <Landingindicationtwo></Landingindicationtwo>
    </div></div>
</template>
<style scoped>
@@ -212,7 +389,11 @@
  height: 450px;
}
#main-body{
  margin-top: -20px;
  margin-left: 300px;
}
#main-bodya{
  margin-top: -10px;
  margin-left: 450px;
  margin-left: 100px;
}
</style>
hangzhoumesParent/common/pom.xml
@@ -44,13 +44,13 @@
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.2.0</version>
            <version>3.3.1</version>
        </dependency>
        <dependency>
@@ -172,6 +172,12 @@
            <version>1.2.33</version>
        </dependency>
        <dependency>
            <groupId>com.github.yulichang</groupId>
            <artifactId>mybatis-plus-join</artifactId>
            <version>1.2.4</version>
        </dependency>
    </dependencies>
hangzhoumesParent/common/servicebase/pom.xml
@@ -6,19 +6,12 @@
        <artifactId>common</artifactId>
        <groupId>com.mes</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>servicebase</artifactId>
        <dependencies>
            <dependency>
                <groupId>com.github.yulichang</groupId>
                <artifactId>mybatis-plus-join</artifactId>
                <version>1.1.6</version>
            </dependency>
        </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -10,7 +10,6 @@
import com.mes.taskcache.mapper.HangzhouMesMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,10 +3,20 @@
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
    username: root
    password: beibo.123/
    dynamic:
      primary: hangzhoumes #设置默认的数据源或者数据源组,默认值即为master
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        hangzhoumes:
          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        salve_hangzhoumes:
          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
          username: sa
          password: beibo.123/
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
  cloud:
    nacos:
      discovery:
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -19,9 +19,10 @@
        System.out.println("启动完成");
        new PLCAutoMes().start();
        new Plchome().start();
//       new PLCAutoMes().start();
//
//    new Plchome().start();
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -8,5 +8,4 @@
public class DownGlassInfoController {
    // Other endpoints can be added for CRUD operations
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
@@ -15,16 +15,10 @@
 * @author zhoush
 * @since 2024-04-07
 */
@Api(tags = "下料任务")
@RestController
@RequestMapping("/downGlassTask")
public class DownGlassTaskController {
    //todo: 实例代码 待删除
    @ApiOperation("测试")
    @GetMapping("/index")
    public String index() {
        return "hello world";
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -17,9 +17,9 @@
    List<DownGlassTask> getUnloadingTaskState();
    void updateTaskStateToZero(String flowCardId);
    void updateTaskStateToZero(long id);
    void deleteTask(String flowCardId);
    void deleteTask(long id);
    DownGlassTask selectLastOutCacheInfo(String endCell);
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -32,16 +32,16 @@
    }
    @Override
    public void updateTaskStateToZero(String flowCardId) {
    public void updateTaskStateToZero(long id) {
        UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("task_stauts", 0).eq("flow_card_id", flowCardId);
        updateWrapper.set("task_stauts", 0).eq("id", id);
        baseMapper.update(null, updateWrapper);
    }
    @Override
    public void deleteTask(String flowCardId) {
    public void deleteTask(long id) {
        LambdaQueryWrapper<DownGlassTask> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DownGlassTask::getFlowCardId, flowCardId);
        queryWrapper.eq(DownGlassTask::getId, id);
        baseMapper.delete(queryWrapper);
    }
@@ -76,4 +76,8 @@
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -2,18 +2,24 @@
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.downstorage.service.DownStorageCageService;
import com.mes.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(tags = "缓存")
@RestController
@RequestMapping("/down-storage-cage-details")
@RequestMapping("/api/unLoadGlass/downstorage")
public class DownStorageCageDetailsController {
    @Autowired
    private DownStorageCageDetailsService downStorageCageDetailsService;
    @Autowired
    private DownStorageCageService downStorageCageService;
    @PostMapping("/add")
    public String addDownStorageCageDetails(@RequestBody DownStorageCageDetails details) {
@@ -21,5 +27,22 @@
        return "Details added successfully";
    }
    //查询磨边缓存理片笼内详情
    @ApiOperation("查询磨边缓存理片笼内详情")
    @GetMapping("/selectStorageCage")
    @ResponseBody
    public Result selectEdgStorageCage () {
        List<Map> list=downStorageCageService.getCacheInfo();
        return Result.build(200,"成功",list);
    }
//
    // Other CRUD operations can be defined here
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -1,16 +1,16 @@
package com.mes.downstorage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downstorage.entity.DownStorageCageDetails;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.mes.glassinfo.entity.GlassInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;
/**
 * <p>
 * Mapper 接口
 *  Mapper 接口
 * </p>
 *
 * @author zhoush
@@ -18,7 +18,7 @@
 */
@Mapper
public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
    //
//
//    @Select("select * from `glass_info` where id=#{id}")
//    GlassInfo SelectGlassId(String id);
    // 查询笼子内空闲
@@ -27,13 +27,13 @@
    // 查询符合工位的出片玻璃
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot left join down_workstation as dw  on escd.flow_card_id=dw.flow_card_id WHERE escd.slot IS NOT NULL and dw.workstation_id BETWEEN #{start} and #{end} order by escd.tempering_layout_id,escd.tempering_feed_sequence")
    List<DownStorageCageDetails> SelectCacheOut(int start, int end);
    List<DownStorageCageDetails> SelectCacheOut(int start,int end);
//SELECT* from (SELECT DISTINCT escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot left join down_workstation as dw  on escd.flow_card_id=dw.flow_card_id WHERE escd.slot IS NOT NULL and dw.workstation_id BETWEEN 1 and 5   order by escd.tempering_layout_id,escd.tempering_feed_sequence) as cc ORDER BY cc.width desc
    // 查询笼子内信息
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot order by esc.slot")
    List<DownStorageCageDetails> SelectCachInfo();
    // 查询可进此片玻璃的栅格号
    // 查询可进此片玻璃的栅格号  找到相同版图id并且大于前面的顺序的空格
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null and escd.tempering_layout_id=#{tempering_layout_id} and escd.tempering_feed_sequence<#{tempering_feed_sequence} and esc.remain_width-#{width}>0 order by escd.tempering_feed_sequence")
    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, Integer tempering_feed_sequence,
                                                        double width);
@@ -64,7 +64,7 @@
    // 添加下片任务
    @Insert("INSERT into down_glass_task VALUES(#{id},#{start},#{end},#{type},0,)")
    Integer insertCacheTask(String id, String start, String end, String type, double width, double height, Integer filmsId, double thickness, String flowCardId);
    Integer insertCacheTask(String id, String start, String end, String type,double width,double height,Integer filmsId,double thickness,String flowCardId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageMapper.java
@@ -1,6 +1,7 @@
package com.mes.downstorage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.downstorage.entity.DownStorageCage;
/**
@@ -11,6 +12,6 @@
 * @author zhoush
 * @since 2024-03-27
 */
public interface DownStorageCageMapper extends BaseMapper<DownStorageCage> {
public interface DownStorageCageMapper extends MPJBaseMapper<DownStorageCage> {
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java
@@ -3,50 +3,39 @@
import com.mes.common.PLCAutoMes;
import com.mes.common.S7control;
import com.mes.device.PlcParameterObject;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassTaskService;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.tools.WebSocketServer;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.tools.WebSocketServer;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
@Data
@Service
public class DownGlassCacheLogic {
    @Autowired
    private DownStorageCageDetailsMapper selectInfo;
    private GlassInfoService GlassInfoService;
    private DownStorageCageDetailsService downStorageCageDetailsService;
    private DownGlassTaskService downGlassTaskService;
    /**
     * @param Number //识别逻辑    不交互
     */
    public void identify(String Number) {
        //查询任务
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
        String s = S7control.getinstance().ReadWord("DB14.26", 1).get(0) + "";
        boolean isexist = isExist(Number);
        if (isexist) {
            //存在逻辑    1.添加信息 2.回复PLC存在
            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
        } else {
            //不存在逻辑  1.回复PLC不存在
            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
        }
    }
    //下片前理片
    public static final String RESULT_IN = "1";
    public static final String RESULT_OUT = "2";
    public static final String RESULT_IN_OUT = "3";
    @Autowired
    private DownStorageCageDetailsMapper selectInfo;
    private GlassInfoService GlassInfoService;
    private DownStorageCageService downStorageCageService;
    private DownGlassTaskService downGlassTaskService;
    public void process() {
        String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
@@ -77,20 +66,23 @@
    public boolean processInto(String Number) {
        GlassInfoService = WebSocketServer.applicationContext.getBean(GlassInfoService.class);
        downStorageCageService = WebSocketServer.applicationContext.getBean(DownStorageCageService.class);
        //按id查询玻璃信息表里的玻璃
        GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        //存在此玻璃编号
        if (GlassInfo != null) {
            //同钢化版图内的栅格号
            List<DownStorageCageDetails> list = selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(), GlassInfo.getTemperingFeedSequence(), GlassInfo.getWidth());
            //同钢化版图内的栅格号    找到相同版图id并且大于前面的顺序的空格
            List<DownStorageCageDetails> list = downStorageCageService.getIsExistIntoCacheByLayoutAndSequence(GlassInfo.getTemperingLayoutId(), GlassInfo.getTemperingFeedSequence(), GlassInfo.getWidth());
            //空栅格号
            if (list.size() == 0) {
                list = selectInfo.SelectCacheLeisure();
                //查询笼子内空闲
                list = downStorageCageService.getCacheLeisure();
            }
            //小于此玻璃钢化版图序号的栅格号
            if (list.size() == 0) {
                list = selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(), GlassInfo.getWidth());
                list = downStorageCageService.getIsExistIntoCacheByLayout(GlassInfo.getTemperingLayoutId(), GlassInfo.getWidth());
            }
            if (list.size() > 0) {
                //存在空格  
@@ -100,6 +92,7 @@
                selectInfo.insertCacheTask(GlassInfo.getId() + "", "0", item.getSlot() + "", "1", GlassInfo.getWidth(), GlassInfo.getHeight(), GlassInfo.getFilmsid(), GlassInfo.getThickness(), GlassInfo.getFlowcardId());
                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
               //完成后插入小片数据到缓存表
                return true;
            }
@@ -117,12 +110,41 @@
        String G11 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
        String G13 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        List<DownStorageCageDetails> list = selectInfo.SelectCacheOut(1, 5);
        List<DownStorageCageDetails> list2 = selectInfo.SelectCacheOut(6, 10);
        List<DownStorageCageDetails> list3 = selectInfo.SelectCacheOut(1, 10);
        List<DownStorageCageDetails> list = downStorageCageService.getCacheOut(1, 5);
        List<DownStorageCageDetails> list2 = downStorageCageService.getCacheOut(6, 10);
        List<DownStorageCageDetails> list3 = downStorageCageService.getCacheOut(1, 10);
        // 优先 超出尺寸优先人工出片 人工处理
        if (!list3.isEmpty()) {
            DownStorageCageDetails item3 = list3.get(0);
            if (item3.getHeight() >= 1 && item3.getWidth() >= 1) {
                String endcell = "13";
                String SendEndcell = "1";
                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }
        }
        //同时请求 优先后端出片
        else if (!list3.isEmpty()) {
            DownStorageCageDetails item3 = list3.get(0);
            if (G06.equals("0") && G11.equals("0")) {
                String endcell = "11";
                String SendEndcell = "1";
                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }
        }
        // 按照顺序符合前端出片
        if (!list.isEmpty()) {
        else if (!list.isEmpty()) {
            DownStorageCageDetails item = list.get(0);
            if (G06.equals("0") && G11.equals("1")) {
                // 出到 G06
@@ -141,49 +163,19 @@
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }
            // 超出尺寸优先人工出片 人工处理
        } else if (!list3.isEmpty()) {
            DownStorageCageDetails item3 = list3.get(0);
            if (item3.getHeight() >= 3440 && item3.getWidth() >= 1440) {
                String endcell = "06";
                String SendEndcell = "1";
                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }
        }
        // 返回结果
        return false;
    }
//查询是否绑定架子
//    public boolean selectFlowCardId(String FlowCardId){
//
//    }
    /**
     * @param Number //磨边   不交互  理片和磨边机自己交互
     * @param Number
     *  //磨边   不交互  理片和磨边机自己交互
     */
    public void processMb(String Number) {
        //按id查询玻璃信息表里的玻璃
        GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        if (GlassInfo != null) {
            //发送任务   ID   长 宽 厚 倒角 工艺功能等
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.22").getAddress(), "N10000");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.24").getAddress(), "1000");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.26").getAddress(), "800");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "60");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.30").getAddress(), "2");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
        }
        //返回结果
    }
    /**
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -2,6 +2,9 @@
import com.mes.downstorage.entity.DownStorageCageDetails;
import java.util.List;
import java.util.Map;
public interface DownStorageCageDetailsService {
    void addDownStorageCageDetails(DownStorageCageDetails details);
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downstorage.entity.DownStorageCage;
import com.mes.downstorage.entity.DownStorageCageDetails;
import java.util.List;
import java.util.Map;
@@ -16,4 +17,12 @@
 */
public interface DownStorageCageService extends IService<DownStorageCage> {
    public List<Map> gettask();
    //    List<Map<String, Object>> selectCacheLeisure();
    List<DownStorageCageDetails> getCacheLeisure();
    List<DownStorageCageDetails> getCacheOut(int start, int end);
    List<Map> getCacheInfo();
    List<DownStorageCageDetails> getIsExistIntoCacheByLayoutAndSequence(Integer tempering_layout_id, Integer tempering_feed_sequence, double width);
    List<DownStorageCageDetails> getIsExistIntoCacheByLayout(Integer tempering_layout_id, double width);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,13 +1,27 @@
package com.mes.downstorage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.wrapper.MPJAbstractLambdaWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.downstorage.entity.DownStorageCage;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service
public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
    @Override
    public void addDownStorageCageDetails(DownStorageCageDetails details) {
@@ -15,5 +29,18 @@
    }
    // Other business methods can be implemented here
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,9 +1,12 @@
package com.mes.downstorage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.downstorage.entity.DownStorageCage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -12,23 +15,128 @@
/**
 * <p>
 * 服务实现类
 *  服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Slf4j
@Service
public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
    @Autowired
    private DownStorageCageMapper downStorageCageMapper;
    @Override
    public List<Map> gettask() {
    public List<Map> gettask(){
        downStorageCageMapper.selectList(null);
//        downStorageCageMapper.selectJoin();
        return null;
    };
    @Override
    public List<DownStorageCageDetails> getCacheLeisure() {
        log.info(" 查询笼子内空闲");
        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .isNull("escd.slot")
                        .orderByAsc("escd.slot")
        );
        return list;
    }
    ;
//    @Override
//    public List<Map> getCacheOut(int start, int end) {
//        log.info(" 根据传入的工位查询符合按照顺序和大小出片的小片");
//        List<Map> map = downStorageCageMapper.selectJoinList(
//                Map.class, new MPJQueryWrapper<DownStorageCageDetails>()
//                        .select("escd.*")
//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
//                        .isNotNull("escd.slot")
//                        .between("dw.workstation_id", start, end)
//                        .orderByAsc("escd.tempering_layout_id, escd.tempering_feed_sequence")
//        );
//        return map;
//    }
    @Override
    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
        log.info("根据传入的工位查询符合按照顺序和大小出片的小片");
        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
                        .isNotNull("escd.slot")
                        .between("dw.workstation_id", start, end)
                        .orderByDesc("escd.width")
                        .orderByDesc("escd.height")
        );
        return list;
    }
    @Override
    public List<Map> getCacheInfo() {
        log.info(" 查询笼子内信息");
        List<Map> map = downStorageCageMapper.selectJoinList(
                Map.class, new MPJQueryWrapper<DownStorageCageDetails>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .orderByAsc("t.slot")
        );
        return map;
    }
    @Override
    public List<DownStorageCageDetails> getIsExistIntoCacheByLayoutAndSequence(Integer tempering_layout_id, Integer tempering_feed_sequence, double width) {
        log.info(" 查询可进此片玻璃的栅格号  找到相同版图id并且大于前面的顺序的空格");
        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .isNotNull("escd.slot")
                        .eq("escd.tempering_layout_id", tempering_layout_id)
                        .lt("escd.tempering_feed_sequence", tempering_feed_sequence)
                        .gt("t.remain_width", width)
                        .orderByAsc("escd.tempering_feed_sequence")
        );
        return list;
    }
    @Override
    public List<DownStorageCageDetails> getIsExistIntoCacheByLayout(Integer tempering_layout_id, double width) {
        log.info(" 查询可进此片玻璃的栅格号");
        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .isNotNull("escd.slot")
                        .lt("escd.tempering_layout_id", tempering_layout_id)
                        // 条件 t.remain_width - width > 0
                        .apply("t.remain_width - " + width + " > 0")
                        .orderByDesc("escd.tempering_layout_id, escd.tempering_feed_sequence")
        );
        return list;
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -4,6 +4,8 @@
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.glassinfo.service.GlassInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -15,7 +17,7 @@
/**
 * <p>
 * 前端控制器
 *  前端控制器
 * </p>
 *
 * @author zhoush
@@ -23,6 +25,7 @@
 */
@RestController
@Api(tags = "工位")
@RequestMapping("/api/unLoadGlass")
public class DownWorkstationController {
@@ -30,11 +33,11 @@
    private DownWorkstationService downWorkstationService;
    @Autowired
    private GlassInfoService glassInfoService;
    @ApiOperation("获取工位信息")
    @GetMapping("/getone")
    public ResponseEntity<?> getOneDownWorkstations() {
        try {
            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1, 5);
            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1,5);
            // 构建符合预期格式的响应数据
            Map<String, Object> responseData = new HashMap<>();
            responseData.put("code", 200);
@@ -52,11 +55,7 @@
        }
    }
    @GetMapping("/gettwo")
    public List<DownWorkstation> gettwoDownWorkstations() {
        return downWorkstationService.getoneDownWorkstations(6, 10);
    }
    @ApiOperation("获取流程卡号")
    @GetMapping("/getflowCardId")
    public ResponseEntity<Map<String, Object>> getflowCardId() {
        Map<String, Object> responseData = new HashMap<>();
@@ -75,7 +74,9 @@
    }
    //绑定架子
//绑定架子
@ApiOperation("绑定架子")
    @PostMapping("/updateFlowCardId")
    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody Map<String, Object> requestData) {
        // 从 requestData 中获取传入的 flowCardId
@@ -96,7 +97,7 @@
        return ResponseEntity.ok(responseData);
    }
    @ApiOperation("清除工位信息")
    @PostMapping("/clear")
    public ResponseEntity<Map<String, Object>> clearWorkstationInfo(@RequestBody Map<String, Object> requestData) {
        // 调用 DownWorkstationService 中的方法清除指定工位ID的信息
@@ -113,7 +114,8 @@
            responseData.put("code", 200);
            // 返回处理结果
            return ResponseEntity.ok(responseData);
        } else {
        }
        else {
            // 如果总数量和落架数量不一致,返回错误响应
            Map<String, Object> errorResponse = new HashMap<>();
            errorResponse.put("message", "Total workstations count does not match down workstations count.");
@@ -127,5 +129,9 @@
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java
@@ -21,41 +21,16 @@
@Service
public class DownGlassLogic {
    @Autowired
    private DownGlassInfo downGlassInfo;
    private DownWorkstation downWorkstation;
    private DownGlassInfoMapper downGlassInfoMapper;
    private DownGlassInfoService downGlassInfoService;
    private DownGlassTaskService downGlassTaskService;
    private DownWorkstationMapper downWorkstationMapper;
    private DownWorkstationService downWorkstationService;
    private DownWorkstationTaskService downWorkstationTaskService;
    PlcParameterObject plcread = PLCAutoMes.PlcReadObject;
    /**
     * // 机械手1PLC请求字
     */
    String robot1PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
    /**
     * // 机械手2PLC请求字
     */
    String robot2PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
    /**
     * // 玻璃id
     */
    String glassID = plcread.getPlcParameter("A01Position").getValue();
    String glasswidth = plcread.getPlcParameter("A01Position").getValue();
    String glassheight = plcread.getPlcParameter("A01Position").getValue();
    //
    String glassthickness = plcread.getPlcParameter("A01Position").getValue();
    String pLcwancheng = plcread.getPlcParameter("A01Position").getValue();
    /**
     * // 存放待处理的玻璃信息
     */
    private List<DownGlassInfo> glassList;
    /**
     * 存放玻璃放置在缓存笼中的详细信息
     */
    private List<DownStorageCageDetails> cageDetailsList;
    /**
     * //当下片任务表状态为1时候将数据插入到下片玻璃信息表
@@ -68,7 +43,6 @@
        downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
        downWorkstationTaskService = WebSocketServer.applicationContext.getBean(DownWorkstationTaskService.class);
        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
        downGlassTaskService = WebSocketServer.applicationContext.getBean(DownGlassTaskService.class);
        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
//
@@ -100,7 +74,7 @@
                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
                //更新下片任务表状态为0
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getFlowCardId());
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
                sequence++; // 递增顺序字段值
@@ -126,9 +100,10 @@
                    //更新下片工位表中已落架数量
                    downWorkstationService.updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
                    //更新机械任务表中状态为0
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getFlowCardId());
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
                    //删除下片任务表中的记录
                    downGlassTaskService.deleteTask(downWorkstation.getFlowCardId());
                    downGlassTaskService.deleteTask(downWorkstation.getId());
                }
            }
@@ -142,14 +117,6 @@
    }
    /**
     * @param downWorkstation // 满架拉走 清除流程卡信息
     */
//    public void clearFlowCardId(DownWorkstation downWorkstation) {
//
//        downWorkstationMapper.clearFlowCardId(downWorkstation);
//    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -15,5 +15,5 @@
public interface DownWorkstationTaskService extends IService<DownWorkstationTask> {
    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
    void updateTaskStateToZero(String flowCardId);
    void updateTaskStateToZero(long Id);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.entity.DownWorkstationTask;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
@@ -13,6 +14,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service
public class DownWorkstationServiceImpl extends ServiceImpl<DownWorkstationMapper, DownWorkstation> implements DownWorkstationService {
@@ -22,7 +24,8 @@
    private DownWorkstationTaskMapper downWorkstationTaskMapper;
    //    @Override
//    @Override
//    public List<DownWorkstation> gettwoDownWorkstations() {
//        return downWorkstationMapper.getDownWorkstationsInRange(6,10);
//    }
@@ -43,7 +46,7 @@
//        return totalQuantity != null ? totalQuantity : 0;
//    }
    //    @Override
//    @Override
//    public int getRacksNumber(int workstationId) {
//        Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId);
//        return racksNumber != null ? racksNumber : 0;
@@ -58,8 +61,7 @@
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getRacksnumber() : 0;
    }
    //根据条件获取工位玻璃信息
//根据条件获取工位玻璃信息
    @Override
    public List<DownWorkstation> getoneDownWorkstations(int startId, int endId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
@@ -75,9 +77,10 @@
    @Override
    public void updateracksnumber(String flowCardId, int racksNumber) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("racks_number", racksNumber).eq("flow_card_id", flowCardId);
        updateWrapper.set("racks_number",racksNumber).eq("flow_card_id", flowCardId);
        baseMapper.update(null, updateWrapper);
    }
    @Override
@@ -102,6 +105,13 @@
    }
    @Transactional
    public void crossDatabaseQuery() {
        // 从 MySQL 数据库中查询数据,只返回一条符合条件的数据
@@ -110,7 +120,10 @@
        // 从 SQL Server 数据库中查询数据
        List<DownWorkstationTask> downWorkstationTasks = downWorkstationTaskMapper.selectList();
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -33,9 +33,9 @@
    }
    @Override
    public void updateTaskStateToZero(String flowCardId) {
    public void updateTaskStateToZero(long id) {
        UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("state", 0).eq("flow_card_id", flowCardId);
        updateWrapper.set("state", 0).eq("id", id);
        baseMapper.update(null, updateWrapper);
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -29,12 +29,6 @@
    port: 6379
    password: 123456
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*.xml
  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 设置 MyBatis 日志级别为 ERROR
logging:
  level:
    com:
      baomidou:
        mybatisplus=ERROR:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
New file
@@ -0,0 +1,54 @@
package mes;
import com.mes.UnLoadGlassApplication;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.service.impl.DownStorageCageServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * @Author : zhoush
 * @Date: 2024/3/27 16:37
 * @Description:
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = UnLoadGlassApplication.class)
public class UnloadGlassModuleApplicationTest {
    @Autowired
    DownStorageCageServiceImpl downStorageCageServiceImpl;
    @Test
    public void testFindPath() {
        log.info("完整路径:{}", Arrays.asList("123"));
    }
    @Test
    public void testCacheGlass() {
        List<Map> map= downStorageCageServiceImpl.getCacheInfo();
        log.info("笼内信息:{}", Arrays.asList(map));
    }
    @Test
    public void testselectCacheEmpty() {
        List<DownStorageCageDetails> map= downStorageCageServiceImpl.getCacheLeisure();
        log.info("笼内空格:{}", Arrays.asList(map));
    }
    @Test
    public void testgetCacheOut() {
        List<DownStorageCageDetails> map= downStorageCageServiceImpl.getCacheOut(1,5);
        log.info("根据传入的工位查询符合按照顺序和大小出片的小片:{}", Arrays.asList(map));
    }
}
hangzhoumesParent/moduleService/pom.xml
@@ -68,6 +68,12 @@
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>