From 1d3a018e6d707179eef127424e3d78d3863fba71 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期一, 30 三月 2026 16:09:02 +0800
Subject: [PATCH] 实现MES过点记录与库存变动记录全流程功能 本次提交实现了MES过点记录和库存变动记录的前后端全流程,包括数据模型、仓储、服务、控制器、前端页面及扩展配置。新增精排显示页面,支持虚拟精排与车身信息弹窗。优化货位信息行页面的悬浮提示框,丰富展示内容并美化样式。后端完善了相关API、DTO、AutoMapper映射及业务逻辑,支持数据追溯与可视化。整体提升了系统的可维护性和用户体验。
---
项目代码/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue | 415 ++++++++++++
项目代码/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/StockQuantityChangeRecordService.cs | 40 +
项目代码/WMS/WMSClient/src/router/tables.js | 28
项目代码/WMS/WMSServer/WIDESEA_DTO/Basic/MesLockDTO.cs | 16
项目代码/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_StockQuantityChangeRecord.cs | 162 ++++
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs | 5
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StockQuantityChangeRecordController.cs | 23
项目代码/WMS/WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_PassPointRecordRepository.cs | 18
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_PassPointRecordRepository.cs | 14
项目代码/WMS/WMSClient/src/views/widesea_wms/stock/JElDescription.vue | 162 ++++
项目代码/WMS/WMSServer/WIDESEA_StorageBasicRepository/Stock/StockQuantityChangeRecordRepository.cs | 18
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_PassPointRecordService.cs | 19
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IStockQuantityChangeRecordService.cs | 18
项目代码/WMS/WMSClient/src/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue | 99 ++
项目代码/WMS/WMSClient/src/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js | 67 +
项目代码/WMS/WMSServer/WIDESEA_DTO/Location/LocationView.cs | 8
项目代码/WMS/WMSClient/src/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue | 73 ++
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_StockInfoController.cs | 1
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockQuantityChangeRecordRepository.cs | 14
项目代码/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_MesLockInfoService.cs | 56 +
项目代码/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/MESService.cs | 8
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_MesLockInfoController.cs | 12
项目代码/WMS/WMSServer/WIDESEA_WMSServer/GlobalUsing.cs | 3
项目代码/WMS/WMSClient/src/views/widesea_wms/stock/locationInfoRow.vue | 461 ++++++++++---
项目代码/WMS/WMSServer/WIDESEA_Core/Enums/StockEnum.cs | 30
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_StockInfoService.cs | 1
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs | 2
项目代码/WMS/WMSClient/src/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js | 61 +
项目代码/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_PassPointRecord.cs | 72 ++
项目代码/WMS/WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs | 11
项目代码/WMS/WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_PassPointRecordService.cs | 49 +
项目代码/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_StockInfoService.cs | 5
项目代码/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_PassPointRecordController.cs | 23
项目代码/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_MesLockInfoService.cs | 3
34 files changed, 1,881 insertions(+), 116 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js"
new file mode 100644
index 0000000..0595aa0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js"
@@ -0,0 +1,67 @@
+
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() { //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+ // this.buttons.unshift({ //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+ // name: '鎸夐挳', //鎸夐挳鍚嶇О
+ // icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+ // type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+ // onClick: function () {
+ // this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+ // }
+ // });
+
+ //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+ this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true;
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js"
new file mode 100644
index 0000000..2a64fbd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js"
@@ -0,0 +1,61 @@
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ //璁剧疆鏌ヨ鐣岄潰寮瑰嚭妗嗙殑label瀹藉害
+ this.boxOptions.labelWidth = 50;
+
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true;
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ addrow() {
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ //this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/router/tables.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/router/tables.js"
index 1dbbe34..bfd56a1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/router/tables.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/router/tables.js"
@@ -292,6 +292,14 @@
}
},
{
+ path: '/Eliteselection',
+ name: 'Eliteselection',
+ component: () => import('@/views/widesea_wms/stock/Eliteselection.vue'),
+ meta: {
+ keepAlive: false
+ }
+ },
+ {
path: '/Dt_PaintingOrderInfo',
name: 'Dt_PaintingOrderInfo',
component: () => import('@/views/widesea_wms/OrderInfo/Dt_PaintingOrderInfo.vue'),
@@ -326,9 +334,23 @@
path: '/VV_MesLockInfo',
name: 'VV_MesLockInfo',
component: () => import('@/views/widesea_wms/stock/VV_MesLockInfo.vue'),
- // meta: {
- // keepAlive: true
- // }
+ meta: {
+ keepAlive: false
+ }
+ },{
+ path: '/Dt_StockQuantityChangeRecord',
+ name: 'Dt_StockQuantityChangeRecord',
+ component: () => import('@/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue'),
+ meta: {
+ keepAlive: false
+ }
+ },{
+ path: '/Dt_PassPointRecord',
+ name: 'Dt_PassPointRecord',
+ component: () => import('@/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue'),
+ meta: {
+ keepAlive: false
+ }
},
]
export default tables
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue"
new file mode 100644
index 0000000..20607d5
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue"
@@ -0,0 +1,73 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/basicinfo/PointStackerRelation.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'PointID',
+ footer: "Foots",
+ cnName: 'MES杩囩偣璁板綍',
+ name: 'Dt_PassPointRecord',
+ url: "/Dt_PassPointRecord/",
+ sortName: "Id"
+ });
+ const editFormFields = ref({
+
+ });
+ const editFormOptions = ref([
+
+ ]);
+ const searchFormFields = ref({});
+ const searchFormOptions = ref([
+ [
+ { "title": "绔欏彴缂栧彿", "field": "pointCode", type: "text" },
+ { "title": "鍫嗗灈鏈虹紪鍙�", "field": "stackerCode", type: "text" },
+ ],
+ [
+ { "title": "鍏崇郴鐨勬柟鍚�", "field": "direction", type: "text" },
+ { "title": "鍏崇郴鐨勫尯鍩�", "field": "area", type: "text" },
+ ]
+ ]);
+ const columns = ref([{ field: 'id', title: '涓婚敭', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
+ { field: 'palletCode', title: '婊戞﹪鍙�', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
+ { field: 'position', title: '杩囩偣', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'pvi', title: 'PVI', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'passPointTime', title: '杩囩偣鏃堕棿', type: 'int', sort: true, width: 110, align: 'left' },
+ { field: 'lineCode', title: '琛屽彿', type: 'int', sort: true, width: 110, align: 'left' },
+ { field: 'content', title: '璇锋眰鍙傛暟', type: 'int', sort: true, width: 250, align: 'left' },
+ { field: 'creater', title: '鍒涘缓浜�', type: 'string', sort: true, width: 110, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃堕棿', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },])
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue"
new file mode 100644
index 0000000..b43ff1b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue"
@@ -0,0 +1,99 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wms/invoices/Dt_InboundOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '搴撳瓨鍙樺姩璁板綍',
+ name: 'StockQuantityChangeRecord',
+ url: "/StockQuantityChangeRecord/",
+ sortName: "id"
+ });
+ const editFormFields = ref({
+ });
+ const editFormOptions = ref([
+ ]);
+ const searchFormFields = ref({
+
+ });
+ const searchFormOptions = ref([
+ [
+ { "title": "婊戞﹪鍙�", "field": "palletCode", type: "text" },
+ { "title": "搴撲綅鍙�", "field": "locationCode", type: "text" },
+ { "title": "鍙樺姩绫诲瀷", "field": "changeType", type: "select", dataKey: "ChangeType", data: [] },
+ { "title": "浠诲姟鍙�", "field": "taskNum", type: "text" },
+ ],
+ [
+ { "title": "PVI", "field": "pvi", type: "string" },
+ { "title": "杞﹁韩ID", "field": "carBodyID", type: "int" },
+ { "title": "宸烽亾鍙�", "field": "roadwayNo", type: "int" },
+ { "title": "搴撳瓨ID", "field": "stockId", type: "int" },
+ ],
+ [
+ { "title": "鐧借溅韬墿鏂欏彿", "field": "biwMaterialCode", type: "int" },
+ { "title": "杞﹁韩绫诲瀷", "field": "carType", type: "select", dataKey: "BodyType", data: [] },
+ { "title": "宸ュ崟绫诲瀷", "field": "workOrderType", type: "select", dataKey: "OrderType", data: [] },
+ { "title": "杞﹀瀷", "field": "vehicleCharacteristic", type: "string" },
+ ],
+ [
+
+ { "title": "褰╄溅韬墿鏂欏彿", "field": "pbMaterial", type: "string" },
+ { "title": "杞﹁韩棰滆壊", "field": "carBodyCharacteristic", type: "string" },
+ { "title": "澶╃獥鐗瑰緛", "field": "skylightCharacteristic", type: "string" },
+ ]
+ ]);
+ const columns = ref([
+ { field: 'id', title: '涓婚敭ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
+ { field: 'stockId', title: '搴撳瓨ID', type: 'string', width: 90, align: 'left' },
+ { field: 'taskNum', title: '浠诲姟鍙�', type: 'string', width: 60, align: 'left' },
+ { field: 'changeType', title: '鍙樺姩绫诲瀷', type: 'int', width: 90, align: 'left', bind: { key: "ChangeType", data: [] } },
+ { field: 'palletCode', title: '婊戞﹪鍙�', type: 'string', width: 75, align: 'left' },
+ { field: 'locationCode', title: '搴撲綅鍙�', type: 'int', width: 120, align: 'left' },
+ { field: 'roadwayNo', title: '宸烽亾鍙�', type: 'string', width: 60, align: 'left' },
+ { field: 'pvi', title: 'PVI鐮�', type: 'string', width: 120, align: 'left' },
+ { field: 'carBodyID', title: '杞﹁韩ID', type: 'int', width: 90, align: 'left' },
+ { field: 'vehicleCharacteristic', title: '杞﹀瀷', type: 'string', width: 75, align: 'left' },
+ { field: 'carType', title: '杞﹁韩绫诲瀷', type: 'int', width: 80, align: 'left', bind: { key: "BodyType", data: [] } },
+ { field: 'workOrderType', title: '宸ュ崟绫诲瀷', type: 'string', width: 100, align: 'left', bind: { key: "OrderType", data: [] } },
+ { field: 'skylightCharacteristic', title: '澶╃獥鐗瑰緛', type: 'string', width: 75, align: 'left' },
+ { field: 'carBodyCharacteristic', title: '杞﹁韩棰滆壊', type: 'string', width: 75, align: 'left' },
+ { field: 'biwMaterialCode', title: '鐧借溅韬墿鏂欏彿', type: 'string', width: 120, align: 'left' },
+ { field: 'pbMaterial', title: '褰╄溅韬墿鏂欏彿', type: 'string', width: 120, align: 'left' },
+ { field: 'biwInPassTime', title: '鐒婅涓婄嚎鏃堕棿', type: 'datetime', width: 130, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', sort: true, width: 100, align: 'left' },
+ ]);
+
+ const detail = ref({
+ cnName: "#detailCnName",
+ table: "#detailTable",
+ columns: [],
+ sortName: "",
+ key: ""
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
+</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue"
new file mode 100644
index 0000000..ee08a4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/Eliteselection.vue"
@@ -0,0 +1,415 @@
+<template>
+ <div class="container">
+ <div class="header">
+ <div class="title">绮炬帓鏄剧ず</div>
+ <div class="legend-section">
+ <div class="legend-item">
+ <div class="legend-label">铏氭嫙绮炬帓</div>
+ <span class="color-box color-green"></span>
+ </div>
+ <div class="legend-item">
+ <div class="legend-label">铏氭嫙绮炬帓鏃犱换鍔�</div>
+ <span class="color-box color-lightgreen"></span>
+ </div>
+ </div>
+ </div>
+ <div class="content-wrapper">
+ <div class="content">
+ <div v-if="displayItems.length === 0" class="no-data">
+ <div class="no-data-text">鏆傛棤鏁版嵁</div>
+ </div>
+ <div v-for="(item, index) in displayItems" :key="index" class="box">
+ <div class="box-content color-green" v-if="item.lockStatue == 1" @click="mouseClick(item.pvi)">
+ <div class="text-line">{{ item.pvi }}</div>
+ <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+ <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+ </div>
+ <div class="box-content color-lightgreen" v-else-if="item.lockStatue == 0"
+ @click="mouseClick(item.pvi)">
+ <div class="text-line">{{ item.pvi }}</div>
+ <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+ <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+ </div>
+ <div class="box-content color-font" v-else-if="item.lockStatue != 1 || item.lockStatue != 0"
+ @click="mouseClick(item.pvi)">
+ <div class="text-line">{{ item.pvi }}</div>
+ <div class="text-line">{{ item.vehicleCharacteristic }}</div>
+ <div class="text-line">{{ item.carBodyCharacteristic }}</div>
+ </div>
+ <div class="box-index">{{ index + 1 }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <el-dialog v-model="dialogVisible" title="杞﹁韩淇℃伅鏌ョ湅" :before-close="handleClose">
+ <div v-if="stockInfos.message" class="no-data-message">{{ stockInfos.message }}</div>
+ <el-form v-else ref="$form" :model="stockInfos" label-position="left" label-width="120px" size="medium">
+ <el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="搴撲綅缂栧彿锛�">
+ <j-el-description :value="stockInfos.locationCode" type="primary" ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="PVI:">
+ <j-el-description :value="stockInfos.pvi" type="primary" ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="杞﹀瀷:">
+ <j-el-description :value="stockInfos.vehicleCharacteristic" type="primary"
+ ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="杞﹁韩绫诲瀷">
+ <j-el-description :value="getcarType(stockInfos.carType)" type="primary"
+ ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="宸ュ崟绫诲瀷:">
+ <j-el-description :value="getOrderType(stockInfos.workOrderType)" type="primary"
+ ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="澶╃獥鐗瑰緛:">
+ <j-el-description :value="stockInfos.skylightCharacteristic" type="primary"
+ ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="杞﹁韩棰滆壊:">
+ <j-el-description :value="stockInfos.carBodyCharacteristic" type="primary"
+ ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="鐧借溅韬墿鏂欏彿:">
+ <j-el-description :value="stockInfos.biwMaterialCode" type="primary" ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;">
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="褰╄溅韬墿鏂欏彿:">
+ <j-el-description :value="stockInfos.pbMaterial" type="primary" ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+ <el-form-item label="鐒婅涓婄嚎鏃堕棿:">
+ <j-el-description :value="stockInfos.biwInPassTime" type="primary" ellipsis></j-el-description>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider />
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="dialogVisible = false">
+ 纭
+ </el-button>
+ </div>
+ </template>
+ </el-dialog>
+</template>
+
+<script>
+import JElDescription from "./JElDescription";
+export default {
+ data() {
+ return {
+ mesLockInfos: [],
+ timer: null,
+ dialogVisible: false,
+ stockInfos: {
+
+ },
+ }
+ },
+ computed: {
+ displayItems() {
+ return this.mesLockInfos.slice(0, 50)
+ }
+ },
+ methods: {
+ GetViewData() {
+ this.http.post('/api/VV_MesLockInfo/GetMesLockInfo', '', '鏌ヨ涓�').then((x) => {
+ this.mesLockInfos = x.data
+ })
+ },
+ mouseClick(pvi) {
+ this.http.post('/api/VV_MesLockInfo/GetStockInfo?PVI=' + pvi, '', '鏌ヨ涓�').then((x) => {
+ if (x.data === null) {
+ this.stockInfos = { message: '鏃犲簱瀛樻暟鎹�' };
+ } else {
+ this.stockInfos = x.data;
+ }
+ this.dialogVisible = true;
+ })
+ },
+ getcarType(carType) {
+ if (carType == 1) return '鐧借溅韬�'
+ if (carType == 2) return '褰╄溅韬�'
+ if (carType == 3) return '绌烘粦姗�'
+ },
+ getOrderType(OrderType) {
+ if (OrderType == 1) return '鍥藉唴閿�鍞溅'
+ if (OrderType == 2) return '鍥介檯閿�鍞溅'
+ if (OrderType == 3) return '灞曡溅'
+ if (OrderType == 4) return '浼佷笟鐢ㄨ溅'
+ if (OrderType == 6) return '璇曞埗杞�'
+ if (OrderType == 7) return 'SKD/CKD杞�'
+ if (OrderType == 8) return '鐗规畩閰嶇疆杞�'
+ if (OrderType == 11) return '楠岃瘉璁㈠崟'
+ },
+ startTimer() {
+ // 娓呴櫎鍙兘瀛樺湪鐨勬棫瀹氭椂鍣�
+ if (this.timer) {
+ clearInterval(this.timer)
+ }
+ // 璁剧疆鏂扮殑瀹氭椂鍣紝姣�30绉掑埛鏂颁竴娆�
+ this.timer = setInterval(() => {
+ this.GetViewData()
+ }, 30000)
+ },
+ stopTimer() {
+ if (this.timer) {
+ clearInterval(this.timer)
+ this.timer = null
+ }
+ }
+ },
+ mounted() {
+ this.GetViewData()
+ this.startTimer()
+ },
+ beforeUnmount() {
+ this.stopTimer()
+ },
+ components: { JElDescription }
+}
+</script>
+
+<style scoped>
+.header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 16px 24px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ border-bottom: none;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+}
+
+.title {
+ font-size: 24px;
+ font-weight: 700;
+ color: #ffffff;
+ margin-left: 0;
+ text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+ letter-spacing: 0.5px;
+}
+
+.legend-section {
+ display: flex;
+ gap: 24px;
+ align-items: center;
+}
+
+.legend-item {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 6px 12px;
+ background-color: rgba(255, 255, 255, 0.2);
+ border-radius: 20px;
+ backdrop-filter: blur(10px);
+}
+
+.legend-label {
+ font-size: 15px;
+ color: #ffffff;
+ font-weight: 500;
+ letter-spacing: 0.3px;
+}
+
+.color-box {
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ border-radius: 4px;
+ border: 2px solid rgba(255, 255, 255, 0.3);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.color-green {
+ background-color: #167C07;
+}
+
+.color-lightgreen {
+ background-color: #9dc88d;
+}
+
+.color-font {
+ background-color: #6ec0f0;
+}
+
+.box-content.color-green {
+ background-color: #167C07;
+ border-radius: 8px;
+ padding: 12px;
+ margin: -12px;
+ margin-bottom: -12px;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.box-content.color-lightgreen {
+ background-color: #9dc88d;
+ border-radius: 8px;
+ padding: 12px;
+ margin: -12px;
+ margin-bottom: -12px;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.box-content.color-font {
+ background-color: #6ec0f0;
+ border-radius: 8px;
+ padding: 12px;
+ margin: -12px;
+ margin-bottom: -12px;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.content-wrapper {
+ padding: 24px;
+ height: calc(100vh - 72px);
+ overflow-y: auto;
+ background: linear-gradient(180deg, #f8f9fa 0%, #e9ecef 100%);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.content {
+ display: grid;
+ grid-template-columns: repeat(10, 1fr);
+ gap: 12px;
+ width: 100%;
+}
+
+.box {
+ width: 100%;
+ height: 100%;
+ border: none;
+ border-radius: 8px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 12px;
+ font-size: 13px;
+ font-weight: 500;
+ color: #333;
+ cursor: pointer;
+ background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+ position: relative;
+ overflow: hidden;
+}
+
+.box-content {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-around;
+ overflow: hidden;
+}
+
+.text-line {
+ line-height: 1.6;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: #ffffff;
+ font-weight: 600;
+ font-size: 13px;
+ letter-spacing: 0.3px;
+}
+
+.box-index {
+ text-align: center;
+ margin-top: 8px;
+ font-size: 16px;
+ color: #756767;
+ font-weight: 800;
+ padding-top: 8px;
+ border-top: 1px solid rgba(255, 255, 255, 0.2);
+ letter-spacing: 0.5px;
+}
+
+.color-box {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin-right: 15px;
+ border-radius: 3px;
+}
+
+/* 鏃犳暟鎹彁绀烘牱寮� */
+.no-data-message {
+ text-align: center;
+ padding: 40px 20px;
+ font-size: 16px;
+ color: #909399;
+ background-color: #f4f4f5;
+ border-radius: 4px;
+}
+
+/* 椤甸潰鏃犳暟鎹彁绀烘牱寮� */
+.no-data {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ height: 100%;
+ min-height: 300px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+.no-data-icon {
+ font-size: 80px;
+ margin-bottom: 20px;
+ opacity: 0.6;
+}
+
+.no-data-text {
+ font-size: 18px;
+ color: #909399;
+ font-weight: 500;
+}
+</style>
+
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/JElDescription.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/JElDescription.vue"
new file mode 100644
index 0000000..12ec17d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/JElDescription.vue"
@@ -0,0 +1,162 @@
+<template>
+ <div class="j-description wordwrap" :class="class__" :style="style__">{{value}}</div>
+</template>
+
+<script>
+ export default {
+ name: "j-el-description",
+ inject: {
+ elForm: {
+ default: ''
+ },
+ elFormItem: {
+ default: ''
+ }
+ },
+
+ props: {
+ value: [String, Number], // 鍐呭
+ type: { // 涓婚
+ type: String,
+ validator(value) {
+ return ['primary', 'success', 'info', 'warning', 'danger'].indexOf(value) !== -1;
+ }
+ },
+ size: { // 灏哄
+ type: String,
+ validator(value) {
+ return ['medium', 'small', 'mini'].indexOf(value) !== -1;
+ }
+ },
+ height: [String, Number], // 闄愬埗楂樺害
+ ellipsis: Boolean, // 鐪佺暐鍙�
+ },
+
+ computed: {
+ elFormItemSize__() {
+ return (this.elFormItem || {}).elFormItemSize;
+ },
+ size__() {
+ return this.size || this.elFormItemSize__ || (this.$ELEMENT || {}).size;
+ },
+ class__() {
+ let _class = [];
+ if (this.type) {
+ _class.push(this.type);
+ }
+ if (this.size__) {
+ _class.push(this.size__);
+ }
+ if (this.height) {
+ _class.push('scroll');
+ }
+ if (this.ellipsis) {
+ _class.push('ellipsis');
+ }
+ return _class;
+ },
+ style__() {
+ let _style = {};
+ if (!this.ellipsis && this.height) {
+ if (isNaN(this.height)) {
+ _style.height = this.height;
+ } else {
+ _style.height = this.height + 'px';
+ }
+ }
+ return _style;
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .j-description {
+ min-height: 40px;
+ line-height: 40px;
+ padding: 0 50%;
+ }
+
+ /*澶у皬*/
+ .j-description.medium {
+ min-height: 36px;
+ line-height: 36px;
+ }
+
+ .j-description.small {
+ min-height: 32px;
+ line-height: 32px;
+ }
+
+ .j-description.mini {
+ min-height: 28px;
+ line-height: 28px;
+ }
+
+ /*婊氬姩*/
+ .j-description.scroll {
+ overflow-x: hidden;
+ overflow-y: auto;
+ }
+
+ .j-description.scroll::-webkit-scrollbar {
+ width: 9px;
+ height: 9px;
+ background: #F3F3F3;
+ }
+
+ .j-description.scroll::-webkit-scrollbar-thumb {
+ border: 1px solid #ffffff;
+ border-radius: 6px;
+ background: #c9c9c9;
+ }
+
+ .j-description.scroll::-webkit-scrollbar-thumb:hover {
+ background: #b5b5b5;
+ }
+
+ /*鎹㈣*/
+ .j-description.wordwrap {
+ table-layout: fixed;
+ word-break: break-all;
+ word-wrap: break-word;
+ }
+
+ /*鐪佺暐鍙�*/
+ .j-description.ellipsis {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+
+ /*涓婚*/
+ .j-description.primary {
+ background-color: #ecf5ff;
+ border: 1px solid #d9ecff;
+ color: #409eff;
+ }
+
+ .j-description.success {
+ background-color: #f0f9eb;
+ border-color: #e1f3d8;
+ color: #67c23a;
+ }
+
+ .j-description.info {
+ background-color: #f4f4f5;
+ border-color: #e9e9eb;
+ color: #909399;
+ }
+
+ .j-description.warning {
+ background-color: #fdf6ec;
+ border-color: #faecd8;
+ color: #e6a23c;
+ }
+
+ .j-description.danger {
+ background-color: #fef0f0;
+ border-color: #fde2e2;
+ color: #f56c6c;
+ }
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/locationInfoRow.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/locationInfoRow.vue"
index 2b6f034..a10d4f6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/locationInfoRow.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/widesea_wms/stock/locationInfoRow.vue"
@@ -7,13 +7,13 @@
<div class="content-wrapper">
<!-- 鎺у埗闈㈡澘鍖哄煙 -->
<div class="control-panel">
- <div class="form-group">
+ <!-- <div class="form-group">
<label>鍖哄煙锛�</label>
<el-select size="mini" filterable v-model="Area.areaCode" placeholder="璇烽�夋嫨" class="full-width">
<el-option v-for="item in slectData" :value="item.areaCode" :label="item.areaName"
:key="item.areaName"></el-option>
</el-select>
- </div>
+ </div> -->
<!-- <div class="form-group">
<label>鎺掞細</label>
@@ -35,9 +35,7 @@
</el-select>
</div> -->
- <el-button type="success" class="refresh-btn" @click="GetViewData">
- 鍒锋柊
- </el-button>
+ <el-button type="success" class="refresh-btn" @click="GetViewData"> 鍒锋柊 </el-button>
<div class="legend-section">
<h4>璇存槑</h4>
@@ -63,153 +61,264 @@
</div>
</div>
<!-- 鎮诞鎻愮ず妗� -->
- <div v-if="showTooltipFlag" class="location-tooltip" :style="{
- left: tooltipPosition.x + 'px',
- top: tooltipPosition.y + 'px',
- }">
- <div v-if="currentLocation">
- <p><strong>璐т綅鍙�:</strong>{{ currentLocation.locationCode }}</p>
- <!-- <p>
- <strong>璐т綅鎺掑垪灞�:</strong> {{ currentLocation.row }}鎺抺{
- currentLocation.layer
- }}鍒梴{ currentLocation.layer }}灞�
- </p> -->
- <p><strong>鐘舵��:</strong> {{ getStatusText(currentLocation) }}</p>
- <p>
- <strong>绂佺敤:</strong>
- {{ currentLocation.location_lock == 2 ? "鏄�" : "鍚�" }}
- </p>
- <!-- <p v-if="currentLocation.location_state > 0">
- <strong>鐗╂枡缂栫爜:</strong>
- {{ currentLocation.material_code || "鏃�" }}
- </p>
- <p v-if="currentLocation.location_state > 0">
- <strong>鏁伴噺:</strong> {{ currentLocation.quantity || "鏃�" }}
- </p> -->
+ <transition name="tooltip-fade">
+ <div v-if="showTooltipFlag" class="location-tooltip" :style="{
+ left: tooltipPosition.x + 'px',
+ top: tooltipPosition.y + 'px'
+ }">
+ <div v-if="currentLocation" class="tooltip-content">
+ <div class="tooltip-header">
+ <h4>{{ currentLocation.locationCode }}</h4>
+ <span class="status-badge" :class="getStatusClass(currentLocation)">
+ {{ getStatusText(currentLocation) }}
+ </span>
+ </div>
+ <div class="tooltip-body">
+ <div class="info-section">
+ <h5>鍩烘湰淇℃伅</h5>
+ <div class="info-row">
+ <span class="label">璐т綅鍙�:</span>
+ <span class="value">{{ currentLocation.locationCode }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">鐘舵��:</span>
+ <span class="value status-highlight" :class="getStatusClass(currentLocation)">
+ {{ getStatusText(currentLocation) }}
+ </span>
+ </div>
+ <div class="info-row">
+ <span class="label">绂佺敤:</span>
+ <span class="value" :class="{ 'disabled': currentLocation.location_lock == 2 }">
+ {{ currentLocation.location_lock == 2 ? '鏄�' : '鍚�' }}
+ </span>
+ </div>
+ </div>
+ <div v-if="currentLocation.stockInfo != null" class="info-section">
+ <h5>搴撳瓨淇℃伅</h5>
+ <div class="info-row">
+ <span class="label">PVI:</span>
+ <span class="value">{{ currentLocation.stockInfo.pvi }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">婊戞﹪鍙�:</span>
+ <span class="value">{{ currentLocation.stockInfo.palletCode }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">宸烽亾鍙�:</span>
+ <span class="value">{{ currentLocation.stockInfo.roadwayNo }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">杞﹀瀷:</span>
+ <span class="value">{{ currentLocation.stockInfo.vehicleCharacteristic }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">宸ュ崟绫诲瀷:</span>
+ <span class="value">{{ currentLocation.stockInfo.workOrderType }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">杞﹁韩棰滆壊:</span>
+ <span class="value">{{ currentLocation.stockInfo.carBodyCharacteristic }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">杞﹁韩绫诲瀷:</span>
+ <span class="value">{{ getcarType(currentLocation.stockInfo.carType) }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">褰╄溅韬墿鏂欏彿:</span>
+ <span class="value">{{ currentLocation.stockInfo.pbMaterial }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">鐧借溅韬墿鏂欏彿:</span>
+ <span class="value">{{ currentLocation.stockInfo.biwMaterialCode }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">鐒婅涓婄嚎鏃堕棿:</span>
+ <span class="value">{{ currentLocation.stockInfo.biwInPassTime }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">澶╃獥鐗瑰緛:</span>
+ <span class="value">{{ currentLocation.stockInfo.skylightCharacteristic }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">鎷夊姩閿佸畾:</span>
+ <span class="value">{{ getlockOrder(currentLocation.stockInfo.lockOrder) }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">閿佸畾鐘舵��:</span>
+ <span class="value">{{ getstockStatus(currentLocation.stockInfo.stockStatus) }}</span>
+ </div>
+ <div class="info-row">
+ <span class="label">浠诲姟鐘舵��:</span>
+ <span class="value">{{ gettaskStatus(currentLocation.stockInfo.taskStatus) }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
</div>
- </div>
+ </transition>
</div>
</div>
</template>
<script>
-import { ElButton } from "element-plus";
+import { ElButton } from 'element-plus'
export default {
data() {
return {
slectData: [],
scList: [],
- Area: { areaName: "", areaCode: "" },
- mian_height: "",
+ Area: { areaName: '', areaCode: '' },
+ mian_height: '',
infoMsg: [
- { bgcolor: "lightgreen", msg: "绌鸿揣浣�", state: 0 },
- { bgcolor: "orange", msg: "鏈夎揣", state: 2 },
- { bgcolor: "#2BB3D5", msg: "閿佸畾", state: 1 },
- { bgcolor: "#ccc", msg: "绂佺敤", state: 9 },
- // { bgcolor: "red", msg: "绂佺敤", state: 3 },
- { bgcolor: "blue", msg: "鍑哄簱", state: "3" },
- { bgcolor: "pink", msg: "鍏ュ簱", state: "4" },
+ { bgcolor: 'lightgreen', msg: '绌鸿揣浣�', state: 0 },
+ { bgcolor: 'orange', msg: '鏈夎揣', state: 2 },
+ { bgcolor: '#2BB3D5', msg: '閿佸畾', state: 1 },
+ { bgcolor: '#ccc', msg: '绂佺敤', state: 9 },
+ { bgcolor: 'blue', msg: '鍑哄簱', state: '3' },
+ { bgcolor: 'pink', msg: '鍏ュ簱', state: '4' }
],
locationData: [],
showTooltipFlag: false,
currentLocation: null,
- tooltipPosition: { x: 0, y: 0 },
- };
+ tooltipPosition: { x: 20, y: 20 }
+ }
},
computed: {
GetBgColor(col) {
return (col) => {
- var bgColor ='';
+ var bgColor = ''
//浼樺厛鏄剧ず绂佺敤鐘舵��
if (col.location_lock == 2) {
this.infoMsg.forEach((el) => {
if (el.state == col.location_lock) {
- bgColor = "#ccc";
+ bgColor = '#ccc'
}
- });
- }
- else {
+ })
+ } else {
this.infoMsg.forEach((el) => {
- if (el.state == col.location_state) {
- bgColor = el.bgcolor;
+ if (el.state == col.location_state) {
+ bgColor = el.bgcolor
}
- });
+ })
}
- return bgColor;
- };
- },
+ return bgColor
+ }
+ }
},
watch: {
//鍒囨崲搴撳尯
- "Area.areaCode"(newValue, oldValue) {
- this.scList = [];
+ 'Area.areaCode'(newValue, oldValue) {
+ this.scList = []
this.slectData.forEach((e) => {
if (e.areaCode == newValue) {
- this.Area.areaCode = e.areaCode[0];
+ this.Area.areaCode = e.areaCode[0]
//this.scList = e.tunnel;
}
- });
- this.GetViewData();
- },
+ })
+ this.GetViewData()
+ }
},
methods: {
GetViewData() {
- var _this = this;
- this.http
- .post("/api/LocationInfo/GetLocationStatu", _this.Area, "鏌ヨ涓�")
- .then((x) => {
- _this.locationData = x;
- console.log("鍚庣杩斿洖:", x);
- });
+ var _this = this
+ this.http.post('/api/LocationInfo/GetLocationStatu', _this.Area, '鏌ヨ涓�').then((x) => {
+ _this.locationData = x
+ console.log('鍚庣杩斿洖:', x)
+ })
},
// 鍒囨崲鎺�
SCChange() {
- this.GetViewData();
+ this.GetViewData()
},
showTooltip(location, event) {
- this.currentLocation = location;
- this.showTooltipFlag = true;
+ this.currentLocation = location
+ this.showTooltipFlag = true
- // 璁剧疆鎻愮ず妗嗕綅缃紝绋嶅井鍋忕Щ閬垮厤閬尅榧犳爣
- this.tooltipPosition = {
- x: event.clientX + 10,
- y: event.clientY + 10,
- };
+ // 鑾峰彇鎻愮ず妗嗙殑棰勪及瀹藉害
+ const tooltipWidth = 300
+ const tooltipHeight = 400
+ const offsetX = 15
+ const offsetY = 15
+
+ // 璁$畻鎻愮ず妗嗕綅缃紝浼樺厛鏄剧ず鍦ㄩ紶鏍囦笂鏂�
+ let x = event.clientX + offsetX
+ let y = event.clientY - tooltipHeight - offsetY
+
+ // 濡傛灉涓婃柟绌洪棿涓嶈冻锛屽垯鏄剧ず鍦ㄤ笅鏂�
+ if (y < 10) {
+ y = event.clientY + offsetY
+ }
+
+ // 妫�鏌ュ彸渚ц竟鐣�
+ if (x + tooltipWidth > window.innerWidth) {
+ x = event.clientX - tooltipWidth - offsetX
+ }
+
+ // 纭繚涓嶄細瓒呭嚭宸﹁竟鐣屽拰涓婅竟鐣�
+ x = Math.max(10, x)
+ y = Math.max(10, y)
+
+ this.tooltipPosition = { x, y }
},
hideTooltip() {
- this.showTooltipFlag = false;
- this.currentLocation = null;
+ this.showTooltipFlag = false
+ this.currentLocation = null
},
getStatusText(location) {
// if (location.location_lock === 3) return "绂佺敤";
- if (location.location_state === '0') return "绌鸿揣浣�";
- if (location.location_state === '1') return "閿佸畾";
- if (location.location_state === '3') return "鏈夎揣閿佸畾";
- if (location.location_state === '4') return "绌洪棽閿佸畾";
- if (location.location_state === '2') return "鏈夎揣";
+ if (location.location_state === '0') return '绌鸿揣浣�'
+ if (location.location_state === '1') return '閿佸畾'
+ if (location.location_state === '3') return '鏈夎揣閿佸畾'
+ if (location.location_state === '4') return '绌洪棽閿佸畾'
+ if (location.location_state === '2') return '鏈夎揣'
// if (location.location_state > 0 && location.location_state < 100)
// return "閿佸畾";
- return "鍏朵粬";
+ return '鍏朵粬'
},
+ getStatusClass(location) {
+ if (location.location_state === '0') return 'status-empty'
+ if (location.location_state === '1') return 'status-locked'
+ if (location.location_state === '3') return 'status-locked-with-stock'
+ if (location.location_state === '4') return 'status-locked-empty'
+ if (location.location_state === '2') return 'status-with-stock'
+ return 'status-other'
+ },
+ getcarType(carType) {
+ if (carType == 1) return '鐧借溅韬�'
+ if (carType == 2) return '褰╄溅韬�'
+ if (carType == 3) return '绌烘粦姗�'
+ },
+ getlockOrder(lockOrder) {
+ if (lockOrder == 1) return '宸查攣杞�'
+ if (lockOrder == 0) return '鏈媺鍔�'
+ },
+ getstockStatus(stockStatus) {
+ if (stockStatus == 1) return '宸查攣瀹�'
+ if (stockStatus == 0) return '鏈攣瀹�'
+ },
+ gettaskStatus(taskStatus) {
+ if (taskStatus == 1) return '浠诲姟涓�'
+ if (taskStatus == 0) return '鏃犱换鍔�'
+ }
},
mounted() {
- var mainHeight = document.getElementById("vol-main");
- this.mian_height = mainHeight.offsetHeight - 40 + "px";
- var _this = this;
+ var mainHeight = document.getElementById('vol-main')
+ this.mian_height = mainHeight.offsetHeight - 40 + 'px'
+ var _this = this
//鍔犺浇涓嬫媺閫夐」
- this.http.get("/api/dt_AreaInfo/GetAreaInfo", {}, "鏌ヨ涓�").then((x) => {
- console.log(x);
- _this.slectData = x;
+ this.http.get('/api/dt_AreaInfo/GetAreaInfo', {}, '鏌ヨ涓�').then((x) => {
+ console.log(x)
+ _this.slectData = x
//鍔犺浇绗竴涓尯鍩燂紝绗竴鎺�
- _this.Area.areaCode = _this.slectData[0].areaCode;
+ _this.Area.areaCode = _this.slectData[0].areaCode
//_this.scList = _this.slectData[0].tunnel;
- });
+ })
},
- components: { ElButton },
-};
+ components: { ElButton }
+}
</script>
<style scoped>
@@ -330,23 +439,167 @@
position: fixed;
z-index: 9999;
background-color: white;
- border: 1px solid #ddd;
- border-radius: 4px;
- padding: 10px;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+ border: 1px solid #e4e7ed;
+ border-radius: 8px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
pointer-events: none;
- max-width: 250px;
+ max-width: 320px;
+ min-width: 280px;
+ overflow: hidden;
}
-.location-tooltip p {
- margin: 5px 0;
+.tooltip-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.tooltip-header {
+ padding: 12px 16px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.tooltip-header h4 {
+ margin: 0;
+ font-size: 15px;
+ font-weight: 600;
+}
+
+.status-badge {
+ padding: 4px 10px;
+ border-radius: 12px;
+ font-size: 12px;
+ font-weight: 500;
+ background-color: rgba(255, 255, 255, 0.2);
+ backdrop-filter: blur(4px);
+}
+
+.status-empty {
+ background-color: rgba(144, 238, 144, 0.9);
+}
+
+.status-locked {
+ background-color: rgba(43, 179, 213, 0.9);
+}
+
+.status-locked-with-stock {
+ background-color: rgba(255, 165, 0, 0.9);
+}
+
+.status-locked-empty {
+ background-color: rgba(255, 182, 193, 0.9);
+}
+
+.status-with-stock {
+ background-color: rgba(255, 99, 71, 0.9);
+}
+
+.status-other {
+ background-color: rgba(153, 153, 153, 0.9);
+}
+
+.tooltip-body {
+ padding: 16px;
+}
+
+.info-section {
+ margin-bottom: 16px;
+}
+
+.info-section:last-child {
+ margin-bottom: 0;
+}
+
+.info-section h5 {
+ margin: 0 0 10px 0;
font-size: 13px;
- line-height: 1.4;
+ color: #909399;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ padding-bottom: 6px;
+ border-bottom: 1px solid #ebeef5;
}
-.location-tooltip strong {
- display: inline-block;
- width: 70px;
- color: #666;
+.info-row {
+ display: flex;
+ margin-bottom: 8px;
+ align-items: center;
}
-</style>
\ No newline at end of file
+
+.info-row:last-child {
+ margin-bottom: 0;
+}
+
+.info-row .label {
+ flex-shrink: 0;
+ width: 100px;
+ color: #606266;
+ font-size: 13px;
+}
+
+.info-row .value {
+ flex: 1;
+ color: #303133;
+ font-size: 13px;
+ word-break: break-all;
+}
+
+.info-row .value.disabled {
+ color: #f56c6c;
+ font-weight: 500;
+ background-color: #fef0f0;
+ padding: 2px 8px;
+ border-radius: 4px;
+}
+
+.info-row .value.status-highlight {
+ font-weight: 600;
+ padding: 2px 8px;
+ border-radius: 4px;
+}
+
+.status-highlight.status-empty {
+ color: #67c23a;
+ background-color: #f0f9ff;
+}
+
+.status-highlight.status-locked {
+ color: #409eff;
+ background-color: #ecf5ff;
+}
+
+.status-highlight.status-locked-with-stock {
+ color: #e6a23c;
+ background-color: #fdf6ec;
+}
+
+.status-highlight.status-locked-empty {
+ color: #f56c6c;
+ background-color: #fef0f0;
+}
+
+.status-highlight.status-with-stock {
+ color: #67c23a;
+ background-color: #f0f9ff;
+}
+
+.status-highlight.status-other {
+ color: #909399;
+ background-color: #f4f4f5;
+}
+
+/* 娣诲姞杩囨浮鍔ㄧ敾 */
+.tooltip-fade-enter-active,
+.tooltip-fade-leave-active {
+ transition: opacity 0.2s, transform 0.2s;
+}
+
+.tooltip-fade-enter-from,
+.tooltip-fade-leave-to {
+ opacity: 0;
+ transform: translateY(5px);
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Core/Enums/StockEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Core/Enums/StockEnum.cs"
new file mode 100644
index 0000000..45271a1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Core/Enums/StockEnum.cs"
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+ public enum StockChangeType
+ {
+ /// <summary>
+ /// 鍏ュ簱
+ /// </summary>
+ [Description("鍏ュ簱")]
+ Inbound,
+
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ [Description("鍑哄簱")]
+ Outbound,
+
+ /// <summary>
+ /// 鎵嬪姩璋冩暣
+ /// </summary>
+ [Description("鎵嬪姩璋冩暣")]
+ ManualAdjust,
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Basic/MesLockDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Basic/MesLockDTO.cs"
new file mode 100644
index 0000000..e272f36
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Basic/MesLockDTO.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+ public class MesLockDTO
+ {
+ public string pvi { get; set; }
+ public string vehicleCharacteristic { get; set; }
+ public string carBodyCharacteristic { get; set; }
+ public int lockStatue { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Common/LocationAreaView/LocationView.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Location/LocationView.cs"
similarity index 89%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Common/LocationAreaView/LocationView.cs"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Location/LocationView.cs"
index 88ef6a5..3835b75 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Common/LocationAreaView/LocationView.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_DTO/Location/LocationView.cs"
@@ -3,14 +3,15 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Model.Models;
-namespace WIDESEA_Common
+namespace WIDESEA_DTO.Location
{
public class LocationLayer
{
public int index { get; set; }
-
+
/// <summary>
///
@@ -45,5 +46,8 @@
/// 閿佸畾鐘舵��
/// </summary>
public string location_lock { get; set; }
+
+ public VV_StockInfo stockInfo { get; set; }
}
+
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_PassPointRecordRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_PassPointRecordRepository.cs"
new file mode 100644
index 0000000..4efbf50
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_PassPointRecordRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRecordRepository
+{
+ public interface IDt_PassPointRecordRepository : IRepository<Dt_PassPointRecord>
+ {
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockQuantityChangeRecordRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockQuantityChangeRecordRepository.cs"
new file mode 100644
index 0000000..06425ee
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockQuantityChangeRecordRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStorageBasicRepository
+{
+ public interface IStockQuantityChangeRecordRepository : IRepository<Dt_StockQuantityChangeRecord>
+ {
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_PassPointRecordService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_PassPointRecordService.cs"
new file mode 100644
index 0000000..0f5ad1e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_PassPointRecordService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO;
+using WIDESEA_IRecordRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRecordService
+{
+ public interface IDt_PassPointRecordService : IService<Dt_PassPointRecord>
+ {
+ void AddPassPointRecord(PassPointInfo info, RequestTaskDto request);
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IStockQuantityChangeRecordService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IStockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..00fc42f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IStockQuantityChangeRecordService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_IRecordRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStorageBasicService
+{
+ public interface IStockQuantityChangeRecordService : IService<Dt_StockQuantityChangeRecord>
+ {
+
+ void AddStockChangeRecord(VV_StockInfo stockInfo, StockChangeType changeType, int taskNum);
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_MesLockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_MesLockInfoService.cs"
index 00c5a6e..d8b38c7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_MesLockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_MesLockInfoService.cs"
@@ -2,4 +2,7 @@
public interface IVV_MesLockInfoService : IService<VV_MesLockInfo>
{
+ WebResponseContent GetMesLockInfo();
+
+ WebResponseContent GetStockInfo(string PVI);
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_StockInfoService.cs"
index c117742..fbeb73e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_IStorageBasicService/Stock/IVV_StockInfoService.cs"
@@ -5,4 +5,5 @@
WebResponseContent stockLock(object[] keys);
WebResponseContent stockUnLock(object[] keys);
+
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_PassPointRecord.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_PassPointRecord.cs"
new file mode 100644
index 0000000..87d62d0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_PassPointRecord.cs"
@@ -0,0 +1,72 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+ [SugarTable(nameof(Dt_PassPointRecord), "MES杩囩偣璁板綍")]
+ public class Dt_PassPointRecord : BaseEntity
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [ImporterHeader(Name = "涓婚敭")]
+ [ExporterHeader(DisplayName = "涓婚敭")]
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// PVI鐮�
+ /// </summary>
+ [ImporterHeader(Name = "PVI鐮�")]
+ [ExporterHeader(DisplayName = "PVI鐮�")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "PVI鐮�")]
+ public string PVI { get; set; }
+
+ /// <summary>
+ /// 婊戞﹪鍙�
+ /// </summary>
+ [ImporterHeader(Name = "婊戞﹪鍙�")]
+ [ExporterHeader(DisplayName = "婊戞﹪鍙�")]
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "婊戞﹪鍙�")]
+ public string PalletCode { get; set; }
+
+ [ImporterHeader(Name = "鐐逛綅")]
+ [ExporterHeader(DisplayName = "鐐逛綅")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "鐐逛綅")]
+ public string Position { get; set; }
+
+ [ImporterHeader(Name = "绾垮彿")]
+ [ExporterHeader(DisplayName = "绾垮彿")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "绾垮彿")]
+ public string lineCode { get; set; }
+
+ [ImporterHeader(Name = "绾垮彿")]
+ [ExporterHeader(DisplayName = "绾垮彿")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "绾垮彿")]
+ public string Content { get; set; }
+
+ [ImporterHeader(Name = "杩囩偣鏃堕棿")]
+ [ExporterHeader(DisplayName = "杩囩偣鏃堕棿")]
+ [SugarColumn(IsNullable = false, ColumnDescription = "杩囩偣鏃堕棿")]
+ public DateTime PassPointTime { get; set; }
+
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare1 { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare2 { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare3 { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_StockQuantityChangeRecord.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_StockQuantityChangeRecord.cs"
new file mode 100644
index 0000000..63c9d32
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_Model/Models/BasicModel/Dt_StockQuantityChangeRecord.cs"
@@ -0,0 +1,162 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+ [SugarTable(nameof(Dt_StockQuantityChangeRecord), "搴撳瓨鍙樺姩淇℃伅璁板綍")]
+ public class Dt_StockQuantityChangeRecord : BaseEntity
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [ImporterHeader(Name = "涓婚敭")]
+ [ExporterHeader(DisplayName = "涓婚敭")]
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ [ImporterHeader(Name = "鎵�灞炲贩閬�")]
+ [ExporterHeader(DisplayName = "鎵�灞炲贩閬�")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "鎵�灞炲贩閬�")]
+ public string RoadwayNo { get; set; }
+
+ /// <summary>
+ /// 璐т綅缂栧彿
+ /// </summary>
+ [ImporterHeader(Name = "璐т綅缂栧彿")]
+ [ExporterHeader(DisplayName = "璐т綅缂栧彿")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+ public string LocationCode { get; set; }
+
+ /// <summary>
+ /// 杞﹁韩ID
+ /// </summary>
+ [ImporterHeader(Name = "杞﹁韩ID")]
+ [ExporterHeader(DisplayName = "杞﹁韩ID")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "杞﹁韩ID")]
+ public int carBodyID { get; set; }
+ /// <summary>
+ /// PVI鐮�
+ /// </summary>
+ [ImporterHeader(Name = "PVI鐮�")]
+ [ExporterHeader(DisplayName = "PVI鐮�")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "PVI鐮�")]
+ public string PVI { get; set; }
+
+ /// <summary>
+ /// 婊戞﹪鍙�
+ /// </summary>
+ [ImporterHeader(Name = "婊戞﹪鍙�")]
+ [ExporterHeader(DisplayName = "婊戞﹪鍙�")]
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "婊戞﹪鍙�")]
+ public string PalletCode { get; set; }
+
+ /// <summary>
+ /// 杞﹀瀷
+ /// </summary>
+ [ImporterHeader(Name = "杞﹀瀷")]
+ [ExporterHeader(DisplayName = "杞﹀瀷")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "杞﹀瀷")]
+ public string vehicleCharacteristic { get; set; }
+
+ /// <summary>
+ /// 杞﹁韩绫诲瀷 1-鐧� 2-褰� 3-绌烘粦姗�
+ /// </summary>
+ [ImporterHeader(Name = "杞﹁韩绫诲瀷")]
+ [ExporterHeader(DisplayName = "杞﹁韩绫诲瀷")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "杞﹁韩绫诲瀷")]
+ public int CarType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟绫诲瀷
+ /// </summary>
+ [ImporterHeader(Name = "璁㈠崟绫诲瀷")]
+ [ExporterHeader(DisplayName = "璁㈠崟绫诲瀷")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璁㈠崟绫诲瀷")]
+ public string workOrderType { get; set; }
+
+ /// <summary>
+ /// 澶╃獥鐗瑰緛
+ /// </summary>
+ [ImporterHeader(Name = "澶╃獥鐗瑰緛")]
+ [ExporterHeader(DisplayName = "澶╃獥鐗瑰緛")]
+ [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "澶╃獥鐗瑰緛")]
+ public string skylightCharacteristic { get; set; }
+
+ /// <summary>
+ /// 杞﹁韩棰滆壊
+ /// </summary>
+ [ImporterHeader(Name = "杞﹁韩棰滆壊")]
+ [ExporterHeader(DisplayName = "杞﹁韩棰滆壊")]
+ [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "杞﹁韩棰滆壊")]
+ public string carBodyCharacteristic { get; set; }
+
+ /// <summary>
+ /// 鐧借溅韬墿鏂欏彿
+ /// </summary>
+ [ImporterHeader(Name = "鐧借溅韬墿鏂欏彿")]
+ [ExporterHeader(DisplayName = "鐧借溅韬墿鏂欏彿")]
+ [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "鐧借溅韬墿鏂欏彿")]
+ public string biwMaterialCode { get; set; }
+
+ /// <summary>
+ /// 褰╄溅韬墿鏂欏彿
+ /// </summary>
+ [ImporterHeader(Name = "褰╄溅韬墿鏂欏彿")]
+ [ExporterHeader(DisplayName = "褰╄溅韬墿鏂欏彿")]
+ [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "褰╄溅韬墿鏂欏彿")]
+ public string pbMaterial { get; set; }
+
+ /// <summary>
+ /// 鐒婅涓婄嚎鏃堕棿
+ /// </summary>
+ [ImporterHeader(Name = "鐒婅涓婄嚎鏃堕棿")]
+ [ExporterHeader(DisplayName = "鐒婅涓婄嚎鏃堕棿")]
+ [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "鐒婅涓婄嚎鏃堕棿")]
+ public DateTime? biwInPassTime { get; set; }
+
+ /// <summary>
+ /// 淇濈暀鐘舵��
+ /// </summary>
+ [ImporterHeader(Name = "淇濈暀鐘舵��")]
+ [ExporterHeader(DisplayName = "淇濈暀鐘舵��")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "淇濈暀鐘舵��")]
+ public int StayStatus { get; set; }
+
+ [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨Id")]
+ public int StockId { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+ public int? TaskNum { get; set; }
+
+ /// <summary>
+ /// 鍙樻洿绫诲瀷
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+ public int ChangeType { get; set; }
+
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare1 { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare2 { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囩敤")]
+ public string Spare3 { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/MESService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/MESService.cs"
index fd48056..c5bbd8d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/MESService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/MESService.cs"
@@ -6,6 +6,8 @@
using System.Threading.Tasks;
using WIDESEA_Core.BaseRepository;
using WIDESEA_IBusinessesRepository;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
using WIDESEA_IServices;
using WIDESEA_IStorageBasicRepository;
using WIDESEA_IStorageOutOrderRepository;
@@ -34,8 +36,10 @@
private readonly IDt_PaintingOrderInfoRepository _paintingOrderInfoRepository;
private readonly IVV_StockInfoRepository _VVStockInfoRepository;
private readonly IDt_MESLockInfoRepository _MESLockInfoRepository;
+ private readonly IDt_PassPointRecordRepository _passPointRecordRepository;
+ private readonly IDt_PassPointRecordService _passPointRecordService;
- public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyInfoRepository carBodyRepository, IDt_AssemblyOrderInfoRepository assemblyOrderInfoRepository, IDt_PaintingOrderInfoRepository paintingOrderInfoRepository, IVV_StockInfoRepository VVStockInfoRepository, IDt_MESLockInfoRepository mESLockInfoRepository)
+ public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyInfoRepository carBodyRepository, IDt_AssemblyOrderInfoRepository assemblyOrderInfoRepository, IDt_PaintingOrderInfoRepository paintingOrderInfoRepository, IVV_StockInfoRepository VVStockInfoRepository, IDt_MESLockInfoRepository mESLockInfoRepository,IDt_PassPointRecordRepository passPointRecordRepository, IDt_PassPointRecordService passPointRecordService)
{
_locationRepository = locationRepository;
_taskRepository = taskRepository;
@@ -51,6 +55,8 @@
_paintingOrderInfoRepository = paintingOrderInfoRepository;
_VVStockInfoRepository = VVStockInfoRepository;
_MESLockInfoRepository = mESLockInfoRepository;
+ _passPointRecordRepository = passPointRecordRepository;
+ _passPointRecordService = passPointRecordService;
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs"
index f116670..f959852 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/PassPoint.cs"
@@ -5,6 +5,8 @@
using WIDESEA_Core.Const;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
+using WIDESEA_Model.Models;
+using WIDESEA_RecordService;
using WIDESEA_StorageBasicRepository;
namespace WIDESEA_StoragIntegrationServices
@@ -54,6 +56,9 @@
pass_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
};
+ //璁板綍璇锋眰MES杩囩偣淇℃伅
+ _passPointRecordService.AddPassPointRecord(passPoint, json);
+
var MESrespon = HttpHelper.PostAsync(wmsIpAddress, passPoint.ToJson(), contentType, headers).Result;
MesResponse responseContent = JsonConvert.DeserializeObject<MesResponse>(MESrespon.ToString());
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_PassPointRecordRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_PassPointRecordRepository.cs"
new file mode 100644
index 0000000..1169b9e
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_PassPointRecordRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRecordRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_RecordRepository
+{
+ public class Dt_PassPointRecordRepository : RepositoryBase<Dt_PassPointRecord>, IDt_PassPointRecordRepository
+ {
+ public Dt_PassPointRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/Stock/StockQuantityChangeRecordRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/Stock/StockQuantityChangeRecordRepository.cs"
new file mode 100644
index 0000000..aeaddf9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicRepository/Stock/StockQuantityChangeRecordRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRecordRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StorageBasicRepository
+{
+ public class StockQuantityChangeRecordRepository : RepositoryBase<Dt_StockQuantityChangeRecord>, IStockQuantityChangeRecordRepository
+ {
+ public StockQuantityChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_PassPointRecordService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_PassPointRecordService.cs"
new file mode 100644
index 0000000..4154459
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_PassPointRecordService.cs"
@@ -0,0 +1,49 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+using WIDESEA_RecordRepository;
+
+namespace WIDESEA_RecordService
+{
+ public partial class Dt_PassPointRecordService : ServiceBase<Dt_PassPointRecord, IDt_PassPointRecordRepository>, IDt_PassPointRecordService
+ {
+ private readonly IMapper _mapper;
+ public Dt_PassPointRecordService(IDt_PassPointRecordRepository BaseDal, IMapper mapper) : base(BaseDal)
+ {
+ _mapper = mapper;
+ }
+
+ public void AddPassPointRecord(PassPointInfo info, RequestTaskDto json)
+ {
+ try
+ {
+ Dt_PassPointRecord record = new Dt_PassPointRecord()
+ {
+ Content = info.Serialize(),
+ Position = json.Position,
+ PalletCode = json.PalletCode,
+ PVI = json.PVI,
+ lineCode = info.line_code,
+ PassPointTime = DateTime.Now
+ };
+ BaseDal.AddData(record);
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+
+ }
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
index d44d961..5f125f1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs"
@@ -9,6 +9,7 @@
using WIDESEA_Core;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_DTO;
+using WIDESEA_DTO.Location;
using WIDESEA_Model.Models;
namespace WIDESEA_StorageBasicService;
@@ -26,6 +27,7 @@
private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
private readonly IMapper _mapper;
private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository;
+ private readonly IVV_StockInfoRepository _stockrepository;
public LocationInfoService(ILocationInfoRepository BaseDal,
IUnitOfWorkManage unitOfWorkManage,
@@ -37,7 +39,8 @@
IStockInfoDetailRepository stockInfoDetailRepository,
IMapper mapper,
IDt_TaskService taskService,
- IDt_PalletStockInfoRepository palletStockInfoRepository) : base(BaseDal)
+ IDt_PalletStockInfoRepository palletStockInfoRepository,
+ IVV_StockInfoRepository stockrepository) : base(BaseDal)
{
_unitOfWorkManage = unitOfWorkManage;
_taskRepository = taskRepository;
@@ -49,6 +52,7 @@
_mapper = mapper;
_taskService = taskService;
_palletStockInfoRepository = palletStockInfoRepository;
+ _stockrepository = stockrepository;
}
@@ -263,6 +267,8 @@
{
var data = BaseDal.QueryData(x => x.AreaId == Convert.ToInt32(area.areaCode));
+ List<VV_StockInfo> stockInfos = _stockrepository.QueryData(x => true);
+
List<LocationLayer> layers = new List<LocationLayer>();
foreach (var layer in data.GroupBy(t => t.Layer))
{
@@ -273,6 +279,8 @@
var cols = new List<LocationCol>();
foreach (var data_col in data_row)
{
+ var stock = stockInfos.FirstOrDefault(x => x.LocationCode == data_col.LocationCode);
+
cols.Add(new LocationCol()
{
//鍒�
@@ -280,6 +288,7 @@
locationCode = data_col.LocationCode,
location_state = data_col.LocationStatus.ToString(),
location_lock = data_col.EnalbeStatus.ToString(),
+ stockInfo = stock
});
}
cols = cols.OrderBy(t => t.index).ToList();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/StockQuantityChangeRecordService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/StockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..5e69f7f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/StockQuantityChangeRecordService.cs"
@@ -0,0 +1,40 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StorageBasicService
+{
+ public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
+ {
+ private readonly IMapper _mapper;
+ public StockQuantityChangeRecordService(IStockQuantityChangeRecordRepository BaseDal, IMapper mapper) : base(BaseDal)
+ {
+ _mapper = mapper;
+ }
+
+ public void AddStockChangeRecord(VV_StockInfo stockInfo, StockChangeType changeType,int taskNum)
+ {
+ try
+ {
+ Dt_StockQuantityChangeRecord stockQuantityChangeRecords = new Dt_StockQuantityChangeRecord();
+ stockQuantityChangeRecords = _mapper.Map<Dt_StockQuantityChangeRecord>(stockInfo);
+ stockQuantityChangeRecords.TaskNum = taskNum;
+ stockQuantityChangeRecords.ChangeType = Convert.ToInt32(changeType);
+ BaseDal.AddData(stockQuantityChangeRecords);
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_MesLockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_MesLockInfoService.cs"
index 5d007f0..245f1c5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_MesLockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_MesLockInfoService.cs"
@@ -6,13 +6,67 @@
using System.Drawing.Printing;
using System.Linq.Expressions;
using WIDESEA_Core;
+using WIDESEA_DTO.Basic;
namespace WIDESEA_StorageBasicService;
public class VV_MesLockInfoService : ServiceBase<VV_MesLockInfo, IVV_MesLockInfoRepository>, IVV_MesLockInfoService
{
- public VV_MesLockInfoService(IVV_MesLockInfoRepository BaseDal) : base(BaseDal)
+ private readonly IVV_StockInfoRepository _stockInfoRepository;
+ public VV_MesLockInfoService(IVV_MesLockInfoRepository BaseDal, IVV_StockInfoRepository stockInfoRepository) : base(BaseDal)
{
+ _stockInfoRepository = stockInfoRepository;
}
+ public WebResponseContent GetMesLockInfo()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ List<VV_MesLockInfo> mesLockInfos = BaseDal.QueryData(x => x.LockStatue == 1 || x.LockStatue == 0).OrderBy(x => x.sequenceNo).ToList();
+ List<VV_StockInfo> stockInfos = _stockInfoRepository.QueryData(x => x.CarType == 2).OrderBy(x => x.CreateDate).Take(50).ToList();
+ List<MesLockDTO> mesLockDTOs = new List<MesLockDTO>();
+ mesLockInfos.ForEach(x =>
+ {
+ mesLockDTOs.Add(new MesLockDTO
+ {
+ lockStatue = x.LockStatue,
+ pvi = x.PVI,
+ vehicleCharacteristic = x.vehicleCharacteristic,
+ carBodyCharacteristic = x.carBodyCharacteristic
+ });
+ });
+ stockInfos.ForEach(x =>
+ {
+ mesLockDTOs.Add(new MesLockDTO
+ {
+ lockStatue = 2,
+ pvi = x.PVI,
+ vehicleCharacteristic = x.vehicleCharacteristic,
+ carBodyCharacteristic = x.carBodyCharacteristic
+ });
+ });
+
+ return content.OK(data: mesLockDTOs);
+ }
+ catch (Exception ex)
+ {
+ return content.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent GetStockInfo(string PVI)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ VV_StockInfo stockInfos = _stockInfoRepository.QueryFirst(x => x.PVI == PVI);
+
+ return content.OK(data: stockInfos);
+ }
+ catch (Exception ex)
+ {
+ return content.Error(ex.Message);
+ }
+ }
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_StockInfoService.cs"
index 4e7c8c2..7c27119 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageBasicServices/Stock/VV_StockInfoService.cs"
@@ -6,15 +6,18 @@
using System.Drawing.Printing;
using System.Linq.Expressions;
using WIDESEA_Core;
+using WIDESEA_IRecordService;
namespace WIDESEA_StorageBasicService;
public class VV_StockInfoService : ServiceBase<VV_StockInfo, IVV_StockInfoRepository>, IVV_StockInfoService
{
private readonly IDt_PalletStockInfoRepository _repository;
- public VV_StockInfoService(IVV_StockInfoRepository BaseDal, IDt_PalletStockInfoRepository repository) : base(BaseDal)
+ private readonly IStockQuantityChangeRecordService _stockQuantityChangeRecord;
+ public VV_StockInfoService(IVV_StockInfoRepository BaseDal, IDt_PalletStockInfoRepository repository, IStockQuantityChangeRecordService stockQuantityChangeRecord) : base(BaseDal)
{
_repository = repository;
+ _stockQuantityChangeRecord = stockQuantityChangeRecord;
}
public WebResponseContent stockLock(object[] keys)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_PassPointRecordController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_PassPointRecordController.cs"
new file mode 100644
index 0000000..f174b55
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_PassPointRecordController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+ [Route("api/Dt_PassPointRecord")]
+ [ApiController]
+ public class Dt_PassPointRecordController : ApiBaseController<IDt_PassPointRecordService, Dt_PassPointRecord>
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ public Dt_PassPointRecordController(IDt_PassPointRecordService service, IHttpContextAccessor httpContextAccessor) : base(service)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ }
+
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StockQuantityChangeRecordController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StockQuantityChangeRecordController.cs"
new file mode 100644
index 0000000..7a6bb7d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StockQuantityChangeRecordController.cs"
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+ [Route("api/StockQuantityChangeRecord")]
+ [ApiController]
+ public class Dt_StockQuantityChangeRecordController : ApiBaseController<IStockQuantityChangeRecordService, Dt_PassPointRecord>
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ public Dt_StockQuantityChangeRecordController(IStockQuantityChangeRecordService service, IHttpContextAccessor httpContextAccessor) : base(service)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ }
+
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_MesLockInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_MesLockInfoController.cs"
index 3f33943..99c9a52 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_MesLockInfoController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_MesLockInfoController.cs"
@@ -11,4 +11,16 @@
{
}
+
+ [HttpGet,HttpPost,Route("GetMesLockInfo"),AllowAnonymous]
+ public WebResponseContent GetMesLockInfo()
+ {
+ return Service.GetMesLockInfo();
+ }
+
+ [HttpGet, HttpPost, Route("GetStockInfo"), AllowAnonymous]
+ public WebResponseContent GetStockInfo(string PVI)
+ {
+ return Service.GetStockInfo(PVI);
+ }
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_StockInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_StockInfoController.cs"
index 3d8b7e9..83584b8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_StockInfoController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Controllers/Stock/VV_StockInfoController.cs"
@@ -31,5 +31,4 @@
{
return Service.stockUnLock(keys);
}
-
}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
index c3d1570..09e5c2d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs"
@@ -21,6 +21,8 @@
CreateMap<RegistrationDTO, Sys_CompanyRegistration>();
CreateMap<Dt_OutOrderAndStock, Dt_OutOrderAndStock_Hty>();
CreateMap<Dt_Task, Dt_Task_Hty>();
+ CreateMap<VV_StockInfo, Dt_StockQuantityChangeRecord>()
+ .ForMember(a => a.StockId, b => b.MapFrom(b => b.Id));
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/GlobalUsing.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/GlobalUsing.cs"
index 9fd4dd7..aa2f49c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/GlobalUsing.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_WMSServer/GlobalUsing.cs"
@@ -12,5 +12,4 @@
global using WIDESEA_Model.Models.System;
global using WIDESEA_Core.Authorization;
global using WIDESEA_Core.Utilities;
-global using WIDESEA_Model;
-//global using WIDESEA_StorageBasicServices;
\ No newline at end of file
+global using WIDESEA_Model;
\ No newline at end of file
--
Gitblit v1.9.3