From d3df1630ad3e1c71b61d177ee818d5c5c94e97c0 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期六, 11 十月 2025 18:45:29 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
---
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java | 8
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java | 29
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java | 21
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java | 10
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml | 11
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java | 62 +-
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/entity/request/LoadGlassRequest.java | 22
hangzhoumesParent/common/servicebase/src/main/resources/mapper/OptimizeProjectMapper.xml | 56 ++
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java | 26 +
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java | 5
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/controller/HollowBigStorageCageHistoryTaskController.java | 6
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassRelationInfoController.java | 22
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java | 9
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java | 11
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java | 13
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java | 56 +
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java | 2
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java | 29 +
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java | 18
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java | 11
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml | 2
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java | 18
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java | 7
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java | 10
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/HollowBigStorageCageHistoryTaskService.java | 2
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java | 14
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/HollowGlassApplication.java | 2
UI-Project/src/views/EngineerScheduling/engineerScheduling.vue | 248 ++++++++++
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java | 5
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-dev.yml | 22
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java | 32 +
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java | 22
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java | 2
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java | 8
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java | 5
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/LackDetailsDTO.java | 12
UI-Project/src/router/index.js | 14
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 37 +
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java | 38 +
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java | 6
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml | 246 +++++++--
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java | 4
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml | 187 +++++--
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java | 4
44 files changed, 1,143 insertions(+), 231 deletions(-)
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 2d25ffc..034f87c 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -273,6 +273,20 @@
},
]
},
+
+ /*----------- 宸ョ▼鎺掍骇 ----------------*/
+ {
+ path: 'engineerScheduling',
+ name: 'engineerScheduling',
+ component: () => import('../views/EngineerScheduling/engineerScheduling.vue'),
+ children: [
+ {
+ path: '/EngineerScheduling/engineerScheduling',
+ name: 'engineerScheduling',
+ component: () => import('../views/EngineerScheduling/engineerScheduling.vue')
+ },
+ ]
+ },
/*----------- 涓┖ ----------------*/
{
path: 'hollow',
diff --git a/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
new file mode 100644
index 0000000..683aa1b
--- /dev/null
+++ b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
@@ -0,0 +1,248 @@
+<script lang="ts" setup>
+import { ref, computed, watch, onMounted } from 'vue'
+import { useI18n } from 'vue-i18n'
+import { ElMessage, ElTransfer, ElTabs, ElTabPane, ElButton } from 'element-plus'
+import request from '@/utils/request'
+
+const { t } = useI18n()
+
+const activeTab = ref('cutting1')
+
+// Transfer缁勪欢鎵�闇�鐨勬暟鎹牸寮�
+interface TransferDataItem {
+ key: string
+ label: string
+ projectNo: string
+ projectName: string
+}
+
+// 鎵�鏈夊彲閫夋暟鎹紙宸︿晶锛�
+const dataSource = ref<TransferDataItem[]>([])
+// 宸查�夋暟鎹殑keys锛堝彸渚э級
+const targetKeys = ref<string[]>([])
+
+// 鏍规嵁褰撳墠鏍囩椤佃幏鍙栧彸渚у垪琛ㄦ爣棰�
+const getRightListTitle = computed(() => {
+ switch (activeTab.value) {
+ case 'cutting1':
+ return t('large.countOutOne')
+ case 'cutting2':
+ return t('large.countOutTwo')
+ case 'tempered':
+ return t('large.temp')
+ default:
+ return '宸叉帓浜�'
+ }
+})
+
+// 鑾峰彇宸︿晶鏁版嵁婧�
+const fetchDataSource = async () => {
+ try {
+ // 鏍规嵁褰撳墠鏍囩椤甸�夋嫨涓嶅悓鐨勬帴鍙�
+ const apiUrl = activeTab.value === 'tempered'
+ ? '/cacheVerticalGlass/bigStorageCageDetails/queryEngineer'
+ : '/loadGlass/optimizeProject/queryEngineer';
+
+ const response = await request.post(apiUrl)
+
+ if (response.code === 200) {
+ dataSource.value = response.data.map((item: any) => {
+ const projectNo = activeTab.value === 'tempered' ? item.engineerId : item.projectNo
+ const name = activeTab.value === 'tempered' ? item.engineerId : (item.projectNo + "-" + item.projectName)
+
+ return {
+ key: projectNo,
+ label: name,
+ projectNo: projectNo,
+ projectName: activeTab.value === 'tempered' ? '' : item.projectName
+ }
+ })
+ } else {
+ ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
+ }
+ } catch (error) {
+ console.error('鑾峰彇宸︿晶鏁版嵁澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
+}
+
+// 鑾峰彇鍙充晶宸查�夋暟鎹�
+const fetchTargetKeys = async () => {
+ try {
+ // 鏍规嵁褰撳墠鏍囩椤电‘瀹歵ype鍙傛暟
+ let type = 1; // 榛樿鍒囧壊涓�绾�
+ if (activeTab.value === 'cutting2') {
+ type = 2; // 鍒囧壊浜岀嚎
+ } else if (activeTab.value === 'tempered') {
+ type = 3; // 閽㈠寲
+ }
+
+ const response = await request.post('/loadGlass/optimizeProject/engineerScheduling', {
+ type: type
+ })
+
+ if (response.code === 200) {
+ // 瀵逛簬鎵�鏈夋爣绛鹃〉锛屼娇鐢╬rojectNo浣滀负key
+ targetKeys.value = response.data.map((item: any) => item.projectNo)
+
+ // 灏嗗彸渚ф暟鎹坊鍔犲埌dataSource涓紝纭繚Transfer缁勪欢鑳芥壘鍒板搴旂殑椤�
+ response.data.forEach((item: any) => {
+ // 妫�鏌ataSource涓槸鍚﹀凡瀛樺湪璇ラ」
+ const exists = dataSource.value.some(dataItem => dataItem.key === item.projectNo)
+ if (!exists) {
+ // 濡傛灉涓嶅瓨鍦紝娣诲姞鍒癲ataSource涓�
+ const newItem: TransferDataItem = {
+ key: item.projectNo,
+ label: `${item.projectNo}-${item.projectName || 'null'}`,
+ projectNo: item.projectNo,
+ projectName: item.projectName || ''
+ }
+ dataSource.value.push(newItem)
+ }
+ })
+ } else {
+ ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
+ }
+ } catch (error) {
+ console.error('鑾峰彇鍙充晶鏁版嵁澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
+}
+
+// 淇濆瓨鎺掍骇淇℃伅
+const saveScheduling = async () => {
+ try {
+ // 鏍规嵁褰撳墠鏍囩椤电‘瀹歵ype鍙傛暟
+ let type = 1; // 榛樿鍒囧壊涓�绾�
+ if (activeTab.value === 'cutting2') {
+ type = 2; // 鍒囧壊浜岀嚎
+ } else if (activeTab.value === 'tempered') {
+ type = 3; // 閽㈠寲
+ }
+
+ const engineerList = targetKeys.value.map(projectNo => {
+ const dataItem = dataSource.value.find(item => item.key === projectNo)
+ return {
+ projectNo: projectNo,
+ projectName: dataItem ? dataItem.projectName : ''
+ }
+ })
+
+ const response = await request.post(`/loadGlass/optimizeProject/updateEngineerScheduling?type=${type}`, engineerList)
+
+ if (response.code === 200) {
+ ElMessage.success('淇濆瓨鎴愬姛')
+ // 閲嶆柊鍔犺浇鏁版嵁
+ await fetchDataSource()
+ await fetchTargetKeys()
+ } else {
+ ElMessage.error(`淇濆瓨澶辫触: ${response.message || '鏈煡閿欒'}`)
+ }
+ } catch (error) {
+ console.error('淇濆瓨鎺掍骇淇℃伅澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
+}
+
+// 閲嶇疆鎺掍骇淇℃伅
+const resetScheduling = async () => {
+ await fetchDataSource()
+ await fetchTargetKeys()
+ ElMessage.info(t('宸插彇娑�'))
+}
+
+// 鐩戝惉鏍囩椤靛垏鎹紝鏍规嵁涓嶅悓鏍囩椤靛姞杞藉搴旂殑鏁版嵁
+watch(activeTab, async (newTab) => {
+ // 閲嶆柊鑾峰彇鏁版嵁
+ await fetchDataSource()
+ await fetchTargetKeys()
+})
+
+
+// 绉婚櫎formatFunc锛屼娇鐢ㄩ粯璁ら厤缃紝Element Plus Transfer缁勪欢榛樿灏变細鏄剧ず鏁伴噺缁熻
+// 濡傛灉闇�瑕佽嚜瀹氫箟鏍囬鏄剧ず锛屽彲浠ラ�氳繃titles灞炴�у鐞�
+
+// 缁勪欢鎸傝浇鏃惰幏鍙栨暟鎹�
+onMounted(async () => {
+ await fetchDataSource()
+ await fetchTargetKeys()
+})
+</script>
+
+<template>
+ <div class="engineer-scheduling-container">
+ <el-tabs v-model="activeTab" class="custom-tabs">
+ <el-tab-pane :label="t('large.countOutOne')" name="cutting1" />
+ <el-tab-pane :label="t('large.countOutTwo')" name="cutting2" />
+ <el-tab-pane :label="t('large.temp')" name="tempered" />
+ </el-tabs>
+
+ <div class="transfer-wrapper">
+ <el-transfer v-model="targetKeys" class="custom-transfer" filterable :data="dataSource"
+ :titles="['寰呮帓浜�', getRightListTitle]" :button-texts="['', '']">
+ <template #right-empty>
+ <el-empty :image-size="80" description="No data" />
+ </template>
+ </el-transfer>
+
+
+ <div class="transfer-save">
+ <el-button type="primary" @click="saveScheduling">
+ {{ t('searchOrder.makesure') }}
+ </el-button>
+ <el-button type="primary" @click="resetScheduling">
+ {{ t('delivery.cancel') }}
+ </el-button>
+ </div>
+ </div>
+ </div>
+</template>
+
+<style scoped>
+.engineer-scheduling-container {
+ padding: 20px;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ background-color: #fff;
+}
+
+.custom-tabs {
+ margin-bottom: 20px;
+}
+
+::v-deep(.custom-tabs .el-tabs__item) {
+ font-size: 20px;
+}
+
+.transfer-wrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 20px;
+}
+
+.transfer-save {
+ display: flex;
+ gap: 10px;
+}
+
+/* 鑷畾涔塗ransfer缁勪欢鐨勬牱寮� */
+::v-deep(.el-transfer-panel) {
+ font-size: 16px;
+ width: 350px;
+ height: 440px;
+}
+
+.custom-transfer {
+ --el-transfer-panel-body-height: 400px;
+}
+
+::v-deep(.el-transfer-panel__header) {
+ font-weight: bold;
+ font-size: 18px;
+}
+
+::v-deep(.el-checkbox__label) {
+ font-size: 16px;
+}
+</style>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
index 93cfed3..8df072d 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.engineering.entity.Engineering;
@@ -20,7 +21,7 @@
/**
* <p>
- * 鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
* </p>
*
* @author wu
@@ -40,7 +41,7 @@
//寮�濮�/鏆傚仠浠诲姟
@Override
- public boolean changeTask(String projectId, Integer state) {
+ public boolean changeTask(String projectId, Integer state) {
//鏆傚仠姝e湪杩涜宸ョ▼
// LambdaUpdateChainWrapper<Engineering> pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
// pauseWrapper.set(Engineering::getState,0);
@@ -48,8 +49,8 @@
// boolean pause = pauseWrapper.update();
//浣跨敤projectId浣滀负鏉′欢寮�濮嬪伐绋�
LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
- wrapper.set(Engineering::getState,state);
- wrapper.eq(Engineering::getEngineerId,projectId);
+ wrapper.set(Engineering::getState, state);
+ wrapper.eq(Engineering::getEngineerId, projectId);
boolean pause = wrapper.update();
return pause;
}
@@ -66,30 +67,30 @@
optimizeEngineerings = optimizeProjectMapper.selectList(wrapper);
}
- List<Engineering> resultList=new ArrayList<>();
+ List<Engineering> resultList = new ArrayList<>();
// 閬嶅巻鏌ヨ缁撴灉璧嬪��
if (optimizeEngineerings != null) {
for (OptimizeProject map : optimizeEngineerings) {
// 鍒涘缓涓�涓柊鐨� OptimizeProject 瀵硅薄
Engineering engineering = new Engineering();
// 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeProject 瀵硅薄鐨勭浉搴斿瓧娈典笂
- engineering.setEngineerId( map.getProjectNo());//宸ョ▼id
- engineering.setEngineerName( map.getProjectName());//宸ョ▼鍚嶇О
- engineering.setAvgAvailability( map.getAvgCutPct());//骞冲潎浼樺寲鐜�
- engineering.setValidAvailability( map.getValidCutPct());//鏈夋晥浼樺寲鐜�
- engineering.setLastAvailability( map.getLastCutPct());//灏剧墖浼樺寲鐜�
+ engineering.setEngineerId(map.getProjectNo());//宸ョ▼id
+ engineering.setEngineerName(map.getProjectName());//宸ョ▼鍚嶇О
+ engineering.setAvgAvailability(map.getAvgCutPct());//骞冲潎浼樺寲鐜�
+ engineering.setValidAvailability(map.getValidCutPct());//鏈夋晥浼樺寲鐜�
+ engineering.setLastAvailability(map.getLastCutPct());//灏剧墖浼樺寲鐜�
engineering.setState(0);//鐘舵��
- engineering.setGlassTotal( map.getGlassTotal());//灏忕墖鐜荤拑鎬绘暟
- engineering.setGlassTotalArea( map.getGlassTotalArea());//灏忕墖鎬婚潰绉�
- engineering.setPlanPatternTotal( map.getRawStockQty());//璁″垝鍘熺墖鎬绘暟
- engineering.setPlanPatternTotalArea( map.getRawStockArea());//璁″垝鍘熺墖鎬婚潰绉�
- engineering.setFilmsId( map.getGlassType());//鑶滅郴
- engineering.setNotes( map.getRemark());//澶囨敞
+ engineering.setGlassTotal(map.getGlassTotal());//灏忕墖鐜荤拑鎬绘暟
+ engineering.setGlassTotalArea(map.getGlassTotalArea());//灏忕墖鎬婚潰绉�
+ engineering.setPlanPatternTotal(map.getRawStockQty());//璁″垝鍘熺墖鎬绘暟
+ engineering.setPlanPatternTotalArea(map.getRawStockArea());//璁″垝鍘熺墖鎬婚潰绉�
+ engineering.setFilmsId(map.getGlassType());//鑶滅郴
+ engineering.setNotes(map.getRemark());//澶囨敞
// 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
resultList.add(engineering);
}
}
- log.info("鏌ヨ鍑洪挗鍖栧伐绋嬮泦鍚堜繚瀛樺埌瀹炰綋绫粄}",resultList);
+ log.info("鏌ヨ鍑洪挗鍖栧伐绋嬮泦鍚堜繚瀛樺埌瀹炰綋绫粄}", resultList);
return resultList;
}
@@ -107,8 +108,9 @@
.last("limit 1");
return engineeringMapper.selectOne(wrapper);
}
+
@Override
- public Engineering selectInitiates(Integer state,Integer cell) {
+ public Engineering selectInitiates(Integer state, Integer cell) {
//鏌ヨ鏄惁鏈夊紑濮嬩笂鐗囩殑宸ョ▼浠诲姟
QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
wrapper.eq("state", state)
@@ -156,24 +158,30 @@
@Override
public boolean deleteTask(String engineerId) {
//鍒犻櫎宸ョ▼琛�
- QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
- wrapper.eq("engineer_id", engineerId);
- return this.remove(wrapper);
+// QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
+// wrapper.eq("engineer_id", engineerId);
+// return this.remove(wrapper);
+ //淇敼宸ョ▼琛ㄧ姸鎬�
+ return this.update(
+ new LambdaUpdateWrapper<Engineering>()
+ .eq(Engineering::getEngineerId, engineerId)
+ .set(Engineering::getState, 6)
+ );
}
@Override
public boolean changeTasks(Engineering engineering) {
//鏆傚仠姝e湪杩涜宸ョ▼
LambdaUpdateChainWrapper<Engineering> pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
- pauseWrapper.set(Engineering::getState,0);
- pauseWrapper.eq(Engineering::getState,1);
- pauseWrapper.eq(Engineering::getStationCell,engineering.getStationCell());
+ pauseWrapper.set(Engineering::getState, 0);
+ pauseWrapper.eq(Engineering::getState, 1);
+ pauseWrapper.eq(Engineering::getStationCell, engineering.getStationCell());
pauseWrapper.update();
LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
- wrapper.set(Engineering::getState,engineering.getState());
- wrapper.set(Engineering::getStationCell,engineering.getStationCell());
- wrapper.eq(Engineering::getEngineerId,engineering.getEngineerId());
+ wrapper.set(Engineering::getState, engineering.getState());
+ wrapper.set(Engineering::getStationCell, engineering.getStationCell());
+ wrapper.eq(Engineering::getEngineerId, engineering.getEngineerId());
return wrapper.update();
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
index 1a5f29e..5fbde43 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
@@ -1,12 +1,14 @@
package com.mes.pp.controller;
+import com.baomidou.mybatisplus.extension.api.R;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.entity.request.OptimizeRequest;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import liquibase.pro.packaged.O;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -41,6 +43,30 @@
return Result.build(200, "", glass);
}
+ @ApiOperation("鏌ヨ宸ョ▼淇℃伅")
+ @PostMapping("/queryEngineer") //鏄剧ず宸ョ▼淇℃伅 pp琛�
+ @ResponseBody
+ public Result<List<OptimizeProject>> queryEngineer() {
+ List<OptimizeProject> resultList = optimizeProjectService.queryEngineer();
+ return Result.build(200, "", resultList);
+ }
+
+ @ApiOperation("鏌ヨ宸ョ▼鎺掍骇淇℃伅")
+ @PostMapping("/engineerScheduling") //鏄剧ず宸ョ▼鎺掍骇淇℃伅 engineerScheduling琛�
+ @ResponseBody
+ public Result<List<OptimizeProject>> engineerScheduling(@RequestBody OptimizeProject optimizeProject) {
+ List<OptimizeProject> engineerScheduling = optimizeProjectService.engineerScheduling(optimizeProject);
+ return Result.build(200, "", engineerScheduling);
+ }
+
+ @ApiOperation("鏇存柊宸ョ▼淇℃伅")
+ @PostMapping("/updateEngineerScheduling") //鏇存柊宸ョ▼鎺掍骇淇℃伅 engineerScheduling琛�
+ @ResponseBody
+ public Result<List<OptimizeProject>> updateEngineerScheduling(@RequestParam Integer type, @RequestBody List<OptimizeProject> engineerList) {
+ List<OptimizeProject> resultList = optimizeProjectService.updateEngineerScheduling(type, engineerList);
+ return Result.build(200, "鏇存柊鎴愬姛", resultList);
+ }
+
// @ApiOperation("淇濆瓨宸ョ▼淇℃伅")
// @PostMapping("/saveProject") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
// public Result<List<OptimizeProject>> saveProject(@RequestBody OptimizeRequest optimizeRequest) {
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
index 2449b5f..dc6dd21 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
@@ -4,6 +4,8 @@
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.entity.request.OptimizeRequest;
+import liquibase.pro.packaged.L;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,4 +20,34 @@
@DS("pp")
public interface OptimizeProjectMapper extends MPJBaseMapper<OptimizeProject> {
List<OptimizeProject> saveProject(OptimizeRequest optimizeRequest);
+
+ /**
+ * 鏌ヨ宸ョ▼淇℃伅
+ *
+ * @return
+ */
+ List<OptimizeProject> queryEngineer();
+
+ /**
+ * 鏌ヨ宸ョ▼鎺掍骇淇℃伅
+ *
+ * @param optimizeProject
+ * @return
+ */
+ List<OptimizeProject> engineerScheduling(OptimizeProject optimizeProject);
+
+ /**
+ * 鍒犻櫎宸ョ▼淇℃伅
+ *
+ * @param type
+ */
+ void deleteByType(@Param("type") Integer type);
+
+ /**
+ * 鏇存柊宸ョ▼淇℃伅
+ *
+ * @param projectList
+ */
+ void batchInsert(@Param("list") List<OptimizeProject> projectList);
+
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
index a2d8310..c76c026 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
@@ -40,4 +40,22 @@
*/
List<OptimizeProject> getDoingTask();
+ /**
+ * 鏌ヨ宸ョ▼淇℃伅
+ * @return
+ */
+ List<OptimizeProject> queryEngineer();
+
+ /**
+ * 鏌ヨ宸ョ▼鎺掑簭淇℃伅
+ * @return
+ */
+ List<OptimizeProject> engineerScheduling(OptimizeProject optimizeProject);
+
+ /**
+ * 鏇存柊宸ョ▼鎺掍骇淇℃伅
+ * @return
+ */
+ List<OptimizeProject> updateEngineerScheduling(Integer type , List<OptimizeProject> engineerList);
+
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
index eb13641..dbd645e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
@@ -15,8 +15,10 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
+import java.util.Date;
import java.util.List;
/**
@@ -90,5 +92,32 @@
return this.list(wrapper);
}
+ @Override
+ public List<OptimizeProject> queryEngineer() {
+ return this.baseMapper.queryEngineer();
+ }
+ @Override
+ public List<OptimizeProject> engineerScheduling(OptimizeProject optimizeProject) {
+ return this.baseMapper.engineerScheduling(optimizeProject);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public List<OptimizeProject> updateEngineerScheduling(Integer type , List<OptimizeProject> projectList) {
+ // 1. 鍒犻櫎瀵瑰簲绫诲瀷鐨勬暟鎹�
+ baseMapper.deleteByType(type);
+
+ // 2. 璁剧疆鍊�
+ projectList.forEach(project -> {
+ project.setType(type);
+ project.setState(100);
+ project.setId(null); // 娓呴櫎ID
+ });
+
+ // 3. 鎵归噺鎻掑叆鏂版暟鎹�
+ baseMapper.batchInsert(projectList);
+
+ return projectList;
+ }
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OptimizeProjectMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OptimizeProjectMapper.xml
index 0c7707c..4cfc94a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OptimizeProjectMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OptimizeProjectMapper.xml
@@ -13,6 +13,14 @@
</resultMap>
+ <resultMap id="resultMap" type="com.mes.pp.entity.OptimizeProject">
+ <result property="id" column="id"/>
+ <result property="projectNo" column="project_no"/>
+ <result property="projectName" column="project_name"/>
+ <result property="state" column="state"/>
+ <result property="type" column="type"/>
+ </resultMap>
+
<select id="saveProject" parameterType="com.mes.pp.entity.request.OptimizeRequest" resultMap="sequenceMap">
select a.project_no, 1 as glass_type, a.width, a.height, REGEXP_REPLACE(b.glass_thickness, '\\D', '')as glass_thickness, a.heat_layout_sort, 0 as state
from optimize_detail a
@@ -20,5 +28,53 @@
where a.project_no = #{projectNo}
</select>
+ <select id="queryEngineer" parameterType="com.mes.pp.entity.OptimizeProject" resultMap="resultMap">
+ select p.project_no,
+ p.project_name
+ from pp.optimize_project p
+ where p.state = 100
+ and p.project_no not in (
+ select es.project_no
+ from north_glass_mes.engineer_scheduling es
+ where es.project_no is not null
+ )
+ order by p.id
+ </select>
+
+ <select id="engineerScheduling" parameterType="com.mes.pp.entity.request.OptimizeRequest" resultMap="resultMap">
+ select es.project_no,
+ es.project_name,
+ es.type
+ from north_glass_mes.engineer_scheduling es
+ where es.state = 100
+ <if test="type != null and type != ''">
+ and es.type = #{type}
+ </if>
+ order by es.id
+ </select>
+
+ <!-- 鏍规嵁绫诲瀷鍒犻櫎engineer_scheduling琛ㄤ腑鐨勬暟鎹� -->
+ <delete id="deleteByType">
+ DELETE FROM north_glass_mes.engineer_scheduling
+ WHERE type = #{type}
+ </delete>
+
+ <!-- 鎵归噺鎻掑叆鏁版嵁鍒癳ngineer_scheduling琛� -->
+ <insert id="batchInsert">
+ INSERT INTO north_glass_mes.engineer_scheduling (
+ project_no,
+ project_name,
+ state,
+ type
+ ) VALUES
+ <foreach collection="list" item="item" separator=",">
+ (
+ #{item.projectNo},
+ #{item.projectName},
+ #{item.state},
+ #{item.type}
+ )
+ </foreach>
+ </insert>
</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
index c8717d1..a49c7f9 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
@@ -138,10 +138,11 @@
log.info("浜岀嚎鍗х悊: {}", s7DataWLTwo);
Boolean oneInkageEntity = s7DataWLOne.getDeviceState();
int cellFlag = 1;
- if (!oneInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
+ if (!oneInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
cellFlag = 2;
}
startOneOpcTaskChild(s7DataWLTwo, 2, cellFlag);
+
}
private void startOneOpcTaskChild(S7DataWL task, int device, int cellFlag) throws Exception {
@@ -352,7 +353,7 @@
//鐘舵�佹湁3涓儏鍐碉細0绌洪棽 1蹇欑 2绂佺敤
//涓ゆ潯绾块兘涓虹鐢ㄥ垯涓嶅嚭鐜荤拑
if (Const.OUT_DISABLE.equals(oneOutState) && Const.OUT_DISABLE.equals(twoOutState)) {
- log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", oneOutState, oneOutState);
+ log.info("璁惧{}:A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", deviceId, oneOutState, oneOutState);
return Boolean.FALSE;
}
//鑾峰彇d06鐗囧彴鐘舵��
@@ -382,6 +383,7 @@
cell = Const.TWO_OUT_TARGET_POSITION;
}
}
+ log.info("{}绾胯矾璁$畻瀹屾垚锛歿}", deviceId, cell);
if (cellFlag == 2) {
if (!outChildTask(task, deviceId, cell, startDate)) {
cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION;
@@ -398,6 +400,7 @@
//绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊�
boolean flag = queryMaxMinDiffByDevice(threshold, deviceId);
+ log.info("{}闃堝�艰绠楀畬鎴愶細{}", deviceId, flag);
if (flag) {
//鍏堟壘鏈�灏忕増鍥剧増搴忕殑鐜荤拑灏忕墖
EdgStorageCageDetails minEdgDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
@@ -421,15 +424,18 @@
);
}
}
+ log.info("{}鎸夌収闃堝�兼煡鎵剧粨鏋滐細{}", deviceId, edgStorageCageDetails);
if (null == edgStorageCageDetails) {
// 鑾峰彇鍘嗗彶琛ㄤ腑涓婃浠诲姟鏈�鍚庝竴鐗囧昂瀵�
EdgStorageDeviceTaskHistory edgeData = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
.eq(EdgStorageDeviceTaskHistory::getDeviceId, cell)
.in(EdgStorageDeviceTaskHistory::getTaskType, Const.GLASS_CACHE_TYPE_OUT, Const.GLASS_CACHE_TYPE_THROUGH)
.orderByDesc(EdgStorageDeviceTaskHistory::getId).last("limit 1"));
+ log.info("{}鑾峰彇涓婃浠诲姟淇℃伅锛歿}", deviceId, edgeData);
if (null != edgeData) {
GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut()));
//绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷�
+
edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight(), cell, maxThickness);
if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) {
GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
@@ -445,11 +451,13 @@
}
}
}
+ log.info("{}鑾峰彇鍘嗗彶琛ㄤ腑涓婃浠诲姟鏈�鍚庝竴鐗囧昂瀵革細{}", deviceId, edgStorageCageDetails);
//鍓嶉潰宸茬粡灏哄闂澶勭悊瀹屾瘯锛屽紑濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖
if (null == edgStorageCageDetails) {
edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsByLimitSize(deviceId, Integer.parseInt(task.getCurrentCell().toString()), 0, 0,
cell, minOneFirstLength, minOneSecondLength, maxTwoFirstLength, maxTwoSecondLength, maxThickness);
}
+ log.info("{}寮�濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖锛歿}", deviceId, edgStorageCageDetails);
if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) {
//鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
@@ -466,6 +474,7 @@
log.info("鐩撮�氫换鍔$洰鏍囩嚎璺负{},杩涚墖鐜荤拑灏哄涓簕}*{},涓嶇鍚堝嚭鐗囨潯浠�", cell, maxLength, minLength);
}
}
+ log.info("{}鐩撮�氫换鍔★細{}", deviceId, edgStorageCageDetails);
if (edgStorageCageDetails == null) {
//鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
log.info("绗煎唴娌℃湁鐜荤拑浜�");
@@ -477,7 +486,7 @@
if (3 != task.getTaskState()) {
return Boolean.FALSE;
}
- log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
+ log.info("5銆亄}鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
if (glassInIdOne.equals(task.getGlassIdIn()) || glassInIdTwo.equals(task.getGlassIdIn())) {
log.info("鐜荤拑id涓庝笂娆$浉鍚岋紝绂佹杩涚墖");
return Boolean.FALSE;
@@ -491,11 +500,7 @@
GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
BeanUtils.copyProperties(one, edgStorageCageDetails);
}
- EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>()
- .eq(EdgStorageCage::getDeviceId, deviceId)
- .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
- .ge(EdgStorageCage::getRemainWidth, cellLength)
- .last("order by abs(slot - " + task.getCurrentCell() + ") limit 1"));
+ EdgStorageCage storageCage = edgStorageCageService.selectNearestEmpty(Integer.parseInt(task.getCurrentCell().toString()), deviceId, Boolean.TRUE);
Assert.isTrue(null != storageCage, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", storageCage);
edgStorageCageDetails.setSlot(storageCage.getSlot());
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 5e56064..4c11c1d 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -10,15 +10,13 @@
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.common.config.Const;
+import com.mes.pp.entity.OptimizeProject;
import com.mes.utils.RedisUtil;
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 javax.annotation.Resource;
import java.util.List;
@@ -197,5 +195,13 @@
String glassId = map.get("glassId");
return Result.build(200, "鎶ョ牬鎹熸垚鍔�", bigStorageCageDetailsService.bigStorageGlassDamageByGlassId(glassId));
}
+
+ @ApiOperation("鏌ヨ宸ョ▼寰呮帓浜т俊鎭�")
+ @PostMapping("/queryEngineer") //鏄剧ず宸ョ▼鎺掍骇淇℃伅
+ @ResponseBody
+ public Result<List<BigStorageCageDetails>> queryEngineer() {
+ List<BigStorageCageDetails> result = bigStorageCageDetailsService.queryEngineer();
+ return Result.build(200, "", result);
+ }
}
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 f8690b6..87d5f60 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
@@ -7,6 +7,7 @@
import com.mes.bigstorage.entity.vo.BigStorageQueryVO;
import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.pp.entity.OptimizeProject;
import java.util.List;
import java.util.Map;
@@ -134,4 +135,11 @@
* @return
*/
boolean cancelTemperingTask();
+
+
+ /**
+ * 鏌ヨ宸ョ▼寰呮帓搴忎俊鎭�
+ * @return
+ */
+ List<BigStorageCageDetails> queryEngineer();
}
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 2a3a54c..2f0ae66 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
@@ -2,6 +2,7 @@
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.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
@@ -28,6 +29,7 @@
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.pp.entity.OptimizeProject;
import com.mes.sysconfig.entity.SysConfig;
import com.mes.sysconfig.service.SysConfigService;
import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -568,4 +570,12 @@
public void updateDeviceIdBySlot(List<Integer> slotList) {
baseMapper.updateDeviceIdBySlot(slotList);
}
+
+ @Override
+ public List<BigStorageCageDetails> queryEngineer() {
+ QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
+ wrapper.select("distinct engineer_id")
+ .eq("state", 100);
+ return this.list(wrapper);
+ }
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java
index 43e8ebb..2435a3e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/controller/BigStorageCageHistoryTaskController.java
@@ -45,4 +45,10 @@
public Result<List<RunTime>> queryRunTimes(String days) {
return Result.success(bigStorageCageHistoryTaskService.queryRunTimes(days));
}
+
+ @ApiOperation(value = "鏌ヨ澶х悊鐗囩晫闈㈡墍鏈変俊鎭�", notes = "鏌ヨ澶х悊鐗囩晫闈㈡墍鏈変俊鎭�")
+ @GetMapping("/queryAllMessage")
+ public Result<String> queryAllMessage() {
+ return Result.success(bigStorageCageHistoryTaskService.queryAllMessage());
+ }
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java
index afef636..12ed6c0 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/BigStorageCageHistoryTaskService.java
@@ -23,5 +23,7 @@
DailyProductionVO queryBigDailyProduction(BigStorageCageHistoryRequest request);
List<RunTime> queryRunTimes(String days);
+
+ String queryAllMessage();
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
index e374567..054dc77 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
@@ -10,11 +10,13 @@
import com.mes.bigstoragecagetask.entity.request.BigStorageCageHistoryRequest;
import com.mes.bigstoragecagetask.mapper.BigStorageCageHistoryTaskMapper;
import com.mes.bigstoragecagetask.service.BigStorageCageHistoryTaskService;
+import com.mes.job.OPCPlcSlicecage;
import com.mes.largenscreen.entity.DailyProductionVO;
import com.mes.largenscreen.entity.RunTime;
import com.mes.tools.DateUtil;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.List;
@@ -26,6 +28,9 @@
*/
@Service
public class BigStorageCageHistoryTaskServiceImpl extends ServiceImpl<BigStorageCageHistoryTaskMapper, BigStorageCageHistoryTask> implements BigStorageCageHistoryTaskService {
+
+ @Resource
+ OPCPlcSlicecage opcPlcSlicecage;
@Override
public Page<BigStorageCageHistoryTask> queryBigStorageCageHistoryTask(BigStorageCageHistoryRequest request) {
@@ -58,9 +63,20 @@
}
@Override
- public List<RunTime> queryRunTimes(String days){
+ public List<RunTime> queryRunTimes(String days) {
return baseMapper.queryRunTimes(days);
}
+ @Override
+ public String queryAllMessage() {
+ try {
+ opcPlcSlicecage.plcStorageCageTask();
+ return "success";
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ return "fail";
+ }
+
}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
index ec636fd..91c11e4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
import com.kangaroohy.milo.service.MiloService;
+import com.mes.alarm.entity.ProductAlarmInfo;
+import com.mes.alarm.service.ProductAlarmInfoService;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
@@ -72,11 +74,22 @@
@Resource
private WebSocketUtils webSocketUtils;
- private JSONObject jsonObject = new JSONObject();
+ @Resource
+ private ProductAlarmInfoService productAlarmInfoService;
- public void queryDataSource1() throws Exception {
- S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
- S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class);
+
+ private static final String ALARM_MODULE = "閽㈠寲";
+ private static final String ALARM_TYPE = "閽㈠寲澶х悊鐗�";
+ private static final String ALARM_CODE_SIZE = "sizeSame";
+ private static final String ALARM_CODE_ID = "idSame";
+
+
+ public JSONObject queryDataSource1() throws Exception {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
+ .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW)
+ .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE)
+ .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE)));
List<Double> carPostion = new ArrayList<>();
carPostion.add(0.25);
carPostion.add(0.5);
@@ -84,6 +97,8 @@
//鐣岄潰灞曠ず绗煎瓙淇℃伅
jsonObject.append("bigStorageCageInfos", bigStorageCageDetailsService.querybigStorageCageDetail());
+ S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
+ S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class);
try {
//杩涚墖浠诲姟鏁版嵁
List<BigStorageTaskVO> inTaskList = new ArrayList();
@@ -233,10 +248,11 @@
//褰撳墠鎸囧畾宸ョ▼
jsonObject.append("temperingEngineerId", redisUtil.getCacheObject("temperingEngineerId"));
-
+ return jsonObject;
}
public void queryDataSource2() throws InterruptedException {
+ JSONObject jsonObject = new JSONObject();
//鍑虹墖闃熷垪
List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
new LambdaQueryWrapper<TemperingGlassInfo>()
@@ -252,9 +268,8 @@
*/
@Scheduled(fixedDelay = 3000)
public void plcStorageCageTask() throws Exception {
- jsonObject = new JSONObject();
//鏌ヨ浣跨敤鏁版嵁婧�1鏌ヨ鏁版嵁
- queryDataSource1();
+ JSONObject jsonObject = queryDataSource1();
//鏌ヨ浣跨敤鏁版嵁婧�2鏌ヨ鏁版嵁
// queryDataSource2();
webSocketUtils.sendToWeb("slicecage", jsonObject);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
index e10c668..8c21cb2 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -9,6 +9,8 @@
import com.github.yulichang.toolkit.JoinWrappers;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
+import com.mes.alarm.entity.ProductAlarmInfo;
+import com.mes.alarm.service.ProductAlarmInfoService;
import com.mes.base.entity.BigStorageCageBaseInfo;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
@@ -97,11 +99,28 @@
*/
private static final Integer THROUGH_SLOT = 920;
+
+ @Resource
+ private ProductAlarmInfoService productAlarmInfoService;
+
+ private static final String ALARM_MODULE = "閽㈠寲";
+ private static final String ALARM_TYPE = "閽㈠寲澶х悊鐗�";
+ private static final String ALARM_CODE_SIZE = "sizeSame";
+ private static final String ALARM_CODE_ID = "idSame";
+
@Resource
private RedisUtil redisUtil;
@Scheduled(fixedDelay = 1000)
public void inBigStorageTask() {
+ List<ProductAlarmInfo> alarmInfos = productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
+ .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW)
+ .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE)
+ .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE));
+ if (CollectionUtil.isNotEmpty(alarmInfos)) {
+ log.info("鐣岄潰鎶ヨ锛岀瓑寰呬汉宸ュ共棰勫鐞�");
+ return;
+ }
S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
log.info("杩涚墖浠诲姟寮�濮媨}", s7DataDLPOne);
Boolean inkageEntity = s7DataDLPOne.getMesControl();
@@ -155,6 +174,13 @@
if (entry.getValue() > 1) {
log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
//鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
+ ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+ alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+ alarmInfo.setAlarmModule(ALARM_MODULE);
+ alarmInfo.setAlarmType(ALARM_TYPE);
+ alarmInfo.setAlarmCode(ALARM_CODE_ID);
+ alarmInfo.setAlarmMessage(entry.getKey());
+ productAlarmInfoService.save(alarmInfo);
s7DataDLPOne = new S7DataDLPOne();
s7DataDLPOne.setAlarmSignal(2);
s7SerializerDLPOne.write(s7DataDLPOne);
@@ -166,6 +192,17 @@
if (CollectionUtil.isNotEmpty(detailsList)) {
log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
//鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
+ List<String> sameGlassIds = detailsList.stream()
+ .map(BigStorageCageDetails::getGlassId)
+ .collect(Collectors.toList());
+ ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+ alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+ alarmInfo.setAlarmModule(ALARM_MODULE);
+ alarmInfo.setAlarmType(ALARM_TYPE);
+ alarmInfo.setAlarmCode(ALARM_CODE_ID);
+ alarmInfo.setAlarmMessage(sameGlassIds.toString());
+ productAlarmInfoService.save(alarmInfo);
+
s7DataDLPOne = new S7DataDLPOne();
s7DataDLPOne.setAlarmSignal(4);
s7SerializerDLPOne.write(s7DataDLPOne);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index 996634b..7851615 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -186,7 +186,7 @@
damage_temp as (
select engineer_id, tempering_layout_id, count(*) as damage_count
from damage
- where type in(8,9)
+ where type in(8,9) and STATUS = 1
group by engineer_id, tempering_layout_id
),
result as (
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index 9523529..0518590 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -11,7 +11,6 @@
import com.mes.pp.service.OptimizeProjectService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
-import com.mes.tools.WebSocketServer;
import com.mes.tools.WebSocketUtils;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.service.UpPattenUsageService;
@@ -24,7 +23,6 @@
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
-import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -147,7 +145,7 @@
}
- private void loadGlassChild(String redisRequest, int stationCell, String tableName, String webSocketName) {
+ public String loadGlassChild(String redisRequest, int stationCell, String tableName, String webSocketName) {
try {
JSONObject jsonObject = new JSONObject();
//褰撳墠绾胯矾姝e湪鎵ц鐨勫伐绋�
@@ -177,6 +175,7 @@
} catch (Exception e) {
e.printStackTrace();
}
+ return "success";
}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
index 36aa0c8..c1ea1e6 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
@@ -2,22 +2,25 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mes.job.PlcLoadGlassTask;
+import com.mes.loadglassdevicetaskhistory.entity.request.LoadGlassRequest;
import com.mes.opctask.entity.LoadGlassDeviceTaskHistory;
import com.mes.opctask.entity.request.LoadGlassDeviceTaskHistoryRequest;
import com.mes.opctask.service.LoadGlassDeviceTaskHistoryService;
-import com.mes.pp.service.OptimizeProjectService;
-import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import 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 java.util.List;
+import javax.annotation.Resource;
/**
* <p>
- * 鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
* </p>
*
* @author wf
@@ -27,6 +30,8 @@
@RequestMapping("/loadglassdevicetaskhistory")
public class LoadGlassDeviceTaskHistoryController {
+ @Resource
+ PlcLoadGlassTask plcLoadGlassTask;
@Autowired
private LoadGlassDeviceTaskHistoryService loadGlassDeviceTaskHistoryService;
@@ -36,5 +41,12 @@
return Result.build(200, "鏌ヨ鎴愬姛", loadGlassDeviceTaskHistoryService.queryLoadGlassHistoryTask(request));
}
+ @ApiOperation("鏌ヨ绾胯矾鎵�鏈夋暟鎹�")
+ @PostMapping("/queryAllMessage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+ public Result<String> queryAllMessage(@RequestBody @Validated LoadGlassRequest request) {
+ return Result.build(200, "鏌ヨ鎴愬姛", plcLoadGlassTask.loadGlassChild(request.getRedisRequest(), request.getStationCell(),
+ request.getTableName(), request.getWebSocketName()));
+ }
+
}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/entity/request/LoadGlassRequest.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/entity/request/LoadGlassRequest.java
new file mode 100644
index 0000000..2afbda7
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/entity/request/LoadGlassRequest.java
@@ -0,0 +1,22 @@
+package com.mes.loadglassdevicetaskhistory.entity.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/10/11 11:04
+ * @Description:
+ */
+@Data
+public class LoadGlassRequest {
+
+ @ApiModelProperty(value = "redis鍚嶅瓧锛坙oadGlassRequestOne loadGlassRequestTwo锛�", position = 1)
+ private String redisRequest;
+ @ApiModelProperty(value = "绾胯矾锛�5 6锛�", position = 2)
+ private int stationCell;
+ @ApiModelProperty(value = "绾胯矾琛ㄥ悕锛圠OAD_GLASS_DEVICE_ONE_TASK LOAD_GLASS_DEVICE_TWO_TASK锛�", position = 3)
+ private String tableName;
+ @ApiModelProperty(value = "websocket锛坙oadGlassOne loadGlassTwo锛�", position = 4)
+ private String webSocketName;
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/HollowGlassApplication.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/HollowGlassApplication.java
index d981d97..0a9cc41 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/HollowGlassApplication.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/HollowGlassApplication.java
@@ -4,6 +4,7 @@
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@@ -19,6 +20,7 @@
@EnableDiscoveryClient
@MapperScan(basePackages = "com.mes.*.mapper")
@EnableScheduling
+@EnableCaching
public class HollowGlassApplication {
public static void main(String[] args) {
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassRelationInfoController.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassRelationInfoController.java
index 84b8e1f..a768d6a 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassRelationInfoController.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassRelationInfoController.java
@@ -2,6 +2,7 @@
import com.mes.damage.entity.request.DamageRequest;
+import com.mes.glassinfo.entity.GlassInfo;
import com.mes.hollow.entity.dto.LackDetailsDTO;
import com.mes.hollow.entity.vo.HollowAllFlowCardVO;
import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
@@ -39,11 +40,18 @@
return Result.success(hollowAllFlowCardVOList);
}
- @ApiOperation("鏌ヨ鎸囧畾娴佺▼鍗″強灞傛暟鐨勭己鐗囪鎯�")
- @PostMapping("/queryLackByFlowCard")
- public Result<List<LackDetailsDTO>> queryLackByFlowCard() {
- List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryLackByFlowCard();
+ @ApiOperation("鐣岄潰灞曠ず锛氭煡璇㈡祦绋嬪崱銆佸眰鏁扮殑缂虹墖璇︽儏")
+ @PostMapping("/queryAllLackByFlowCard")
+ public Result<List<LackDetailsDTO>> queryAllLackByFlowCard() {
+ List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryAllLackByFlowCard();
return Result.success(lackDetailsList);
+ }
+
+ @ApiOperation("鎸夌収娴佺▼鍗°�佽鍗曞簭鍙枫�佸眰鍙疯幏鍙栫己鐗囩幓鐠冧俊鎭鎯�")
+ @PostMapping("/queryLackGlassByFlowCard")
+ public Result<List<GlassInfo>> queryLackGlassByFlowCard(@RequestBody HollowBigStorageDetailsQueryVO query) {
+ List<GlassInfo> lackGlassList = hollowGlassRelationInfoService.queryLackGlassByFlowCard(query);
+ return Result.success(lackGlassList);
}
// @ApiOperation("鏌ヨ鎸囧畾娴佺▼鍗″強灞傛暟鐨勭己鐗囪鎯�")
@@ -52,6 +60,12 @@
// List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryLackByFlowCard(flowCardId);
// return Result.success(lackDetailsList);
// }
+ @ApiOperation("鏌ヨ鎸囧畾娴佺▼鍗$殑缂虹墖璇︽儏")
+ @PostMapping("/queryLackByFlowCard")
+ public Result<Map<Integer,List<LackDetailsDTO>>> queryLackByFlowCard(String flowCardId) {
+ Map<Integer,List<LackDetailsDTO>> lackDetailsMap = hollowGlassRelationInfoService.queryLackByFlowCard(flowCardId);
+ return Result.success(lackDetailsMap);
+ }
@ApiOperation("涓┖缂虹墖鐖嗙牬绗兼姤鐮存崯")
@PostMapping("/hollowBigStorageGlassDamage")
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
index 4c50e7d..f1b5862 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
@@ -23,6 +23,10 @@
*/
private String productName;
/**
+ * 涓┖鐗囧簭 0 鐩撮�� 1 绗煎唴
+ */
+ private int hollowSequence;
+ /**
* 鑶滅郴
*/
private String filmsId;
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/LackDetailsDTO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/LackDetailsDTO.java
index ee34bb2..5690d91 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/LackDetailsDTO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/LackDetailsDTO.java
@@ -15,6 +15,10 @@
*/
private String flowCardId;
/**
+ * 鐜荤拑id
+ */
+ private String glassId;
+ /**
* 娴佺▼鍗�
*/
private int layer;
@@ -52,6 +56,14 @@
* /*鐮存崯鐗囨暟
*/
private Integer damageCount;
+ /**
+ * /*琛ョ墖鏁伴噺
+ */
+ private Integer patchCount;
+ /**
+ * 宸ュ簭
+ */
+ private String workingProcedure;
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
index 90de67e..9d62dee 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
@@ -33,5 +33,13 @@
* 浜у搧鍚嶇О
*/
private String productName;
+ /**
+ * 搴忓彿
+ */
+ private Integer orderSort;
+ /**
+ * 灞�
+ */
+ private Integer layer;
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
index 4c07501..360e8cb 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
@@ -7,6 +7,7 @@
import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
import com.mes.hollow.entity.dto.FlowCardVirtualSlotDTO;
import com.mes.hollow.entity.dto.UpdateHollowBigStorageCageDTO;
+import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -35,8 +36,16 @@
void updateDeviceIdBySlot(@Param("list") List<Integer> slotList);
- List<HollowBigStorageCageDetails> queryPairGlassList(@Param("flowCardId")String flowCardId, @Param("totalLayer")Integer totalLayer, @Param("totalPairQuantity")Integer totalPairQuantity,@Param("isOut") Integer isOut);
+ List<HollowBigStorageCageDetails> queryPairGlassList(@Param("flowCardId") String flowCardId, @Param("totalLayer") Integer totalLayer, @Param("totalPairQuantity") Integer totalPairQuantity, @Param("isOut") Integer isOut);
List<FlowCardVirtualSlotDTO> queryFlowCardIdsAndLayer();
+
+ /**
+ * 鏌ヨ绗煎唴鐨勭己鐗囪鎯�
+ *
+ * @param query
+ * @return
+ */
+ List<FlowCardGlassInfoDTO> queryHollowAllFlowCard(HollowBigStorageDetailsQueryVO query);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
index 3ac8c38..cfa02e0 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.hollow.entity.HollowGlassOutRelationInfo;
import com.mes.hollow.entity.dto.OrderDTO;
+import com.mes.hollow.entity.dto.OrderDetailsDTO;
import com.mes.largenscreen.entity.PieChartVO;
import org.apache.ibatis.annotations.Param;
@@ -19,5 +20,13 @@
OrderDTO queryOrderByFlowCardId(@Param("flowCardId") String flowCardId);
List<PieChartVO> queryPieChart();
+
+ /**
+ * 鎸夌収娴佺▼鍗¤幏鍙栦骇鍝佸悕绉�
+ *
+ * @param flowCardId
+ * @return
+ */
+ OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
index ea8beea..ea67d25 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
@@ -1,11 +1,13 @@
package com.mes.hollow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.glassinfo.entity.GlassInfo;
import com.mes.hollow.entity.HollowGlassRelationInfo;
import com.mes.hollow.entity.dto.HollowGlassDetailsDTO;
import com.mes.hollow.entity.dto.LackDetailsDTO;
import com.mes.hollow.entity.dto.OrderDetailsDTO;
import org.apache.ibatis.annotations.Param;
+import org.springframework.cache.annotation.Cacheable;
import java.util.List;
@@ -23,7 +25,7 @@
List<HollowGlassDetailsDTO> queryFlowCardIdLayerGlassInfo(@Param("flowCardId") String flowCardId, @Param("totalLayer") int totalLayer, @Param("layer") int layer);
- List<LackDetailsDTO> queryLackByFlowCard();
+ List<LackDetailsDTO> queryAllLackByFlowCard();
int queryLayerByFlowCardId(@Param("flowCardId") String flowCardId);
@@ -35,6 +37,10 @@
* @param flowCardId
* @return
*/
- OrderDetailsDTO queryProductNameByFlowCardId(@Param("flowCardId") String flowCardId,@Param("productName") String productName,@Param("customerName") String customerName);
+ OrderDetailsDTO queryProductNameByFlowCardId(@Param("flowCardId") String flowCardId, @Param("productName") String productName, @Param("customerName") String customerName);
+
+ List<LackDetailsDTO> queryLackByFlowCard(@Param("flowCardId") String flowCardId);
+
+ List<GlassInfo> queryLackGlassByFlowCard(@Param("flowCardId") String flowCardId, @Param("orderSort") Integer orderSort, @Param("layer") Integer layer);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
index a7513c7..8ad47a8 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
@@ -4,6 +4,8 @@
import com.mes.base.entity.vo.BigStorageVO;
import com.mes.hollow.entity.HollowBigStorageCageDetails;
import com.mes.hollow.entity.dto.*;
+import com.mes.hollow.entity.vo.HollowAllFlowCardVO;
+import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
import java.util.List;
import java.util.Map;
@@ -66,5 +68,7 @@
Boolean updateHollowStorageCageDisabled(int slot, int enableState);
List<FlowCardVirtualSlotDTO> queryFlowCardIdsAndLayer();
+
+ List<FlowCardGlassInfoDTO> queryHollowAllFlowCard(HollowBigStorageDetailsQueryVO query);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
index 9dece11..8a4c171 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.hollow.entity.HollowGlassOutRelationInfo;
+import com.mes.hollow.entity.dto.OrderDetailsDTO;
import com.mes.hollow.entity.request.HollowHistoryTaskRequest;
import com.mes.hollow.entity.request.HollowTaskRequest;
import com.mes.hollowqueue.entity.HollowGlassQueueInfo;
@@ -30,7 +31,7 @@
List<String> hollowTaskList(int cell);
- Map<String, List<HollowGlassQueueInfo>> appointHollowTaskDetails( int cell);
+ Map<String, List<HollowGlassQueueInfo>> appointHollowTaskDetails(int cell);
Boolean startTask(int cell);
@@ -45,5 +46,7 @@
Page<HollowGlassOutRelationInfo> queryHollowHistoryTask(HollowHistoryTaskRequest request);
List<PieChartVO> queryPieChart();
+
+ OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java
index 8ef282f..dcd644b 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.damage.entity.request.DamageRequest;
+import com.mes.glassinfo.entity.GlassInfo;
import com.mes.hollow.entity.HollowGlassRelationInfo;
import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
import com.mes.hollow.entity.dto.HollowBigStorageDTO;
import com.mes.hollow.entity.dto.LackDetailsDTO;
+import com.mes.hollow.entity.dto.OrderDetailsDTO;
import com.mes.hollow.entity.vo.HollowAllFlowCardVO;
import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
@@ -35,10 +37,11 @@
List<FlowCardGlassInfoDTO> queryHollowAllFlowCardSummary(HollowBigStorageDetailsQueryVO query);
- List<LackDetailsDTO> queryLackByFlowCard();
+ List<LackDetailsDTO> queryAllLackByFlowCard();
int queryLayerByFlowCardId(String flowCardId);
-// List<LackDetailsDTO> queryLackByFlowCard(String flowCardId);
+
+ Map<Integer,List<LackDetailsDTO>> queryLackByFlowCard(String flowCardId);
/**
@@ -50,5 +53,9 @@
Integer getGlassGapByThickness(Double thickness);
Boolean hollowBigStorageGlassDamage(DamageRequest request);
+
+ OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId, String productName, String customerName);
+
+ List<GlassInfo> queryLackGlassByFlowCard(HollowBigStorageDetailsQueryVO query);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
index 357b044..589997e 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -145,6 +145,11 @@
return baseMapper.queryFlowCardIdsAndLayer();
}
+ @Override
+ public List<FlowCardGlassInfoDTO> queryHollowAllFlowCard(HollowBigStorageDetailsQueryVO query) {
+ return baseMapper.queryHollowAllFlowCard(query);
+ }
+
private List<HollowBigStorageAndDetailsDTO> hollowBigStorageCageDetailsChild(String glassId, Integer deviceId, Integer slot, int state) {
//灏嗗搴旀牸瀛愬彿鐨勭幓鐠僫d缃负101
this.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>()
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
index def9384..1a8c6d6 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -35,6 +35,7 @@
import freemarker.template.Version;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -342,6 +343,12 @@
return this.page(page, wrapper);
}
+ @Override
+ @Cacheable(value = "orderDetails", key = "#flowCardId")
+ public OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId) {
+ log.info("鏌ヨ鏁版嵁搴撲竴娆★細{}", flowCardId);
+ return baseMapper.queryProductNameByFlowCardId(flowCardId);
+ }
private HollowGlassOutRelationInfo childrenTask(HollowTaskRequest request, int isForce) {
GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getFlowCardId, request.getFlowCardId()).last("limit 1"));
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
index b8d6dfd..f24eb99 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -104,7 +104,9 @@
.last("limit 1")
);
}
- Assert.isTrue(null != relationInfoOne, "鐩稿叧娴佺▼鍗℃湭鎵惧埌瀵瑰簲鐨勭粍鍙蜂俊鎭紝鐜荤拑娴佺▼鍗★細{}锛屽簭鍙凤細{}锛屾�诲眰鏁帮細{}锛屽眰鏁帮細{}", flowCardId, glassType, totalLayer, layer);
+ if (null == relationInfoOne) {
+ throw new RuntimeException("鐩稿叧娴佺▼鍗℃湭鎵惧埌瀵瑰簲鐨勭粍鍙蜂俊鎭紝鐜荤拑娴佺▼鍗★細" + flowCardId + "锛屽簭鍙凤細" + glassType + "锛屾�诲眰鏁帮細" + totalLayer + "锛屽眰鏁帮細" + layer);
+ }
Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_SLOT_WIDTH);
//璇︽儏琛ㄥ唴鑾峰彇鏈粍鏄惁宸茬粡鏈夌幓鐠冨湪绗煎瓙鍐咃紙0琛ㄧず鎻愬墠鍗犵敤锛�
int taskCount = hollowGlassOutRelationInfoService.count(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
@@ -304,27 +306,22 @@
public List<HollowAllFlowCardVO> queryHollowAllFlowCard(HollowBigStorageDetailsQueryVO query) {
Date startDate = new Date();
log.info("寮�濮嬫煡璇腑绌烘祦绋嬪崱浠诲姟淇℃伅锛屽紑濮嬫椂闂磠}", startDate);
- List<HollowBigStorageCageDetails> detailsList = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>()
- .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN)
- .like(StringUtils.isNotBlank(query.getFilmsId()), HollowBigStorageCageDetails::getFilmsId, query.getFilmsId())
- .like(StringUtils.isNotBlank(query.getFlowCardId()), HollowBigStorageCageDetails::getFlowCardId, query.getFlowCardId())
- .eq(query.getThickness() != 0, HollowBigStorageCageDetails::getThickness, query.getThickness())
- .orderByAsc(HollowBigStorageCageDetails::getFlowCardId)
- );
+ List<FlowCardGlassInfoDTO> detailsList = hollowBigStorageCageDetailsService.queryHollowAllFlowCard(query);
+
if (CollectionUtil.isEmpty(detailsList)) {
log.info("绗煎唴鏃犵幓鐠�");
return new ArrayList<>();
}
Date middleDate = new Date();
log.info("涓┖鐞嗙墖绗艰鎯呮暟鎹凡鏌ヨ瀹屾瘯锛岃�楁椂:{}ms", middleDate.getTime() - startDate.getTime());
- Map<String, List<HollowBigStorageCageDetails>> listMap = detailsList.stream().collect(Collectors.groupingBy(HollowBigStorageCageDetails::getFlowCardId));
+ Map<String, List<FlowCardGlassInfoDTO>> listMap = detailsList.stream().collect(Collectors.groupingBy(FlowCardGlassInfoDTO::getFlowCardId));
List<HollowAllFlowCardVO> resultList = new ArrayList<>();
AtomicInteger pairTotalCount = new AtomicInteger();
listMap.forEach((e, v) -> {
HollowAllFlowCardVO hollowAllFlowCardVO = new HollowAllFlowCardVO();
- HollowBigStorageCageDetails cageDetails = v.get(0);
+ FlowCardGlassInfoDTO cageDetails = v.get(0);
//鎸夌収娴佺▼鍗¤幏鍙栧搴旂殑浜у搧鍚嶇О
- OrderDetailsDTO orderDetails = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId(), query.getProductName(), query.getCustomerName());
+ OrderDetailsDTO orderDetails = this.queryProductNameByFlowCardId(cageDetails.getFlowCardId(), query.getProductName(), query.getCustomerName());
if (null != orderDetails) {
BeanUtils.copyProperties(orderDetails, hollowAllFlowCardVO);
hollowAllFlowCardVO.setFlowCardId(e);
@@ -333,12 +330,8 @@
} else {
hollowAllFlowCardVO.setIsThroughSlot(Boolean.FALSE);
}
- List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE);
- log.info("鑾峰彇鍒扮殑娴佺▼鍗′俊鎭负:{}", flowCardInfoList);
- if (CollectionUtil.isNotEmpty(flowCardInfoList)) {
- hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList);
- pairTotalCount.addAndGet(flowCardInfoList.get(0).getPairCount());
- }
+ hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(v);
+ pairTotalCount.addAndGet(cageDetails.getPairCount());
resultList.add(hollowAllFlowCardVO);
}
});
@@ -400,14 +393,20 @@
}
@Override
- public List<LackDetailsDTO> queryLackByFlowCard() {
- List<LackDetailsDTO> lackDetailsList = this.baseMapper.queryLackByFlowCard();
+ public List<LackDetailsDTO> queryAllLackByFlowCard() {
+ List<LackDetailsDTO> lackDetailsList = this.baseMapper.queryAllLackByFlowCard();
return lackDetailsList;
}
@Override
public int queryLayerByFlowCardId(String flowCardId) {
return baseMapper.queryLayerByFlowCardId(flowCardId);
+ }
+
+ @Override
+ public Map<Integer,List<LackDetailsDTO>> queryLackByFlowCard(String flowCardId) {
+ List<LackDetailsDTO> detailsDTOS = baseMapper.queryLackByFlowCard(flowCardId);
+ return detailsDTOS.stream().collect(Collectors.groupingBy(item -> item.getLayer()));
}
@Override
@@ -430,7 +429,9 @@
List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>()
.eq(GlassInfo::getFlowCardId, request.getFlowCardId())
.eq(GlassInfo::getLayer, request.getLayer())
- .eq(GlassInfo::getGlassType, request.getGlassType()));
+ .eq(GlassInfo::getGlassType, request.getGlassType())
+ .eq(request.getGlassId() != null, GlassInfo::getGlassId, request.getGlassId())
+ );
for (GlassInfo glassInfo : glassInfos) {
//鎺扮墖鎶ョ牬鎹�
damageService.autoSubmitReport(glassInfo.getGlassId(), request.getLine(), request.getWorkingProcedure(), request.getRemark(), request.getState());
@@ -438,6 +439,21 @@
return Boolean.TRUE;
}
+ @Override
+ public List<GlassInfo> queryLackGlassByFlowCard(HollowBigStorageDetailsQueryVO query) {
+ return baseMapper.queryLackGlassByFlowCard(query.getFlowCardId(), query.getOrderSort(), query.getLayer());
+ }
+
+ @Override
+ public OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId, String productName, String customerName) {
+ OrderDetailsDTO dto = hollowGlassOutRelationInfoService.queryProductNameByFlowCardId(flowCardId);
+ if ((StringUtils.isBlank(productName) || dto.getProductName().contains(productName)) && (StringUtils.isBlank(customerName) || dto.getCustomerName().contains(customerName))) {
+ return dto;
+ }
+ return null;
+ }
+
+
private void sortFlowCardIdList(List<HollowAllFlowCardVO> list) {
Pattern pattern = Pattern.compile("^NG(\\d+)([A-Za-z]+)(\\d+)$");
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/controller/HollowBigStorageCageHistoryTaskController.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/controller/HollowBigStorageCageHistoryTaskController.java
index a4d8f90..4514e39 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/controller/HollowBigStorageCageHistoryTaskController.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/controller/HollowBigStorageCageHistoryTaskController.java
@@ -47,5 +47,11 @@
public Result<List<RunTime>> queryRunTimes(String days) {
return Result.success(hollowBigStorageCageHistoryTaskService.queryRunTimes(days));
}
+
+ @ApiOperation(value = "鏌ヨ涓┖澶х悊鐗囩晫闈㈡墍鏈変俊鎭�", notes = "鏌ヨ涓┖澶х悊鐗囩晫闈㈡墍鏈変俊鎭�")
+ @GetMapping("/queryAllMessage")
+ public Result<String> queryAllMessage() {
+ return Result.success(hollowBigStorageCageHistoryTaskService.queryAllMessage());
+ }
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/HollowBigStorageCageHistoryTaskService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/HollowBigStorageCageHistoryTaskService.java
index 4fc5fd9..332fbf9 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/HollowBigStorageCageHistoryTaskService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/HollowBigStorageCageHistoryTaskService.java
@@ -22,5 +22,7 @@
DailyProductionVO queryHollowDailyProduction(HollowBigStorageCageHistoryRequest request);
List<RunTime> queryRunTimes(String days);
+
+ String queryAllMessage();
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
index 51a1415..4f297c2 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
@@ -9,11 +9,13 @@
import com.mes.hollowtask.entity.request.HollowBigStorageCageHistoryRequest;
import com.mes.hollowtask.mapper.HollowBigStorageCageHistoryTaskMapper;
import com.mes.hollowtask.service.HollowBigStorageCageHistoryTaskService;
+import com.mes.job.PushMessageToIndex;
import com.mes.largenscreen.entity.DailyProductionVO;
import com.mes.largenscreen.entity.RunTime;
import com.mes.tools.DateUtil;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.List;
@@ -25,6 +27,9 @@
*/
@Service
public class HollowBigStorageCageHistoryTaskServiceImpl extends ServiceImpl<HollowBigStorageCageHistoryTaskMapper, HollowBigStorageCageHistoryTask> implements HollowBigStorageCageHistoryTaskService {
+
+ @Resource
+ PushMessageToIndex pushMessageToIndex;
@Override
public Page<HollowBigStorageCageHistoryTask> queryHollowBigStorageCageHistoryTask(HollowBigStorageCageHistoryRequest request) {
@@ -57,8 +62,14 @@
}
@Override
- public List<RunTime> queryRunTimes(String days){
+ public List<RunTime> queryRunTimes(String days) {
return baseMapper.queryRunTimes(days);
}
+
+ @Override
+ public String queryAllMessage() {
+ pushMessageToIndex.hollowGlassMessage();
+ return "success";
+ }
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
index b7d3dbd..07ae663 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -115,7 +115,8 @@
private static final String ALARM_MODULE = "涓┖";
private static final String ALARM_TYPE = "涓┖澶х悊鐗�";
- private static final String ALARM_CODE = "sizeSame";
+ private static final String ALARM_CODE_SIZE = "sizeSame";
+ private static final String ALARM_CODE_ID = "idSame";
/**
* 鐩撮�氭牸瀛�
@@ -131,8 +132,7 @@
List<ProductAlarmInfo> alarmInfos = productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
.eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW)
.eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE)
- .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE)
- .eq(ProductAlarmInfo::getAlarmCode, ALARM_CODE));
+ .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE));
if (CollectionUtil.isNotEmpty(alarmInfos)) {
log.info("鐣岄潰鎶ヨ锛岀瓑寰呬汉宸ュ共棰勫鐞�");
return;
@@ -179,6 +179,13 @@
for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) {
if (entry.getValue() > 1) {
log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
+ ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+ alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+ alarmInfo.setAlarmModule(ALARM_MODULE);
+ alarmInfo.setAlarmType(ALARM_TYPE);
+ alarmInfo.setAlarmCode(ALARM_CODE_ID);
+ alarmInfo.setAlarmMessage(entry.getKey());
+ productAlarmInfoService.save(alarmInfo);
//鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
s7DataZKDLPOne = new S7DataZKDLPOne();
s7DataZKDLPOne.setAlramSignal(2);
@@ -191,6 +198,16 @@
if (CollectionUtil.isNotEmpty(detailsList)) {
log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
//鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
+ List<String> sameGlassIds = detailsList.stream()
+ .map(HollowBigStorageCageDetails::getGlassId)
+ .collect(Collectors.toList());
+ ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+ alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+ alarmInfo.setAlarmModule(ALARM_MODULE);
+ alarmInfo.setAlarmType(ALARM_TYPE);
+ alarmInfo.setAlarmCode(ALARM_CODE_ID);
+ alarmInfo.setAlarmMessage(sameGlassIds.toString());
+ productAlarmInfoService.save(alarmInfo);
s7DataZKDLPOne = new S7DataZKDLPOne();
s7DataZKDLPOne.setAlramSignal(4);
s7SerializerZKDLPOne.write(s7DataZKDLPOne);
@@ -275,7 +292,7 @@
alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
alarmInfo.setAlarmModule(ALARM_MODULE);
alarmInfo.setAlarmType(ALARM_TYPE);
- alarmInfo.setAlarmCode(ALARM_CODE);
+ alarmInfo.setAlarmCode(ALARM_CODE_SIZE);
alarmInfo.setAlarmMessage(info.getGlassId());
productAlarmInfoService.save(alarmInfo);
//閲嶇疆璇︽儏琛ㄦ暟鎹�
@@ -1024,10 +1041,19 @@
}
baseInfoList = resultList;
} else {
- //澶т簬鎬诲眰鏁板厛鍙杢otalLyaer鍊嶆暟鏁伴噺鐨勭幓鐠冿紝淇濊瘉澶ц溅涓婄殑鐜荤拑鎴愬浼�
+ //澶т簬鎬诲眰鏁板厛鍙杢otalLayer鍊嶆暟鏁伴噺鐨勭幓鐠冿紝淇濊瘉澶ц溅涓婄殑鐜荤拑鎴愬浼�
int remainCount = templist.size() % totalLayer;
if (targetSlot == 930) {
- baseInfoList = templist.subList(0, totalLayer);
+ int tempSequence = templist.get(0).getHollowSequence();
+ List<T> resultList = new ArrayList<>();
+ for (int i = 0; i < templist.size(); i++) {
+ if (tempSequence == list.get(i).getHollowSequence()) {
+ resultList.add(templist.get(i));
+ } else {
+ break;
+ }
+ }
+ baseInfoList = resultList;
} else {
baseInfoList = templist.subList(0, templist.size() - remainCount);
}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
index 2c460ac..87bb726 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -336,7 +336,7 @@
jsonObject.append("bigStorageCageUsageSummary", bigStorageCageUsageSummary);
//缂虹墖璇︽儏
- List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryLackByFlowCard();
+ List<LackDetailsDTO> lackDetailsList = hollowGlassRelationInfoService.queryAllLackByFlowCard();
jsonObject.append("lackDetailsList", lackDetailsList);
jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>()
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-dev.yml
index 18045e8..b9b0000 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-dev.yml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-dev.yml
@@ -5,7 +5,7 @@
strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
datasource:
northGlassMes:
- url: jdbc:mysql://127.0.0.1:3306/north_glass_mes?serverTimezone=GMT%2b8
+ url: jdbc:mysql://127.0.0.1:3306/yw_mes?serverTimezone=GMT%2b8
username: root
password: beibo.123/
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -24,23 +24,19 @@
discovery:
server-addr: 127.0.0.1:8848
redis:
- database: 0
+ database: 1
host: 127.0.0.1
port: 6379
password: 123456
- kangaroohy:
- milo:
- enabled: true
- primary: default
- config:
- default:
- endpoint: opc.tcp://10.153.19.150:49320
- security-policy: basic256sha256
- username: admin
- password: 1qaz2wsx3edc4rfv
+ cache:
+ type: redis # 鏄庣‘鎸囧畾缂撳瓨绫诲瀷
+ redis:
+ time-to-live: -1 # 缂撳瓨杩囨湡鏃堕棿
+ cache-null-values: true # 鏄惁缂撳瓨绌哄��
+ use-key-prefix: true # 浣跨敤key鍓嶇紑
kangaroohy:
milo:
- enabled: true
+ enabled: false
primary: default
config:
default:
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
index d01fb36..ba5ade2 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
@@ -50,77 +50,72 @@
</update>
<select id="hollowIsAll" resultMap="baseMap">
- WITH sum_flow_layer_count AS ( SELECT flow_card_id, layer, min( films_id ) AS films_id, min(thickness) as
- thickness,count(*) AS sum_count FROM hollow_glass_relation_info GROUP BY flow_card_id, layer ),
- real_flow_layer_count AS ( SELECT flow_card_id, layer, count(*) AS real_count, count(distinct slot) as
- slot_count FROM
- hollow_big_storage_cage_details t WHERE state = 100 GROUP BY flow_card_id, layer ),
- damage_flow_layer_count AS ( SELECT process_id AS flow_card_id, technology_number AS layer, count(*) as
- damage_count FROM damage where type in(8,9) GROUP BY process_id, technology_number ),
- lack_flow_layer_count AS (
+ WITH flow_layer_stats AS (
SELECT
- t.flow_card_id,
- t.layer,
- ifnull((sum_count - real_count - ifnull(damage_count,0)),0) AS lack_count
- FROM
- sum_flow_layer_count t
- left JOIN real_flow_layer_count t1 ON t.flow_card_id = t1.flow_card_id
- AND t.layer = t1.layer
- left JOIN damage_flow_layer_count t2 ON t1.flow_card_id = t2.flow_card_id
- AND t1.layer = t2.layer
+ h.flow_card_id,
+ h.layer,
+ MIN(r.films_id) AS films_id,
+ MIN(r.thickness) AS thickness,
+ COUNT(*) AS sum_count,
+ COUNT(DISTINCT h.slot) AS slot_count,
+ SUM(CASE WHEN h.state = 100 THEN 1 ELSE 0 END) AS real_count
+ FROM hollow_glass_relation_info r
+ LEFT JOIN hollow_big_storage_cage_details h
+ ON r.flow_card_id = h.flow_card_id AND r.layer = h.layer
+ WHERE r.flow_card_id = #{flowCardId}
+ GROUP BY h.flow_card_id, h.layer
),
- layer_one AS ( SELECT * FROM hollow_big_storage_cage_details WHERE layer = 1 AND state = 100 ),
- layer_two AS ( SELECT * FROM hollow_big_storage_cage_details WHERE layer = 2 AND state = 100),
- layer_three AS ( SELECT * FROM hollow_big_storage_cage_details WHERE layer = 3 AND state = 100 )
- ,
- pair_flow_layer_count AS (
+ damage_stats AS (
SELECT
- t.flow_card_id,
- count(*) AS pair_count
- FROM
- layer_one t
- INNER JOIN layer_two t1 ON t.flow_card_id = t1.flow_card_id
- AND t.virtual_slot = t1.virtual_slot
- AND t.sequence = t1.sequence
+ process_id AS flow_card_id,
+ technology_number AS layer,
+ COUNT(*) AS damage_count
+ FROM damage
+ WHERE type IN (8,9) AND process_id = #{flowCardId}
+ GROUP BY process_id, technology_number
+ ),
+ pair_stats AS (
+ SELECT
+ t1.flow_card_id,
+ COUNT(*) AS pair_count
+ FROM hollow_big_storage_cage_details t1
+ INNER JOIN hollow_big_storage_cage_details t2
+ ON t1.flow_card_id = t2.flow_card_id
+ AND t1.virtual_slot = t2.virtual_slot
+ AND t1.sequence = t2.sequence
+ AND t1.layer = 1 AND t2.layer = 2
+ AND t1.state = 100 AND t2.state = 100
<if test="totalLayer == 3">
- inner join layer_three t2
- on t.flow_card_id = t2.flow_card_id and
- t.virtual_slot = t2.virtual_slot and t.sequence = t2.sequence
+ INNER JOIN hollow_big_storage_cage_details t3
+ ON t1.flow_card_id = t3.flow_card_id
+ AND t1.virtual_slot = t3.virtual_slot
+ AND t1.sequence = t3.sequence
+ AND t3.layer = 3 AND t3.state = 100
</if>
- GROUP BY
- t.flow_card_id
- ),
- result_flow_layer_count AS (
+ WHERE t1.flow_card_id = #{flowCardId}
+ GROUP BY t1.flow_card_id
+ )
SELECT
- t.flow_card_id,
- t.layer,
- t.films_id,
- t.thickness,
- sum_count,
- IFNULL( t3.pair_count, 0 ) AS pair_count,
- IFNULL( real_count, 0 ) AS real_count,
- IFNULL( damage_count, 0 ) AS damage_count,
- IFNULL( lack_count, 0 ) AS lack_count,
- IFNULL(slot_count,0) AS slot_count
- FROM
- sum_flow_layer_count t
- LEFT JOIN real_flow_layer_count t1 ON t.flow_card_id = t1.flow_card_id
- AND t.layer = t1.layer
- LEFT JOIN lack_flow_layer_count t2 ON t.flow_card_id = t2.flow_card_id
- AND t.layer = t2.layer
- LEFT JOIN pair_flow_layer_count t3 ON t.flow_card_id = t3.flow_card_id
- LEFT JOIN damage_flow_layer_count t4 ON t.flow_card_id = t4.flow_card_id
- AND t.layer = t4.layer
- ) SELECT
- *
- FROM
- result_flow_layer_count
- WHERE
- flow_card_id = #{flowCardId}
+ f.flow_card_id,
+ f.layer,
+ f.films_id,
+ f.thickness,
+ f.sum_count,
+ COALESCE(p.pair_count, 0) AS pair_count,
+ COALESCE(f.real_count, 0) AS real_count,
+ COALESCE(d.damage_count, 0) AS damage_count,
+ (f.sum_count - COALESCE(f.real_count, 0) - COALESCE(d.damage_count, 0)) AS lack_count,
+ f.slot_count
+ FROM flow_layer_stats f
+ LEFT JOIN damage_stats d
+ ON f.flow_card_id = d.flow_card_id AND f.layer = d.layer
+ LEFT JOIN pair_stats p
+ ON f.flow_card_id = p.flow_card_id
+ WHERE 1=1
<if test="flag == true">
- and sum_count = pair_count
+ AND f.sum_count = COALESCE(p.pair_count, 0)
</if>
- order by layer
+ ORDER BY f.layer;
</select>
<select id="queryIsAllNeedDispatchVirtualSlot" resultMap="virtualSlotSequenceDTO">
@@ -257,4 +252,129 @@
where state in (100, 102, 103, 104)
group by flow_card_id, layer
</select>
+
+ <select id="queryHollowAllFlowCard" resultType="com.mes.hollow.entity.dto.FlowCardGlassInfoDTO">
+ WITH hollow_flow_temp AS (
+ SELECT DISTINCT flow_card_id
+ FROM hollow_big_storage_cage_details
+ WHERE state = 100
+ <if test="flowCardId != null and flowCardId != ''">
+ AND flow_card_id LIKE CONCAT('%', #{flowCardId}, '%')
+ </if>
+ <if test="filmsId != null and filmsId != ''">
+ AND films_id LIKE CONCAT('%', #{filmsId}, '%')
+ </if>
+ <if test="thickness != 0">
+ AND thickness = #{thickness}
+ </if>
+ ),
+ hollow_details_temp AS (
+ SELECT
+ flow_card_id,
+ glass_id,
+ virtual_slot,
+ sequence,
+ layer,
+ total_layer,
+ hollow_sequence
+ FROM hollow_big_storage_cage_details
+ WHERE state = 100
+ <if test="flowCardId != null and flowCardId != ''">
+ AND flow_card_id LIKE CONCAT('%', #{flowCardId}, '%')
+ </if>
+ <if test="filmsId != null and filmsId != ''">
+ AND films_id LIKE CONCAT('%', #{filmsId}, '%')
+ </if>
+ <if test="thickness != 0">
+ AND thickness = #{thickness}
+ </if>
+ ),
+ hollow_through_temp AS (
+ SELECT
+ flow_card_id,
+ MIN(hollow_sequence) as hollow_sequence,
+ MAX(total_layer) as total_layer
+ FROM hollow_details_temp
+ GROUP BY flow_card_id
+ ),
+ hollow_pair_temp AS (
+ SELECT
+ t1.flow_card_id,
+ COUNT(*) AS pair_count
+ FROM hollow_details_temp t1
+ INNER JOIN hollow_details_temp t2
+ ON t1.flow_card_id = t2.flow_card_id
+ AND t1.virtual_slot = t2.virtual_slot
+ AND t1.sequence = t2.sequence
+ AND t1.layer = 1 AND t2.layer = 2
+ WHERE NOT EXISTS (
+ SELECT 1
+ FROM hollow_through_temp ht
+ WHERE ht.flow_card_id = t1.flow_card_id
+ AND ht.total_layer = 3
+ ) OR EXISTS (
+ SELECT 1
+ FROM hollow_details_temp t3
+ WHERE t3.flow_card_id = t1.flow_card_id
+ AND t3.virtual_slot = t1.virtual_slot
+ AND t3.sequence = t1.sequence
+ AND t3.layer = 3
+ )
+ GROUP BY t1.flow_card_id
+ ),
+ glass_info_temp AS (
+ SELECT
+ gi.id,
+ gi.glass_id,
+ gi.flow_card_id,
+ gi.layer,
+ gi.thickness,
+ gi.filmsId
+ FROM hollow_flow_temp hft
+ INNER JOIN glass_info gi ON hft.flow_card_id = gi.flow_card_id
+ ),
+ damage_ranked AS (
+ SELECT
+ d.glass_id,
+ d.type,
+ d.status,
+ ROW_NUMBER() OVER(PARTITION BY d.glass_id ORDER BY d.id DESC) as rn
+ FROM hollow_flow_temp hft
+ INNER JOIN damage d ON hft.flow_card_id = d.process_id
+ ),
+ damage_latest AS (
+ SELECT
+ glass_id,
+ type,
+ status
+ FROM damage_ranked
+ WHERE rn = 1
+ ),
+ result_temp AS (
+ SELECT
+ t.flow_card_id,
+ t.layer,
+ t.thickness,
+ t.filmsId,
+ COUNT(DISTINCT t.id) as sum_count,
+ COUNT(DISTINCT t1.glass_id) as real_count,
+ COUNT(DISTINCT t.id) - COUNT(DISTINCT t1.glass_id) as lack_count,
+ COUNT(DISTINCT CASE WHEN t2.type IN (7,8) AND t2.status = 1 THEN t.glass_id END) as damage_count
+ FROM glass_info_temp t
+ LEFT JOIN hollow_details_temp t1 ON t.glass_id = t1.glass_id
+ LEFT JOIN damage_latest t2 ON t.glass_id = t2.glass_id
+ GROUP BY t.flow_card_id, t.layer, t.thickness, t.filmsId
+ )
+ SELECT
+ t.*,
+ COALESCE(t1.pair_count, 0) as pair_count,
+ t2.hollow_sequence,
+ t2.total_layer
+ FROM result_temp t
+ LEFT JOIN hollow_pair_temp t1 ON t.flow_card_id = t1.flow_card_id
+ LEFT JOIN hollow_through_temp t2 ON t.flow_card_id = t2.flow_card_id
+ ORDER BY t.flow_card_id
+ </select>
+
+
</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
index 5aeed84..1507b97 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
@@ -39,4 +39,15 @@
date( hgori.create_time ) = date(
now())
</select>
+ <select id="queryProductNameByFlowCardId" resultType="com.mes.hollow.entity.dto.OrderDetailsDTO">
+ select t.product_name, t1.customer_name
+ from sd.order_detail t
+ inner join sd.order t1 on t.order_id = t1.order_id
+ where (t.order_id, t.order_number) = (
+ select min(order_id) as order_id, min(order_number) as order_number
+ from pp.flow_card
+ where process_id = #{flowCardId}
+ )
+ limit 1
+ </select>
</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index f59fda8..f63ee25 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -13,10 +13,10 @@
<resultMap id="lackBaseMap" type="com.mes.hollow.entity.dto.LackDetailsDTO">
<result column="flow_card_id" property="flowCardId"/>
<result column="layer" property="layer"/>
- <result column="order_sort" property="glassType"/>
- <result column="films_id" property="filmsId"/>
- <result column="first_length" property="width"/>
- <result column="second_Length" property="height"/>
+ <result column="glass_type" property="glassType"/>
+ <result column="filmsid" property="filmsId"/>
+ <result column="width" property="width"/>
+ <result column="height" property="height"/>
<result column="thickness" property="thickness"/>
<result column="lack_count" property="lackCount"/>
<result column="damage_count" property="damageCount"/>
@@ -105,59 +105,68 @@
select *
from result
</select>
- <select id="queryLackByFlowCard" resultMap="lackBaseMap">
- with flow_card_id_info as (
- select distinct flow_card_id from hollow_big_storage_cage_details where state = 100
+ <select id="queryAllLackByFlowCard" resultMap="lackBaseMap">
+ WITH flow_card_id_info AS (
+ SELECT DISTINCT flow_card_id
+ FROM hollow_big_storage_cage_details
+ WHERE state = 100
),
- relation_length as (
- select flow_card_id,
- layer,
- order_sort,
- tempering_layout_id,
- tempering_feed_sequence,
- GREATEST(width, height) as first_length,
- LEAST(width, height) as second_Length,
- width,
- height,
- thickness,
- films_id
- from hollow_glass_relation_info
- where flow_card_id in (select flow_card_id from flow_card_id_info)
- and tempering_layout_id is null
- and tempering_feed_sequence is null
+ glass_temp AS (
+ SELECT t.*
+ FROM glass_info t
+ INNER JOIN flow_card_id_info t1 ON t.flow_card_id = t1.flow_card_id
),
- lack_count_temp as (
- select flow_card_id,
- layer,
- order_sort,
- first_length,
- films_id,
- second_Length,
- thickness,
- count(*) as lack_count
- from relation_length
- group by flow_card_id, layer, order_sort, films_id, first_length, second_Length, thickness
+ detail_temp AS (
+ SELECT t.*
+ FROM glass_temp t
+ WHERE NOT EXISTS (
+ SELECT 1
+ FROM hollow_big_storage_cage_details t1
+ WHERE t1.glass_id = t.glass_id
+ AND t1.state NOT IN (8,9)
+ )
),
- damage_count_temp as (
- select process_id as flow_card_id,
- technology_number as layer,
- order_number as order_sort,
- count(1) as damage_count
- from damage
- where process_id in (select flow_card_id from flow_card_id_info)
- and type in (8, 9)
- and status < 3
- group by process_id, technology_number, order_number
+ damage_latest AS (
+ SELECT
+ dr.glass_id,
+ dr.type,
+ dr.status
+ FROM (
+ SELECT
+ t1.glass_id,
+ t1.type,
+ t1.status,
+ ROW_NUMBER() OVER(PARTITION BY t1.glass_id ORDER BY t1.id DESC) as rn
+ FROM detail_temp t
+ INNER JOIN damage t1 ON t.flow_card_id = t1.process_id
+ ) dr
+ WHERE dr.rn = 1
),
- result_count as (
- select t.*, IFNULL(t1.damage_count, 0) damage_count
- from lack_count_temp t
- left join damage_count_temp t1 on t.flow_card_id = t1.flow_card_id and t.layer = t1.layer and
- t.order_sort = t1.order_sort
- order by t.flow_card_id, t.layer
+ result_temp AS (
+ SELECT
+ t.flow_card_id,
+ t.layer,
+ t.glass_type,
+ t.thickness,
+ t.filmsId,
+ t.width,
+ t.height,
+ COUNT(DISTINCT t.glass_id) as lack_count,
+ COUNT(DISTINCT CASE WHEN t1.type IN (7,8) AND t1.status = 1 THEN t.glass_id END) as damage_count
+ FROM detail_temp t
+ LEFT JOIN damage_latest t1 ON t.glass_id = t1.glass_id
+ GROUP BY
+ t.flow_card_id,
+ t.layer,
+ t.glass_type,
+ t.thickness,
+ t.filmsId,
+ t.width,
+ t.height
)
- select *
- from result_count
+ SELECT *
+ FROM result_temp
+ ORDER BY flow_card_id, layer;
</select>
<select id="queryLayerByFlowCardId" resultType="java.lang.Integer">
select count(distinct layer)
@@ -181,19 +190,75 @@
)
limit 1
</select>
+ <select id="queryLackGlassByFlowCard" resultType="com.mes.glassinfo.entity.GlassInfo">
+ with glass_id_info as (
+ select glass_id,order_sort from hollow_glass_relation_info where flow_card_id=#{flowCardId} and
+ order_sort=#{orderSort} and layer=#{layer} and glass_id is not null
+ ),
+ damage_glass_id as (
+ select glass_id from damage where process_id=#{flowCardId} and order_number=#{orderSort} and
+ technology_number=#{layer} and type=8 and status < 3 and glass_id is not null
+ )
+ select t.* from glass_info t left join glass_id_info t1 on t.glass_id=t1.glass_id
+ left join damage_glass_id t2 on t.glass_id=t2.glass_id
+ where t.flow_card_id=#{flowCardId} and t.glass_type=#{orderSort} and t.layer=#{layer} and t1.glass_id is null
+ and t2.glass_id is null
+ </select>
+ <select id="queryLackByFlowCard" resultType="com.mes.hollow.entity.dto.LackDetailsDTO">
+ with hollow_flow_temp AS (
+ SELECT DISTINCT flow_card_id
+ FROM hollow_big_storage_cage_details
+ WHERE state = 100
+ <if test="flowCardId != null and flowCardId != ''">
+ and flow_card_id = #{flowCardId}
+ </if>
+ )
+ , glass_temp as (
+ select t1.*
+ from hollow_flow_temp t
+ INNER JOIN glass_info t1 on t.flow_card_id = t1.flow_card_id
+ )
+ , detail_temp as (
+ select t.*
+ from glass_temp t
+ left join hollow_big_storage_cage_details t1 on t.glass_id = t1.glass_id and t1.state not in (8,9)
+ where t1.glass_id is null
+ )
+ , damage_ranked AS (
+ SELECT t.flow_card_id,
+ t.layer,
+ t.glass_id,
+ t.glass_type,
+ t.width,
+ t.height,
+ t.filmsId,
+ t.thickness,
+ case
+ when type in (7, 8) and status = 1 then ''
+ else t1.working_procedure end as working_procedure,
+ ROW_NUMBER() OVER (PARTITION BY t1.glass_id ORDER BY t1.id DESC) as rn
+ FROM detail_temp t
+ inner join damage t1 on t.glass_id = t1.glass_id
+ )
+ , damage_latest AS (
+ SELECT *
+ FROM damage_ranked
+ WHERE rn = 1
+ )
+ select *
+ from damage_latest
+
+ </select>
<update id="clearDirtyFlowCardData">
- update hollow_glass_relation_info
- set glass_id = null,
- tempering_layout_id = null,
- tempering_feed_sequence = null,
- engineer_id = null,
- state = 0
+ update tempering_glass_relation_info
+ set shelf_order = null
+ , state = 0
where flow_card_id = #{flowCardId}
and layer = #{layer}
- and glass_id not in (
- select glass_id
- from hollow_big_storage_cage_details
+ and shelf_order not in (
+ select shelf_order
+ from vertical_sheet_cage_details
where flow_card_id = #{flowCardId}
and layer = #{layer}
and state in (100, 102, 103, 104)
--
Gitblit v1.8.0