From faebd4059dc00b516e40190ab386d81073b75345 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期二, 18 六月 2024 14:00:06 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
---
UI-Project/src/views/User/rolelist.vue | 6
UI-Project/src/views/Returns/returns.vue | 2
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java | 25 +
UI-Project/src/views/Caching/cachingbefore.vue | 2
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java | 0
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java | 0
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java | 4
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java | 23
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 373 ++++++++---------
UI-Project/src/views/User/permissions.vue | 24 -
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java | 9
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/SlotSequenceDTO.java | 38 +
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml | 76 +++
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java | 5
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java | 34 +
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml | 4
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java | 0
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java | 0
UI-Project/src/views/Slicecage/slicecage.vue | 453 +++++++++++++--------
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java | 20
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java | 30 +
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java | 2
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java | 2
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | 64 +-
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java | 23 +
25 files changed, 773 insertions(+), 446 deletions(-)
diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index 0fa7fac..3672600 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -37,7 +37,7 @@
}
});
const toggleEnableState = async (row) => {
- const newState = row.enable_state === 1 ? 0 : 1;
+ const newState = row.enable_state === 1 ? 0 : 1;
// 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵�侊紙杩欓噷鐪佺暐浜嗗疄闄呯殑璇锋眰閫昏緫锛�
const response = await request.post('/cacheGlass/edgStorageCage/updateEdgStorageCage', { id: row.id, enablestate: newState });
if (response.code === 200) {
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index da044de..6c8b687 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -3,49 +3,55 @@
import {reactive} from "vue";
import {useRouter} from "vue-router"
import request from "@/utils/request"
-// import { ref } from 'vue'
import { ref, onMounted, onBeforeUnmount } from 'vue';
import { WebSocketHost ,host} from '@/utils/constants'
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
const dialogFormVisible = ref(true)
const dialogFormVisiblea = ref(false)
const dialogFormVisibleb = ref(false)
-const width = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤
-const height = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤
+const width = ref();
+const height = ref();
const adjustedRects = ref([]);
+const adjustedRects2 = ref([]);
const adjustedRectsa = ref([]);
const adjustedRectsb = ref([]);
-// 杩涚倝涓�
-
const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-
const handleMessage = (data) => {
- // 鏇存柊 tableData 鐨勬暟鎹�
+// 杩涚倝涓�
adjustedRects.value = data.intoGlass[0].map(rect => ({
- ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�
- xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3
- ycoordinate: rect.ycoordinate * 0.5,
- width: rect.width * 0.4,
- height: rect.height * 0.4,
+ ...rect,
+ xcoordinate: rect.xCoordinate * 0.3,
+ ycoordinate: rect.ycoordinate * 0.3,
+ width: rect.width * 0.2,
+ height: rect.height * 0.2,
+ widtha: rect.width,
+ heighta: rect.height,
+ }));
+ adjustedRects2.value = data.intoGlass2[0].map(rect => ({
+ ...rect,
+ xcoordinate: rect.xCoordinate * 0.3,
+ ycoordinate: rect.ycoordinate * 0.3,
+ width: rect.width * 0.2,
+ height: rect.height * 0.2,
widtha: rect.width,
heighta: rect.height,
}));
console.log(data.intoGlass[0]);
+ // 杩涚倝鍓�
adjustedRectsa.value = data.waitingGlass[0].map(rect => ({
...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�
- xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3
+ xcoordinate: rect.xCoordinate * 0.5,
ycoordinate: rect.ycoordinate * 0.5,
width: rect.width * 0.4,
height: rect.height * 0.4,
widtha: rect.width,
heighta: rect.height,
state: rect.state
- }));
-
+ }));
+ // 宸插嚭鐐�
adjustedRectsb.value = data.outGlass[0].map(rect => ({
...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�
- xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3
+ xcoordinate: rect.xCoordinate * 0.5,
ycoordinate: rect.ycoordinate * 0.5,
width: rect.width * 0.4,
height: rect.height * 0.4,
@@ -55,18 +61,14 @@
}));
};
onMounted(() => {
- // fetchFlowCardId();
- // fetchTableData(); // 鑾峰彇鏁版嵁
initializeWebSocket(socketUrl, handleMessage);
});
-
onBeforeUnmount(() => {
console.log("鍏抽棴浜�")
closeWebSocket();
});
</script>
-
-<template>
+<template>
<div style="margin-top: 10px;">
<el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">杩涚倝涓�</el-button>
<el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >杩涚倝鍓�</el-button>
@@ -75,20 +77,18 @@
<el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 700px;" v-loading="loading">
<div style="width: 49%;float: left;background-color: #f4f4f5;height: 650px;">
<el-scrollbar height="630px">
- <div v-for="(group, groupId) in groupedRects" :key="groupId" style="position: relative;">
<div style="position: relative;width: 1400px;">
<div
- v-for="(rect, index) in adjustedRects"
+ v-for="(rect, index) in adjustedRects"
:key="index"
- class="rect"
+ class="rect"
:style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }"
>
<div class="centered-text">
<div >{{ rect.flowcardId }}</div>
<div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
</div>
- </div>
- </div>
+ </div>
</div>
</el-scrollbar>
</div>
@@ -96,23 +96,23 @@
<el-scrollbar height="630px">
<div style="position: relative;width: 1400px;">
<div
- v-for="(rect, index) in adjustedRects"
+ v-for="(rect, index) in adjustedRects2"
:key="index"
- class="rect"
+ class="rect"
:style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }"
>
<div class="centered-text">
<div >{{ rect.flowcardId }}</div>
<div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
</div>
- </div>
+ </div>
</div>
</el-scrollbar>
</div>
-
</el-card>
</div>
<div v-if="dialogFormVisiblea">
+ <!-- 杩涚倝鍓� -->
<el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
<el-scrollbar height="630px">
<div style="position: relative;width: 1400px;">
@@ -133,6 +133,7 @@
</el-card>
</div>
<div v-if="dialogFormVisibleb">
+ <!-- 宸插嚭鐐� -->
<el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
<el-scrollbar height="630px">
<div style="position: relative;width: 1400px;">
@@ -154,7 +155,6 @@
</div>
</div>
</template>
-
<style scoped>
#boxa{
border: 1px solid rgb(119, 116, 116);
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index 84df863..f1b1f89 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -795,7 +795,7 @@
<div id="dt" style="font-size: 15px;">
<div>
<el-form-item label="鏁伴噺锛�" :required="true" style="width: 14vw;">
- <el-input v-model="number" autocomplete="off" />
+ <el-input placeholder="璇疯緭鍏ユ暟閲�" v-model="number" autocomplete="off" />
</el-form-item></div></div>
</el-col>
</el-row>
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 068a4da..15839b1 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -3,6 +3,7 @@
import {reactive} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
+import request from "@/utils/request"
import { WebSocketHost ,host} from '@/utils/constants'
import { ref, onMounted , onBeforeUnmount} from "vue";
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
@@ -17,8 +18,19 @@
const tableDatad = ref([])
const tableDatae = ref([])
const adjustedRects = ref([]);
-const height = ref([]);
-
+// const height = ref([]);
+const add = ref(false)
+const flowCardId = ref('');
+const gap = ref('');
+const glassId = ref('');
+const glassType = ref('');
+const height = ref('');
+const sequence = ref('');
+const state = ref('');
+const temperingFeedSequence = ref('');
+const temperingLayoutId = ref('');
+const thickness = ref('');
+const width = ref('');
const carposition1 = ref(60);
const carposition2 = ref(220);
const carposition3 = ref(60);
@@ -49,30 +61,6 @@
const currentPage4 = ref(4)
const pageSize4 = ref(100)
-
-const dialogForm = () => {
- ElMessageBox.confirm(
- '纭畾瑕佹�ュ仠鍚�?',
- '鎻愮ず',
- {
- confirmButtonText: '鏄�',
- cancelButtonText: '鍚�',
- type: 'warning',
- }
- )
- .then(() => {
- ElMessage({
- type: 'success',
- message: '鎬ュ仠鎴愬姛锛�',
- })
- })
- .catch(() => {
- ElMessage({
- type: 'info',
- message: '鎬ュ仠澶辫触',
- })
- })
-}
var timer=setInterval(() => {
// console.log(million.value,million1.value);
@@ -175,7 +163,7 @@
}
}, 1000);
-
+
const getTableRow = (row,type) =>{
switch (type) {
case 'edit' :{
@@ -189,7 +177,90 @@
}
}
}
-
+const handleBindRack = (row) => {
+ add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+// 娣诲姞
+const handleConfirm = async () => {
+ try {
+ const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/insertBigStorageCageDetails', {
+ flowCardId: flowCardId.value,
+ gap: gap.value,
+ glassId: glassId.value,
+ glassType: glassType.value,
+ height: height.value,
+ sequence: sequence.value,
+ state: state.value,
+ temperingFeedSequence: temperingFeedSequence.value,
+ temperingLayoutId: temperingLayoutId.value,
+ thickness: thickness.value,
+ width: width.value,
+ });
+ if (response.code == 200) {
+ // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+ ElMessage.success(response.message);
+ add.value = false;
+ tableData.value = response.data;
+ } else {
+ // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+ ElMessage.error(response.msg);
+ }
+ } catch (error) {
+ // 澶勭悊閿欒
+ console.error(error);
+ }
+};
+// 鏄惁绂佺敤
+const toggleEnableState = async (row) => {
+ const newState = row.enableState === 1 ? 0 : 1;
+ console.log(row.slot);
+ console.log(row.enableState);
+ var url="/cacheVerticalGlass/bigStorageCage/updateStorageCageDisabled?slot="+row.slot + "&enableState=" + newState;
+ console.log(url);
+ const response = await request.get(url)
+ if (response.code === 200) {
+ ElMessage.success(response.message);
+ } else {
+ ElMessage.error(response.message);
+ }
+ row.enableState = newState;
+};
+// const tableData = ref([
+// // ...鎮ㄧ殑琛ㄦ牸鏁版嵁
+// id:
+// deviceId slot enableState remainWidth
+
+// ]);
+ // 鍒犻櫎
+ const opena = async(row) => {
+ try {
+ const confirmResult = await ElMessageBox.confirm(
+ '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
+ '鎻愮ず',
+ {
+ confirmButtonText: '鏄�',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ }
+ );
+ if (confirmResult === 'confirm') {
+ // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛
+ const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/deleteBigStorageCageDetails", {
+ menuId: row.id,
+ })
+ if (response.code === 200) {
+ ElMessage.success(response.message);
+ } else {
+ // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛
+ ElMessage.error(response.msg);
+ // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message);
+ }
+ }
+ } catch (error) {
+ // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑
+ console.error('鍙戠敓閿欒:', error);
+ }
+};
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`;
// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
@@ -278,13 +349,8 @@
<template>
<div style="height: 700px;">
- <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisible = true">鎵嬪姩杩涚墖</el-button> -->
<el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true">鐞嗙墖绗间俊鎭�</el-button>
<el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">鍑虹墖闃熷垪</el-button>
- <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">缁堟杩涚墖</el-button> -->
- <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">缁堟鍑虹墖</el-button> -->
- <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger" @click="dialogForm">杞�ュ仠</el-button> -->
-
<el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
<div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
<el-table height="100%" ref="table"
@@ -313,7 +379,7 @@
@selection-change="handleSelectionChange"
:data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
<el-table-column prop="bigStorageCageFeedTask.glassId" align="center" label="杩涚墖鐜荤拑ID" min-width="80" />
- <el-table-column prop="bigStorageCageFeedTask.tragetSlot" align="center" label="鐩爣浣嶇疆" min-width="120" />
+ <el-table-column prop="bigStorageCageFeedTask.targetSlot" align="center" label="鐩爣浣嶇疆" min-width="120" />
<!-- <el-table-column prop="task_type" align="center" label="浠诲姟绫诲瀷" min-width="120" />娌℃湁杩斿洖瀛楁 -->
<el-table-column prop="bigStorageCageFeedTask.taskState" align="center" label="浠诲姟鐘舵��" min-width="120">
<template #default="scope">
@@ -398,152 +464,192 @@
<div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;background-color: #409EFF;">
</div> -->
</div>
-
</div>
-<el-dialog v-model="dialogFormVisible" top="12vh" width="85%" title="璇风‘璁ょ幓鐠冧俊鎭�" >
- <div style="margin-left: 50px;margin-bottom: 10px;">
- <div style="display: flex;">
- <p style="margin-top: 4px;">纭鐘舵��:</p>
- <el-button style="margin-left: 10px;size: mini;" type="success">鍏佽</el-button>
- <el-button style="margin-left: 10px;size: mini;" type="danger">涓嶅厑璁�</el-button>
- <p style="margin-left: 60px;margin-top: 4px;">褰撳墠鐘舵��:</p>
- <div style="margin-top: 4px; margin-left: 10px;">鎵嬪姩</div>
- <el-button style="margin-left: 10px;size: mini;" type="primary">鍒囨崲</el-button>
- <el-input placeholder="璇疯緭鍏ョ幓鐠僫d" style="width: 180px;size: mini;margin-left: 60px;"></el-input>
- <el-button style="margin-left: 10px;size: mini;" type="primary">娣诲姞</el-button>
- <p style="margin-left: 60px;margin-top: 4px;">鐜荤拑id:</p>
- <el-input style="width: 180px;size: mini;margin-left: 30px;"></el-input>
- </div>
- <div style="display: flex;">
- <p style="margin-left: 290px;margin-top: 20px;font-weight: bold;">涓婄墖浣�</p>
- <p style="margin-left: 630px;margin-top: 20px;font-weight: bold;">鎵爜浣�</p>
- </div>
- <div style="display: flex;">
- <div style="margin-top: 20px;">
- <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
- <el-form label-position="right" label-width="90px">
- <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="闀匡細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="瀹斤細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
- </el-form-item>
- </el-form>
+ <el-dialog v-model="add" top="20vh" width="60%" title="娣诲姞鐞嗙墖绗间俊鎭�" >
+ <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+ <el-form size="mini" label-width="150px">
+ <el-form label-width="150px" label-position="right">
+ <el-row style="margin-top: -15px;margin-bottom: -2px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="鐜荤拑ID锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ョ幓鐠僆D" v-model="glassId" autocomplete="off" />
+ </el-form-item>
+ </div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item label="灏忕墖鍦ㄦ牸鍐呯殑椤哄簭锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ュ皬鐗囧湪鏍煎唴鐨勯『搴�" v-model="sequence" autocomplete="off" />
+ </el-form-item></div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="娴佺▼鍗″彿锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ユ祦绋嬪崱鍙�" v-model="flowCardId" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item label="鐜荤拑绫诲瀷锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ョ幓鐠冪被鍨�" v-model="glassType" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="瀹斤細" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ュ" v-model="width" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item label="楂橈細" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ラ珮" v-model="height" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="鍘氬害锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ュ帤搴�" v-model="thickness" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item label="閽㈠寲鐗堝浘ID锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ラ挗鍖栫増鍥綢D" v-model="temperingLayoutId" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="閽㈠寲鐗堝浘鐗囧簭锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ラ挗鍖栫増鍥剧墖搴�" v-model="temperingFeedSequence" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ <el-col :span="9">
+ <div id="dta" style="font-size: 15px;">
+ <div>
+ <el-form-item label="鍚敤鐘舵�侊細" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ュ惎鐢ㄧ姸鎬�" v-model="state" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6">
+ <div id="dt" style="font-size: 15px;">
+ <div>
+ <el-form-item label="鐜荤拑闂撮殭锛�" :required="true" style="width: 20vw;">
+ <el-input placeholder="璇疯緭鍏ョ幓鐠冮棿闅�" v-model="gap" autocomplete="off" />
+ </el-form-item></div></div>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-form>
+ </div>
+ <template #footer>
+ <div id="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">
+ 纭
+ </el-button>
+ <el-button @click="add = false">鍙栨秷</el-button>
</div>
- <div style="margin-top: 20px;">
- <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
- <el-form label-position="right" label-width="90px">
- <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="闀匡細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="瀹斤細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
- </el-form-item>
- </el-form>
- </div>
- <div style="margin-top: 20px;">
- <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">淇敼淇℃伅</p>
- <el-form label-position="right" label-width="90px">
- <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="闀匡細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="瀹斤細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
- </el-form-item>
- </el-form>
- </div>
- <div style="margin-top: 20px;">
- <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">褰撳墠淇℃伅</p>
- <el-form label-position="right" label-width="90px">
- <el-form-item style="width: 20vw" label="鐜荤拑id锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ幓鐠僫d"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="璁㈠崟缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="鍒楄〃缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ垪琛ㄧ紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="绠卞瓙缂栧彿锛�">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ョ瀛愮紪鍙�"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="闀匡細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ラ暱"></el-input>
- </el-form-item>
- <el-form-item style="width: 20vw" label="瀹斤細">
- <el-input style="width: 180px" size="mini" placeholder="璇疯緭鍏ュ"></el-input>
- </el-form-item>
- </el-form>
- </div>
- </div>
- </div>
- <template #footer>
- <div id="dialog-footer">
- <el-button type="primary" @click="dialogFormVisible = false">
- 纭
- </el-button>
- <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
- </div>
- </template>
-</el-dialog>
-<el-dialog v-model="dialogFormVisiblea" top="10vh" width="85%" title="鐞嗙墖绗间俊鎭�" >
- <!-- <el-input placeholder="璇疯緭鍏ュ伐绋嬪彿" style="width: 180px;size: mini;"></el-input> -->
- <!-- <el-button style="margin-left: 10px;size: mini;" type="primary">鏌ヨ</el-button> -->
- <el-table ref="table" style="margin-top: 20px;height: 500px;"
- @selection-change="handleSelectionChange"
- :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
- <el-table-column prop="id" align="center" label="澶х悊鐗囩琛↖D" min-width="80" />
- <el-table-column prop="deviceId" align="center" label="鐞嗙墖绗煎彿" min-width="120" />
- <el-table-column prop="slot" align="center" label="鏍呮牸鍙�" min-width="120" />
+ </template>
+ </el-dialog>
+<el-dialog v-model="dialogFormVisiblea" top="5vh" width="90%" title="鐞嗙墖绗间俊鎭�" >
+ <el-table
+ :data="tableData"
+ height="600"
+ @expand-change="handleExpandChange"
+ row-key="id"
+ default-expand-all
+ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
+ >
+ <el-table-column type="expand">
+ <template #default="props">
+ <div v-if="props.row.bigStorageCageDetails && props.row.bigStorageCageDetails.length">
+ <el-table
+ :data="props.row.bigStorageCageDetails"
+ border
+ style="width: 100%;margin-left: 20px;"
+ row-key="id"
+ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
+ >
+ <!-- <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/> -->
+ <el-table-column prop="glassId" label="鐜荤拑ID" align="center" min-width="100"/>
+ <el-table-column prop="sequence" align="center" label="灏忕墖鍦ㄦ牸鍐呯殑椤哄簭" min-width="120" />
+ <el-table-column prop="flowCardId" align="center" label="娴佺▼鍗″彿" min-width="120" />
+ <el-table-column prop="glassType" align="center" label="鐜荤拑绫诲瀷" min-width="100" />
+ <el-table-column prop="width" align="center" label="瀹�" min-width="80" />
+ <el-table-column prop="height" align="center" label="楂�" min-width="80" />
+ <el-table-column prop="thickness" align="center" label="鍘氬害" min-width="80" />
+ <el-table-column prop="temperingLayoutId" align="center" label="閽㈠寲鐗堝浘ID" min-width="100" />
+ <el-table-column prop="temperingFeedSequence" align="center" label="閽㈠寲鐗堝浘鐗囧簭" min-width="120" />
<el-table-column
align="center"
+ label="鍚敤鐘舵��"
+ min-width="80"
+ prop="state"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusType(scope.row.state)">
+ {{ getStatusText(scope.row.state) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="gap" align="center" label="鐜荤拑闂撮殭" min-width="80" />
+ <el-table-column fixed="right" label="鎿嶄綔" align="center" min-width="180">
+ <template #default="scope">
+ <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">鐮存崯</el-button>
+ <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button>
+ <el-button size="mini" type="text" plain @click="opena(scope.row)">鍑虹墖</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="id" label="澶х悊鐗囩琛↖D" align="center" min-width="100"/>
+ <el-table-column prop="deviceId" align="center" label="鐞嗙墖绗煎彿" min-width="150" />
+ <el-table-column prop="slot" align="center" label="鏍呮牸鍙�" min-width="150" />
+ <el-table-column
+ align="center"
label="鍚敤鐘舵��"
min-width="80"
prop="enableState"
>
<template #default="scope">
- <el-tag :type="getStatusType(scope.row.enableState)">
- {{ getStatusText(scope.row.enableState) }}
- </el-tag>
- </template>
+ <el-tag
+ :type="scope.row.enableState === 1 ? 'success' : 'danger'"
+ @click="toggleEnableState(scope.row)"
+ >
+ {{ scope.row.enableState === 1 ? '鍚敤' : '绂佺敤' }}
+ </el-tag>
+ </template>
</el-table-column>
<el-table-column prop="remainWidth" align="center" label="鍓╀綑瀹藉害" min-width="120" />
+
+ <el-table-column fixed="right" label="鎿嶄綔" align="center">
+ <template #default="scope">
+ <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">娣诲姞</el-button>
+ </template>
+ </el-table-column>
</el-table>
<div id="demo-pagination-block">
<el-pagination
@@ -562,23 +668,21 @@
</div>
</el-dialog>
<el-dialog v-model="dialogFormVisibleb" top="10vh" width="85%" title="鍑虹墖闃熷垪" >
- <div style="display: flex;">
+ <!-- <div style="display: flex;">
<p style="margin-top: 3px;">闃熷垪鐘舵�侊細</p>
<p style="margin-top: 3px;">寮�濮�</p>
<el-button style="margin-left: 10px;size: mini;" type="danger">鍋滄</el-button>
<el-button style="margin-left: 10px;size: mini;" type="primary">娣诲姞</el-button>
- </div>
+ </div> -->
<el-table ref="table" style="margin-top: 20px;height: 500px;"
:data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
<el-table-column prop="id" fixed align="center" label="閽㈠寲灏忕墖淇℃伅琛╥d" min-width="150"/>
- <!-- <el-table-column prop="glass_id" align="center" label="鐜荤拑id" min-width="120" /> -->
<el-table-column prop="flowcardId" fixed align="center" label="娴佺▼鍗�" min-width="120" />
<el-table-column prop="glassType" align="center" label="娴佺▼鍗$幓鐠冪被鍨�" min-width="150" />
<el-table-column prop="width" align="center" label="瀹�" min-width="80" />
<el-table-column prop="height" align="center" label="楂�" min-width="80" />
<el-table-column prop="thickness" align="center" label="鍘氬害" min-width="80" />
<el-table-column prop="filmsid" align="center" label="鑶滅郴" min-width="80" />
- <!-- <el-table-column prop="ishorizontal" align="center" label="閽㈠寲鏄惁鎺ュ彈妯斁" min-width="150" /> -->
<el-table-column
align="center"
label="閽㈠寲鏄惁鎺ュ彈妯斁"
@@ -596,7 +700,6 @@
<el-table-column prop="xCoordinate" align="center" label="x鍧愭爣" min-width="80" />
<el-table-column prop="yCoordinate" align="center" label="y鍧愭爣" min-width="80" />
<el-table-column prop="angle" align="center" label="鏃嬭浆瑙掑害锛堥�嗘椂閽堬級" min-width="150" />
- <!-- <el-table-column prop="state" align="center" label="鐘舵��" min-width="80" /> -->
<el-table-column
align="center"
label="鐘舵��"
@@ -611,7 +714,7 @@
</el-table-column>
<el-table-column fixed="right" label="鎿嶄綔" align="center" width="150">
<template #default="scope">
- <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">娣诲姞</el-button>
+ <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">鐮存崯</el-button>
<el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">鍒犻櫎</el-button>
</template>
</el-table-column>
diff --git a/UI-Project/src/views/User/permissions.vue b/UI-Project/src/views/User/permissions.vue
index 637eb78..80cff3d 100644
--- a/UI-Project/src/views/User/permissions.vue
+++ b/UI-Project/src/views/User/permissions.vue
@@ -97,7 +97,6 @@
parentId: parentId.value,
url: url.value,
});
-
if (response.code == 200) {
// 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
ElMessage.success(response.message);
@@ -117,7 +116,7 @@
const opena = async(row) => {
try {
const confirmResult = await ElMessageBox.confirm(
- '鏄惁鍒犻櫎璇ョ敤鎴�?',
+ '鏄惁鍒犻櫎璇ヨ彍鍗�?',
'鎻愮ず',
{
confirmButtonText: '鏄�',
@@ -228,26 +227,7 @@
<el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button>
</template>
</el-table-column>
- </el-table>
- <!-- <el-table height="240" ref="table"
- @selection-change="handleSelectionChange"
- :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
- <el-table-column prop="menuName" align="center" label="鑿滃崟鏍�" min-width="180" />
- <el-table-column align="center" label="閾炬帴" min-width="180">
- <template #default="scope">
- <el-tag v-for="role in scope.row.children">
- {{role.url}}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="id" align="center" label="鎺掑簭" min-width="180" />
- <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
- <template #default="scope">
- <el-button size="mini" type="text" plain @click="adda = true">缂栬緫</el-button>
- <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table> -->
+ </el-table>
</div>
</el-card>
</div>
diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue
index 81ec996..abbe82c 100644
--- a/UI-Project/src/views/User/rolelist.vue
+++ b/UI-Project/src/views/User/rolelist.vue
@@ -105,7 +105,7 @@
const opena = async(row) => {
try {
const confirmResult = await ElMessageBox.confirm(
- '鏄惁鍒犻櫎璇ョ敤鎴�?',
+ '鏄惁鍒犻櫎璇ヨ鑹�?',
'鎻愮ず',
{
confirmButtonText: '鏄�',
@@ -200,7 +200,7 @@
<div id="dt" style="font-size: 15px;">
<div>
<el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw">
- <el-input v-model="name" autocomplete="off" />
+ <el-input placeholder="璇疯緭鍏ヨ鑹�" v-model="name" autocomplete="off" />
</el-form-item></div></div>
</el-col>
</el-row>
@@ -225,7 +225,7 @@
<div id="dt" style="font-size: 15px;">
<div>
<el-form-item label="瑙掕壊锛�" :required="true" style="width: 25vw">
- <el-input v-model="editingUser.name" autocomplete="off" />
+ <el-input placeholder="璇疯緭鍏ヨ鑹�" v-model="editingUser.name" autocomplete="off" />
</el-form-item></div></div>
</el-col>
</el-row>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 73763d9..0c6feb0 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -28,11 +28,13 @@
* 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
* 璇嗗埆鍚庢垚鍔熺姸鎬�100
* 鍑虹墖浠诲姟101
+ * 浜哄伐涓嬬墖101
* 鎷胯蛋200
* 鐮存崯201
*/
public static final Integer GLASS_STATE_IN = 100;
public static final Integer GLASS_STATE_OUT = 101;
+ public static final Integer GLASS_STATE_ARTIFICIAL = 102;
public static final Integer GLASS_STATE_TAKE = 200;
public static final Integer GLASS_STATE_DAMAGE = 201;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
similarity index 100%
rename from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/controller/DamageController.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/entity/Damage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
similarity index 100%
rename from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/entity/Damage.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/mapper/DamageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
similarity index 100%
rename from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/mapper/DamageMapper.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
similarity index 100%
rename from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/damage/service/DamageService.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
new file mode 100644
index 0000000..130e515
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mes.damage.service.impl;
+
+import com.mes.damage.entity.Damage;
+import com.mes.damage.mapper.DamageMapper;
+import com.mes.damage.service.DamageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-13
+ */
+@Service
+public class DamageServiceImpl extends ServiceImpl<DamageMapper, Damage> implements DamageService {
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
index 8ec6a5a..9fa339a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
@@ -29,7 +29,7 @@
private Long id;
/**
- * 璁惧id
+ * 宸ョ▼id
*/
private String engineerId;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
index 2c7de7c..9b6ecc4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
@@ -29,8 +29,8 @@
/**
* 澶х悊鐗囩琛╥d
*/
- @ApiModelProperty(value = "澶х悊鐗囩琛╥d", position = 2)
- @TableId(value = "id", type = IdType.AUTO)
+ @ApiModelProperty(value = "澶х悊鐗囩琛╥d", position = 2)
+ @TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index 0acc5f2..490bbbf 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -6,13 +6,11 @@
import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
-import java.util.List;
/**
* <p>
@@ -22,7 +20,6 @@
* @author zhoush
* @since 2024-03-27
*/
-@ApiModel(description = "<p> </p>")
@Api(description = "澶х悊鐗囩璇︽儏")
@Data
@EqualsAndHashCode(callSuper = false)
@@ -116,6 +113,12 @@
private Integer gap;
/**
+ * 宸ョ▼鍙�
+ */
+ @ApiModelProperty(value = "宸ョ▼鍙�")
+ private String engineerId;
+
+ /**
* 杩涚墖浠诲姟
*/
@ApiModelProperty(value = "杩涚墖浠诲姟", position = 16)
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/SlotSequenceDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/SlotSequenceDTO.java
new file mode 100644
index 0000000..f22b64b
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/SlotSequenceDTO.java
@@ -0,0 +1,38 @@
+package com.mes.bigstorage.entity.dto;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/6/13 15:51
+ * @Description:
+ */
+@Data
+public class SlotSequenceDTO {
+ /**
+ * 閽㈠寲鐗堝浘id
+ */
+ private String engineerId;
+
+ /**
+ * 閽㈠寲鐗堝浘id
+ */
+ private Integer temperingLayoutId;
+ /**
+ * 澶х悊鐗囪鎯呬腑鏍煎瓙鍙�
+ */
+ private Integer slot;
+ /**
+ * 鏍煎瓙鍐呯殑鏈�澶у簭鍙�
+ */
+ private Integer maxSequence;
+ /**
+ * 鏍煎瓙鍐呯殑鏈�灏忓簭鍙�
+ */
+ private Integer minSequence;
+
+ /**
+ * 鏍煎瓙鍓╀綑瀹藉害
+ */
+ private Integer remainWidth;
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
new file mode 100644
index 0000000..18d4edb
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
@@ -0,0 +1,30 @@
+package com.mes.bigstorage.entity.dto;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/6/13 15:51
+ * @Description:
+ */
+@Data
+public class TemperingLayoutDTO {
+ /**
+ * 閽㈠寲鐗堝浘id
+ */
+ private String engineerId;
+
+ /**
+ * 閽㈠寲鐗堝浘id
+ */
+ private Integer temperingLayoutId;
+ /**
+ * 褰撳墠鐗堝浘鏁伴噺
+ */
+ private Integer count;
+
+ /**
+ * 褰撳墠鐗堝浘鍗犵敤鏍煎瓙鏁伴噺
+ */
+ private Integer slotCount;
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
index 3b9bb40..da14719 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -1,9 +1,12 @@
package com.mes.bigstorage.mapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.bigstorage.entity.BigStorageCageDetails;
-import feign.Param;
+import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
+import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
@@ -16,4 +19,20 @@
*/
public interface BigStorageCageDetailsMapper extends MPJBaseMapper<BigStorageCageDetails> {
+ /**
+ * 鑾峰彇閽㈠寲鐗堝浘宸茬粡鍒伴綈鐨勫伐绋嬪彿鍙婄増鍥緄d
+ *
+ * @return
+ */
+ TemperingLayoutDTO temperingIsAll();
+
+ /**
+ * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲�
+ *
+ * @return
+ */
+ TemperingLayoutDTO queryTemperingOccupySlot(@Param(value = "count") int count);
+
+
+ List<SlotSequenceDTO> queryGlassMaxAndMin(@Param(value = "engineerId") String engineerId, @Param(value = "temperingLayoutId") Integer temperingLayoutId);
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 64b7ecb..d0d52d2 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
+import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
@@ -39,4 +41,27 @@
* @param glassInfo
*/
BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo);
+
+ /**
+ * 鑾峰彇閽㈠寲鐗堝浘宸茬粡鍒伴綈鐨勫伐绋嬪彿鍙婄増鍥緄d
+ *
+ * @return
+ */
+ TemperingLayoutDTO temperingIsAll();
+
+ /**
+ * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲�
+ *
+ * @return
+ */
+ TemperingLayoutDTO queryTemperingOccupySlot();
+
+ /**
+ * 鑾峰彇鐗堝浘姣忎釜鏍煎瓙鐨勬渶澶ф渶灏忓簭鍙�
+ *
+ * @param engineerId
+ * @param temperingLayoutId
+ * @return
+ */
+ List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index ebaec10..13e1d47 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -7,6 +7,8 @@
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
+import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
@@ -20,6 +22,7 @@
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -48,6 +51,9 @@
private BigStorageCageService bigStorageCageService;
@Resource
private GlassInfoMapper glassInfoMapper;
+
+ @Value("${mes.minCount}")
+ private int minCount;
/**
* 鏌ヨ杩�/鍑虹墖浠诲姟
@@ -214,19 +220,17 @@
@Override
public BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) {
-// MPJLambdaWrapper<BigStorageDTO> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class)
-// .selectAll(BigStorageDTO.class)
-// .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
-// .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
-// .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1)
-// .last("limit 1");
BigStorageDTO bigStorageDTO = null;
MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class)
.selectAsClass(BigStorageCage.class, BigStorageDTO.class)
.leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
.eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
- .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1)
.last("limit 1");
+ if (glassInfo.getTemperingLayoutId() == 0) {
+ wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
+ } else {
+ wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
+ }
bigStorageDTO = bigStorageCageService.selectJoinOne(BigStorageDTO.class, wrapper);
if (null != bigStorageDTO) {
return bigStorageDTO;
@@ -253,4 +257,20 @@
}
+
+ @Override
+ public TemperingLayoutDTO temperingIsAll() {
+ return baseMapper.temperingIsAll();
+ }
+
+
+ @Override
+ public TemperingLayoutDTO queryTemperingOccupySlot() {
+ return baseMapper.queryTemperingOccupySlot(minCount);
+ }
+
+ @Override
+ public List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId) {
+ return baseMapper.queryGlassMaxAndMin(engineerId, temperingLayoutId);
+ }
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
index a9959d5..3ee5490 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
@@ -2,16 +2,16 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+
/**
* <p>
- *
+ *
* </p>
*
* @author zhoush
@@ -24,11 +24,23 @@
private static final long serialVersionUID = 1L;
+ public BigStorageCageOutTask() {
+ }
+
+ public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, Integer trainNumber, Integer serialNumber, Integer taskState) {
+ this.glassId = glassId;
+ this.startSlot = startSlot;
+ this.endSlot = endSlot;
+ this.trainNumber = trainNumber;
+ this.serialNumber = serialNumber;
+ this.taskState = taskState;
+ }
+
/**
* 涓婚敭id
*/
- @ApiModelProperty(value = "涓婚敭id", position = 2)
- @TableId(value = "id", type = IdType.AUTO)
+ @ApiModelProperty(value = "涓婚敭id", position = 2)
+ @TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
@@ -66,6 +78,5 @@
*/
@ApiModelProperty(value = "浠诲姟鐘舵��", position = 8)
private Integer taskState;
-
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 02228b4..3e689cb 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -3,11 +3,14 @@
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
+import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
-import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
+import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
import com.mes.common.S7object;
@@ -17,6 +20,7 @@
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.service.TemperingGlassInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -24,15 +28,12 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
@@ -42,8 +43,6 @@
@Slf4j
public class PlcStorageCageTask {
- @Resource
- private BigStorageCageService bigStorageCageService;
@Resource
private BigStorageCageDetailsService bigStorageCageDetailsService;
@Resource
@@ -57,148 +56,45 @@
@Resource
private TemperingGlassInfoService temperingGlassInfoService;
+ private static final String REQUEST_WORD = "1";
+
@Value("${mes.sequence.order}")
private boolean sequenceOrder;
- public static boolean bigStorageCageFullAlarm = false;
+ @Value("${mes.slotWidth}")
+ private Integer slotWidth;
- private int line1Time = 0;
- private int line2Time = 0;
-
- /**
- * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
- * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
- */
-// @Scheduled(fixedDelay = 5000)
-// public void plcStorageCageTask() throws InterruptedException {
-//
-// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-// try {
-//
-// String plcFeedGlassid = "";
-// String plcFeedReqLine = "0";
-// if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) {
-// plcFeedReqLine = "1";
-// plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue();
-// }
-// if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) {
-// plcFeedReqLine = "2";
-// plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue();
-// }
-// line1Time += 1;
-// line2Time += 1;
-//
-// if (!("0".equals(plcFeedReqLine))) {
-// log.info("1銆丳lc杩涚墖璇锋眰鏃�");
-// BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
-// GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid);
-// log.info("2銆佹牴鎹幓鐠僫d鑾峰彇鐜荤拑淇℃伅" + glassInfo);
-// if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) {
-// BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
-// if (slotInfo != null) {
-// int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine);
-// log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�" + taskType);
-// bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType);
-// log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�");
-// bigStorageCageFullAlarm = false;
-// } else {
-// bigStorageCageFullAlarm = true;
-// }
-// } else {
-// log.info("褰撳墠鐜荤拑瀹藉害涓嶅涓婅溅" + glassInfo);
-// if (!("1".equals(plcFeedReqLine))) {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
-// } else {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
-// }
-// }
-// } else {
-// List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1);
-// log.info("5銆佹煡璇换鍔¤〃鏄惁鏈夊凡缁忓畬鎴愮殑杩涚墖浠诲姟" + bigStorageCageFeedTaskList.size());
-// for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList
-// ) {
-// BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
-// bigStorageCageDetails.setId(bigStorageCageFeedTask.getId());
-// bigStorageCageDetails.setState(1);
-// bigStorageCageDetailsService.updateById(bigStorageCageDetails);
-// log.info("6銆佷慨鏀圭悊鐗囩璇︽儏鐜荤拑鐘舵��");
-// bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask);
-// log.info("7銆佸垹闄ゅ凡缁忓畬鎴愮殑杩涚墖浠诲姟");
-// }
-// //鍚姩闃堝��
-// if (line1Time >= 300) {
-// if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
-// }
-// }
-// if (line2Time >= 300) {
-// if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
-// }
-// }
-// }
-//
-// //鏌ヨ鍑虹墖琛ㄦ槸鍚︽湁浠诲姟鏈畬鎴愮殑浠诲姟
-// List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0);
-// if (bigStorageCageOutTask.size() == 0) {
-// boolean result = bigStorageCageService.outGlass();
-// log.info("8銆佹病鏈夋湭瀹屾垚浠诲姟鏃惰皟鐢ㄥ嚭鐗囨帴鍙�");
-// if (result == false) {
-// temperingGlassInfoService.schedulingTask();
-// }
-// }
-// bigStorageCageOutTaskService.updateOutTask();
-// log.info("9銆佹牴鎹换鍔¤〃鐘舵�佷慨鏀归挗鍖栧皬鐗囪〃浠诲姟鐘舵��");
-//
-// //鏉ヤ笉鍙婇�佹椂鐩存帴璧�
-// String line = Integer.toString(edgGlassTaskInfoService.startTask());
-//
-// if (!(line.equals(plcFeedReqLine))) {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
-// } else {
-// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
-// }
-//
-//
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
@Scheduled(fixedDelay = 5000)
public void plcToHomeEdgScan() {
PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
- String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue();
+ String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
- String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue();
+ String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
- d01Request, d01ID1, d04Request, d04ID1);
- if (!"1".equals(d01Request) && !"1".equals(d04Request)) {
+ d01Request, d01Id, d04Request, d04Id);
+ if (!REQUEST_WORD.equals(d01Request) && !REQUEST_WORD.equals(d04Request)) {
log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
return;
}
- // 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅
- String d02GoAdress = plcParameterObject.getPlcParameter("D02Go").getAddress();
- // 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅
- String d05GoAdress = plcParameterObject.getPlcParameter("D05Go").getAddress();
Boolean flag01 = Boolean.FALSE;
Boolean flag04 = Boolean.FALSE;
//鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�
- if ("1".equals(d01Request)) {
- flag01 = judgeGlassTypeStatus(d01ID1, Const.A09_OUT_TARGET_POSITION);
+ if (REQUEST_WORD.equals(d01Request)) {
+ flag01 = judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION);
}
- if ("1".equals(d04Request)) {
- flag04 = judgeGlassTypeStatus(d04ID1, Const.A10_OUT_TARGET_POSITION);
+ if (REQUEST_WORD.equals(d04Request)) {
+ flag04 = judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION);
}
if (flag01 && flag04) {
//姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
Integer startLine = getStartLine();
//璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
- computeTargetByLine(startLine, d02GoAdress, d05GoAdress);
+ computeTargetByLine(startLine);
} else if (flag01 || flag04) {
Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
//璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
- computeTargetByLine(startLine, d02GoAdress, d05GoAdress);
+ computeTargetByLine(startLine);
} else {
log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
}
@@ -208,21 +104,21 @@
public void plcToHomeEdgFreeCarTask() {
PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
String freeCar = plcParameterObject.getPlcParameter("freeCar").getValue();
- if ("1".equals(freeCar)) {
+ if (REQUEST_WORD.equals(freeCar)) {
log.info("澶ц溅闈炵┖闂�");
return;
}
String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
- String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue();
+ String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
- String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue();
+ String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
- d01Request, d01ID1, d04Request, d04ID1);
+ d01Request, d01Id, d04Request, d04Id);
//涓ゆ潯绾块兘鏈夎繘鍗ц浆绔嬩换鍔★紝鐩存帴缁撴潫
if (Const.BIG_STORAGE_REQUEST_IN.equals(d01Request)
&& Const.BIG_STORAGE_REQUEST_IN.equals(d04Request)
- && StringUtils.isNotBlank(d01ID1)
- && StringUtils.isNotBlank(d04ID1)) {
+ && StringUtils.isNotBlank(d01Id)
+ && StringUtils.isNotBlank(d04Id)) {
log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�");
return;
}
@@ -232,35 +128,111 @@
log.info("涓ゆ潯绾垮崸杞珛涓虹┖鎴栬�呮湁杩涚墖浠诲姟鏈畬鎴愶紝缁撴潫浠诲姟");
return;
}
-// 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅
- String d02GoAdress = plcParameterObject.getPlcParameter("D02Go").getAddress();
- // 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅
- String d05GoAdress = plcParameterObject.getPlcParameter("D05Go").getAddress();
String line1 = lineList.get(0);
- String flagLine = line1.equals(Const.A09_OUT_TARGET_POSITION) ? d01ID1 : d04ID1;
+ String flagLine = line1.equals(Const.A09_OUT_TARGET_POSITION) ? d01Id : d04Id;
if (lineList.size() == 1) {
- //鍙戦��
- if (StringUtils.isNotBlank(flagLine)) {
- return;
- }
//璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
- computeTargetByLine(Integer.parseInt(flagLine), d02GoAdress, d05GoAdress);
+ computeTargetByLine(Integer.parseInt(flagLine));
+ return;
}
- if (StringUtils.isBlank(d01ID1) && StringUtils.isBlank(d04ID1)) {
+ if (StringUtils.isBlank(d01Id) && StringUtils.isBlank(d04Id)) {
//姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
Integer line = getStartLine();
//璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
- computeTargetByLine(line, d02GoAdress, d05GoAdress);
+ computeTargetByLine(line);
return;
}
- int outLine = StringUtils.isBlank(d01ID1) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+ int outLine = StringUtils.isBlank(d01Id) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
//璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
- computeTargetByLine(outLine, d02GoAdress, d05GoAdress);
+ computeTargetByLine(outLine);
}
@Scheduled(fixedDelay = 5000)
public void plcToHomeEdgOutTask() {
+ //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧
+ List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
+ //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑
+ List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+ .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
+ .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence));
+ if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
+ log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
+ //鎵撹溅鍓╀綑灏哄
+ Integer remainWidth = Const.BIG_STORAGE_WIDTH;
+ for (TemperingGlassInfo e : temperingGlassInfoList) {
+ if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth) {
+ break;
+ }
+ remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
+ bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION,
+ 0, 0, 1));
+ }
+ bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ return;
+ }
+ //todo:鏄惁鏈変汉宸ヤ笅鐗囦换鍔� 鏈夌洿鎺ュ嚭
+ //绗煎唴鏄惁鏈変汉宸ヤ笅鐗囩幓鐠� 鏃� 缁撴潫
+ List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+ .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
+ if (CollectionUtils.isEmpty(artificialList)) {
+ Integer remainWidth = Const.BIG_STORAGE_WIDTH;
+ for (BigStorageCageDetails e : artificialList) {
+ if (remainWidth < e.getWidth().intValue()) {
+ break;
+ }
+ bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), 0, 0, 0, 1));
+ remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
+ }
+ bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ return;
+ }
+ //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
+ TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll();
+ if (null != temperingLayoutDTO) {
+ //鐜荤拑鍒伴綈
+ //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫
+ List<BigStorageCageDetails> bigStorageCageDetails = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+ .eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId())
+ .eq(BigStorageCageDetails::getEngineerId, temperingLayoutDTO.getEngineerId()));
+ List<TemperingGlassInfo> temperingGlassInfos = bigStorageCageDetails.stream().map(e -> {
+ TemperingGlassInfo info = new TemperingGlassInfo();
+ BeanUtils.copyProperties(e, info);
+ return info;
+ }).collect(Collectors.toList());
+ temperingGlassInfoService.saveBatch(temperingGlassInfos);
+
+ //澶ц溅鍓╀綑灏哄
+ Integer remainWidth = Const.BIG_STORAGE_WIDTH;
+ for (TemperingGlassInfo e : temperingGlassInfoList) {
+ if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth) {
+ break;
+ }
+ remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
+ bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION,
+ 0, 0, 1));
+ }
+ bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ return;
+ }
+ //鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟
+ TemperingLayoutDTO temperingOccupySlot = bigStorageCageDetailsService.queryTemperingOccupySlot();
+ if (null != temperingOccupySlot) {
+ List<SlotSequenceDTO> slotSequenceList = bigStorageCageDetailsService.queryGlassMaxAndMin(temperingOccupySlot.getEngineerId(), temperingOccupySlot.getTemperingLayoutId());
+ for (int i = 0; i < slotSequenceList.size() - 1; i++) {
+ SlotSequenceDTO first = slotSequenceList.get(i);
+ SlotSequenceDTO second = slotSequenceList.get(i + 1);
+ if (first.getMinSequence() == second.getMaxSequence() + 1
+ && second.getRemainWidth() > Const.BIG_STORAGE_WIDTH - first.getRemainWidth() - Const.BIG_STORAGE_GAP) {
+ List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+ .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN));
+ List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
+ 0, 0, 1)).collect(Collectors.toList());
+ bigStorageCageOutTaskService.saveBatch(outTasks);
+ return;
+ }
+ }
+ }
}
@@ -276,32 +248,29 @@
Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触");
//2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害
Map<String, Object> map = bigStorageCageFeedTaskService.getMap(new QueryWrapper<BigStorageCageFeedTask>()
- .select("cast(5000 - sum(width + 20) as INT)as remainWidth")
+ .select("cast(" + Const.BIG_STORAGE_WIDTH + " - sum(width + " + Const.BIG_STORAGE_GAP + ") as INT) as remainWidth")
.eq("line", line).eq("task_state", Const.BIG_STORAGE_IN_UP));
- Integer remainWidth = null == map ? 5000 : Integer.parseInt(map.get("remainWidth") + "");
+ Integer remainWidth = null == map ? Const.BIG_STORAGE_WIDTH : Integer.parseInt(map.get("remainWidth") + "");
//2銆佽幏鍙栧崸杞珛
Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth();
if (edgGlassTaskInfoList.size() == 1) {
if (remainWidth >= widthFirst) {
addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
return Boolean.FALSE;
- } else {
- //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔�
- return Boolean.TRUE;
}
- }
- Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth();
- if (remainWidth >= widthFirst) {
- if (remainWidth - widthFirst - Const.BIG_STORAGE_GAP >= widthSecond) {
- addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthSecond);
- } else {
- addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthSecond);
- }
- return Boolean.FALSE;
-
} else {
- return Boolean.TRUE;
+ Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth();
+ if (remainWidth >= widthFirst) {
+ if (remainWidth - widthFirst - Const.BIG_STORAGE_GAP >= widthSecond) {
+ addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthSecond);
+ return Boolean.FALSE;
+ } else {
+ addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthSecond);
+ }
+ }
}
+ //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔�
+ return Boolean.TRUE;
}
/**
@@ -321,7 +290,7 @@
/**
* 鑾峰彇闇�瑕佸惎鍔ㄧ殑绾胯矾锛氫袱鏉$嚎閮藉彲鍚姩 鑾峰彇绗竴鐗囩幓鐠冪増鍥緄d鏈�灏� 鐗堝簭鏈�澶х殑绾胯矾
*
- * @return
+ * @return 闇�瑕佸惎鍔ㄧ殑绾胯矾
*/
public Integer getStartLine() {
List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
@@ -340,7 +309,7 @@
/**
* 璁$畻浠诲姟琛ㄨ繘鐗囩嚎璺殑鐩爣鏍煎瓙锛屽苟鍚姩浠诲姟
*/
- public boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) {
+ public boolean computeTargetByLine(Integer line) {
//1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級
List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
.eq(BigStorageCageFeedTask::getLine, line)
@@ -349,43 +318,67 @@
//2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙
List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList());
List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds));
- AtomicReference<Integer> temperingLayoutIdTemp = new AtomicReference<>(0);
- AtomicReference<Integer> temperingFeedSequenceTemp = new AtomicReference<>(0);
- AtomicReference<BigStorageDTO> bigStorageDTO = new AtomicReference<>(new BigStorageDTO());
- Map<String, GlassInfo> glassInfoMap = glassInfos.stream().collect(Collectors.toMap(GlassInfo::getGlassId, p -> p));
+
List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
- AtomicBoolean taskFlag = new AtomicBoolean(Boolean.TRUE);
- taskList.stream().forEach(e -> {
- BigStorageCageDetails cageDetails = new BigStorageCageDetails();
- //鎸夌収鐗堝浘淇℃伅鑾峰彇杩涚墖绗煎瓙鏍煎瓙鍙�
+ List<BigStorageCageDetails> temperingList = computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.TRUE);
+ List<BigStorageCageDetails> noTemperingList = computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.FALSE);
+ bigStorageCageDetailsList.addAll(temperingList);
+ bigStorageCageDetailsList.addAll(noTemperingList);
+ //4銆佸湪璇︽儏琛ㄤ腑鍔犲叆杩涚墖鐜荤拑淇℃伅
+ bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList);
+ return Boolean.TRUE;
+ }
+
+ /**
+ * 鏄惁閽㈠寲鐜荤拑杩涚鐩爣浣嶇疆
+ *
+ * @param glassInfos 褰撴潯绾垮崸杞珛鎵�鏈夌幓鐠�
+ * @param taskList 褰撴潯绾垮崸杞珛鎵�鏈変换鍔�
+ * @param isTempering true 閽㈠寲 false 涓嶉挗鍖�
+ */
+ private List<BigStorageCageDetails> computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList, Boolean isTempering) {
+ Map<String, GlassInfo> glassInfoMap;
+ if (isTempering) {
+ glassInfoMap = glassInfos.stream().filter(e -> e.getTemperingLayoutId() != 0)
+ .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p));
+ } else {
+ glassInfoMap = glassInfos.stream().filter(e -> e.getTemperingLayoutId() == 0)
+ .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p));
+ }
+
+ //璁剧疆涓存椂鍙橀噺鎺ュ彈鐗堝浘id锛岀増搴忋�佹牸瀛愬彿鍙婂墿浣欏搴�
+ Integer temperingLayoutIdTemp = 0;
+ Integer temperingFeedSequenceTemp = 0;
+ BigStorageDTO bigStorageDTO = new BigStorageDTO();
+
+ List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
+ for (BigStorageCageFeedTask e : taskList) {
GlassInfo info = glassInfoMap.get(e.getGlassId());
+ if (info == null) {
+ continue;
+ }
+ BigStorageCageDetails cageDetails = new BigStorageCageDetails();
BeanUtils.copyProperties(info, cageDetails);
if (temperingLayoutIdTemp.equals(info.getTemperingLayoutId())
&& temperingFeedSequenceTemp.equals(info.getTemperingFeedSequence() + 1)
- && info.getWidth() <= bigStorageDTO.get().getWidth()) {
- bigStorageDTO.get().setWidth(bigStorageDTO.get().getWidth() - info.getWidth().intValue() - Const.BIG_STORAGE_GAP);
+ && info.getWidth() <= bigStorageDTO.getWidth()) {
+ bigStorageDTO.setWidth(bigStorageDTO.getWidth() - info.getWidth().intValue() - Const.BIG_STORAGE_GAP);
} else {
- bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info));
+ bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
}
- e.setTargetSlot(bigStorageDTO.get().getSlot());
- cageDetails.setSlot(bigStorageDTO.get().getSlot());
- cageDetails.setState(Const.GLASS_STATE_IN);
- temperingLayoutIdTemp.set(info.getTemperingLayoutId());
- temperingFeedSequenceTemp.set(info.getTemperingFeedSequence());
- bigStorageCageDetailsList.add(cageDetails);
- taskFlag.set(bigStorageCageFeedTaskService.updateById(e));
- if (!taskFlag.get()) {
- return;
- }
- });
- //3銆佹洿鏂拌繘鐗囦换鍔¤〃 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
- //4銆佸湪璇︽儏琛ㄤ腑鍔犲叆杩涚墖鐜荤拑淇℃伅
- bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList);
- if (taskFlag.get()) {
- String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress;
-// S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1);
+ cageDetails.setSlot(bigStorageDTO.getSlot());
+ cageDetails.setState(Const.GLASS_STATE_IN);
+
+ e.setTargetSlot(bigStorageDTO.getSlot());
+ e.setTaskType(Const.BIG_STORAGE_IN_RUN);
+
+ temperingLayoutIdTemp = info.getTemperingLayoutId();
+ temperingFeedSequenceTemp = info.getTemperingFeedSequence();
+ //3銆佹洿鏂拌繘鐗囦换鍔¤〃 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
+ bigStorageCageFeedTaskService.updateById(e);
+ bigStorageCageDetailsList.add(cageDetails);
}
- return taskFlag.get();
+ return bigStorageCageDetailsList;
}
}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 7209b1f..2a8d5ea 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -12,4 +12,6 @@
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mes:
sequence:
- order: false
\ No newline at end of file
+ order: false
+ minCount: 5
+ slotWidth: 5000
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
new file mode 100644
index 0000000..c016951
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper">
+
+ <resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO">
+ <result column="engineer_id" property="engineerId"/>
+ <result column="tempering_layout_id" property="temperingLayoutId"/>
+ <result column="count" property="count"/>
+ <result column="slot_count" property="slotCount"/>
+ </resultMap>
+
+ <resultMap id="slotSequenceDTO" type="com.mes.bigstorage.entity.dto.SlotSequenceDTO">
+ <result column="engineer_id" property="engineerId"/>
+ <result column="tempering_layout_id" property="temperingLayoutId"/>
+ <result column="slot" property="slot"/>
+ <result column="max_sequence" property="maxSequence"/>
+ <result column="min_sequence" property="minSequence"/>
+ <result column="remain_width" property="remainWidth"/>
+ </resultMap>
+
+ <select id="temperingIsAll" resultMap="temperingLayoutDTO">
+ SELECT T.ENGINEER_ID,
+ T.TEMPERING_LAYOUT_ID,
+ COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
+ FROM
+ GLASS_INFO T
+ LEFT JOIN DAMAGE T1
+ ON T.ENGINEER_ID = T1.ENGINEER_ID
+ AND T.GLASS_ID = T1.GLASS_ID
+ LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID
+ AND T.GLASS_ID = T2.GLASS_ID
+ WHERE
+ T1.GLASS_ID IS NULL
+ AND T2.GLASS_ID IS NULL
+ AND ( T.ENGINEER_ID
+ , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID
+ , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 )
+ GROUP BY
+ T.ENGINEER_ID,
+ T.TEMPERING_LAYOUT_ID
+ HAVING
+ COUNT = 0
+ ORDER BY
+ T.TEMPERING_LAYOUT_ID
+ LIMIT 1
+ </select>
+
+ <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO">
+ SELECT TEMPERING_LAYOUT_ID,
+ COUNT(DISTINCT SLOT) as SLOT_COUNT
+ FROM BIG_STORAGE_CAGE_DETAILS
+ WHERE STATE = 100
+ GROUP BY ENGINEER_ID,
+ TEMPERING_LAYOUT_ID
+ HAVING SLOT_COUNT >= #{count} LIMIT 1
+ </select>
+ <select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO">
+ SELECT T.*,
+ T1.REMAIN_WIDTH
+ FROM (
+ SELECT ENGINEER_ID,
+ TEMPERING_LAYOUT_ID,
+ SLOT,
+ MAX(TEMPERING_FEED_SEQUENCE) AS MAX_SEQUENCE,
+ MIN(TEMPERING_FEED_SEQUENCE) AS MIN_SEQUENCE
+ FROM BIG_STORAGE_CAGE_DETAILS
+ WHERE ENGINEER_ID = #{engineerId}
+ AND TEMPERING_LAYOUT_ID = #{temperingLayoutId}
+ GROUP BY ENGINEER_ID,
+ TEMPERING_LAYOUT_ID,
+ SLOT
+ ) T
+ INNER JOIN BIG_STORAGE_CAGE T1 ON T.SLOT = T1.SLOT
+ ORDER BY T.MAX_SEQUENCE DESC
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index ae11d30..3dacdba 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -33,6 +33,11 @@
}
@Test
+ public void outGlass() {
+ log.info("瀹屾暣璺緞锛歿}", bigStorageCageService.outGlass());
+ }
+
+ @Test
public void computeTargetByLine() {
// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
plcStorageCageTask.computeTargetByLine(2001, "", "");
--
Gitblit v1.8.0