From 37adc87d3ca42242424ac8e1b83cc86ab00a666c Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期三, 05 三月 2025 08:04:28 +0800
Subject: [PATCH] 储位图例

---
 Wms/WMS.IBLL/ISysServer/IStorageLocatServer.cs        |    1 
 Wms/Model/ModelVm/SysVm/BordModel.cs                  |   36 +++
 Wms/Utility/Extension/ApplicationBuilderExtensions.cs |   22 +
 Wms/Wms/Controllers/BordController.cs                 |   34 +++
 Wms/WMS.BLL/SysServer/StorageLocatServer.cs           |   59 +++++
 HTML/views/WareHouseSetting/DenseLegend.html          |  361 ++++++++++++++++++++++++++++++++++++
 HTML/views/WareHouseSetting/test.json                 |   59 +++++
 7 files changed, 566 insertions(+), 6 deletions(-)

diff --git a/HTML/views/WareHouseSetting/DenseLegend.html b/HTML/views/WareHouseSetting/DenseLegend.html
new file mode 100644
index 0000000..7785fea
--- /dev/null
+++ b/HTML/views/WareHouseSetting/DenseLegend.html
@@ -0,0 +1,361 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>鍌ㄤ綅鍥句緥</title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport"
+		content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+	<link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+	<link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+	<style type="text/css">
+		.layouts {
+			display: flex;
+		}
+		.layui-card-header {
+			border-bottom: 1px solid #C9C5C5;
+		}
+		/* ******************************************** */
+		
+		#tab{
+			border: 1px solid black ;
+			border-collapse: separate;
+			border-spacing: 2;
+			padding: 3px;
+		}
+		table td{
+			border: 3px solid white;
+			/* width: 35px;
+			height: 45px;
+			
+			background-color: red;
+			text-align: center; */
+			
+		}
+		.btncls{
+			width: 30px;
+			height: 40px;
+			line-height: 20px;
+		}
+		.divcls{
+			box-shadow: 2px 2px 1px #888888;
+			border-radius: 2px;
+		}
+		.textSty{
+			color: black;
+			text-align: center;
+			word-break: break-all; word-wrap:break-word;
+		}
+		.zero{
+			background-color:#5470c6;
+			Opacity:.8;
+		}
+		.one{
+			background-color:#91cc75;
+			Opacity:.8;
+		}
+		.two{
+			background-color:#ffdc60;
+		}
+		.three{
+			background-color:#ee6666;
+			Opacity:.8;
+		}
+		.four{
+			background-color:#ffff7f;/*#ffff7f*/
+			Opacity:.8;
+		}
+		.five{
+			background-color:#ee23ee; 
+			/* background-color:#9dee77; */
+			Opacity:.8;
+		}
+		/* .six{
+			background-color:#ee23ee;
+			Opacity:.8;
+		}
+		.seven{
+			background-color:#eea6c0;
+			Opacity:.8;
+		} */
+		.eight{
+			background-color:#adacac;
+		}
+		.btnShow{
+			width: 20px;
+			height: 15px;
+		}
+	</style>
+</head>
+
+<body>
+	<div class="layui-fluid" style="padding-bottom: 0;">
+		<div class="layui-card">
+			<div class="layui-form layui-card-header layuiadmin-card-header-auto">
+				<div class="layui-form-item">
+					<div class="layui-inline">
+						<label class="layui-form-label">灞�</label>
+						<div class="layui-input-inline">
+							<select name="SlotLayer" id="SlotLayer"  lay-filter="SelectLayer">
+								<option value="1">涓�灞�</option>
+								<option value="2">浜屽眰</option>
+								
+							</select>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="layui-card-body">
+				
+				<div class="layouts">
+					<!-- 宸﹁竟鍥� -->
+					<div id="chartMap1" style="width:66%;height:86vh; display: flex; justify-content: space-around;">
+						<div>
+							<table id="tab"></table>
+						</div>
+						<div>
+							<table>
+								<tr>
+									<td><button class="btnShow" disabled></button></td>
+									<td>璺戦亾</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow eight" disabled></button></td>
+									<td>宸插睆钄�</td>
+								</tr>
+								<!-- <tr>
+									<td><button class="btnShow six" disabled></button></td>
+									<td>绌烘墭璺�</td>
+								</tr> -->
+								<tr>
+									<td><button class="btnShow five" disabled></button></td>
+									<td>绉诲嚭涓�</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow four" disabled></button></td>
+									<td>绉诲叆涓�</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow three" disabled></button></td>
+									<td>鍑哄簱涓�</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow two" disabled></button></td>
+									<td>鍏ュ簱涓�</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow one" disabled></button></td>
+									<td>鏈夌墿鍝�</td>
+								</tr>
+								<tr>
+									<td><button class="btnShow zero" disabled></button></td>
+									<td>绌哄簱浣�</td>
+								</tr>
+							</table>
+						</div>
+
+					</div>
+					<!-- 鍙宠竟鍥� -->
+					<div id="chartMap2" style="width:34%;height:87vh; border-left: 1px solid #C9C5C5;"></div>
+				</div>
+
+			</div>
+		</div>
+	</div>		
+	<script src="../../layuiadmin/layui/layui.js"></script>
+	<script src="../../js/public.js"></script>
+	<script src="../../js/jquery-3.5.1.min.js"></script>
+	<script src="../../js/jquery.cookie.js"></script>
+	<script src="../../js/echarts.min.js"></script>
+	<script>
+		var uid = $.cookie('userId');
+		if (uid == null) {
+			alert('璇风櫥褰曞悗鎿嶄綔');
+			window.parent.location.href = '../Login.html'
+		}
+		layui.config({
+			base: '../../layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰�
+		}).extend({
+			index: 'lib/index' //涓诲叆鍙fā鍧�
+		}).use(['index', 'table', 'laypage', 'layer'], function () {
+			var table = layui.table,
+				form = layui.form,
+				laypage = layui.laypage,
+				layer = layui.layer,
+				$ = layui.$;
+
+			var cengShu = "1"; 
+			var dom = $('#LAY_app_tabsheader', parent.document).children()//.find(s=>s.s.nodeType == 1 && className == "layui-this")
+			 
+			setInterval(() => { 
+				for (let i = 0; i < dom.length; i++) {
+				const e = dom[i]; 
+				if (e.getAttribute("class") == "layui-this" && e.getAttribute("lay-id") == "EquipmentManage/Roadway.html") {
+					GetSlotVm(cengShu);
+					// GetSlotChart(cengShu);
+				}
+			}
+			}, 5000);
+			
+			
+
+			// 鏌ヨ浜嬩欢
+			GetSlotVm(cengShu);
+			// GetSlotChart(cengShu);
+			form.on('select(SelectLayer)', function(data){
+				// console.log(data.elem); //寰楀埌select鍘熷DOM瀵硅薄
+				// console.log(data.value); //寰楀埌琚�変腑鐨勫��
+				// console.log(data.othis); //寰楀埌缇庡寲鍚庣殑DOM瀵硅薄
+				cengShu = data.value;
+				GetSlotVm(data.value);
+				// GetSlotChart(data.value);
+			});  
+			//鑾峰彇鏁版嵁娓叉煋搴撲綅鍥�
+			function GetSlotVm(ceng) {
+				console.log(ceng);
+				var item = {
+					layer:ceng
+				};
+				sendData(IP + "/Bord/GetSlotVm", item, 'get', function (res) {
+
+					if (res.code == 0) {
+						$("#tab").html("");
+						var html = '';
+						var list = res.data;
+						var slots = list.SlotsVm;
+						for (let i = list.Col; i > 0; i--) {
+							html += '<tr >';
+							for (let k = 1; k <= list.Row; k++) {
+								var statu = slots.find(r=> r.SlotColumn==i && r.SlotRow == k);
+								
+								var d = "";
+								var s ="eight";
+								if (statu != undefined) {
+									s= statu.SlotStatusCls;
+									d = statu.SlotCode;
+									if (statu.Make =="02") {
+										html +='<td><button val='+d+' class="btncls " disabled></button></td>'
+									} else {
+										var lie=d.substr(2,2);
+										var hang=d.substr(0,2);
+										console.log(lie);
+										console.log(hang);
+										html +='<td><div val='+d+' class="btncls divcls textSty '+ s +'" >'+lie+'<br/>'+hang+'</div></td>'
+									}
+									
+
+								}else{
+									html +='<td></td>'
+								}
+							}
+							html +='</tr>';
+							
+						}
+						$("#tab").append(html);
+						$(".btncls").mouseover(function () {
+							var codes = $(this).attr("val")
+							 console.log(codes);
+							var params={
+								code:codes
+							}
+							var ss = this;
+							// sendData(IP + "/Bord/GetStockMsgBySlot", params, 'post', function (res) {
+							// 	if (res.code == 1) {
+							// 		 console.log(res.data);
+							// 		if (res.data != "") {
+							// 			//  layer.tips(res.data, ss);
+							// 			layer.msg(res.data, {
+							// 				// icon: 1,
+							// 				time: 3000
+							// 			})
+							// 		}
+									
+							// 	}
+							// });
+
+						});
+					} else {
+						layer.msg(res.msg, {
+							icon: 2,
+							time: 2000
+						}, function () { })
+					}
+				});
+			}
+
+			// 鍔犺浇浠撳簱鍥句緥
+			function GetSlotChart(warehouseId) {
+				var items = {
+					slotLayer: warehouseId,
+				};
+				var index = document.getElementById("SlotLayer").selectedIndex;//鑾峰彇褰撳墠閫夋嫨椤圭殑绱㈠紩.
+				var LayerName = document.getElementById("SlotLayer").options[index].text;
+				sendData(IP + "/Bord/GetSlotList", items, 'post', function (res) {
+
+					if (res.code == 1) {
+						var list = res.data;
+						var key = [];
+						var value = [];
+						for (var i in list) {
+							key.push(i)
+							value.push(list[i])
+						}
+						this.chartLine2 = echarts.init(document.getElementById("chartMap2"));
+						var option2 = {
+							title: {
+								text: LayerName,
+								left: 'center',
+								// top: '15.5%'
+							},
+							tooltip: {
+								trigger: 'item',
+								formatter: '{a} <br/>{b} : {c}  ({d}%)'
+								//formatter: '{a} <br/>{b} ({d}%)'
+							},
+							legend: {
+								orient: 'vertical',
+								left: 'left'
+							},
+							series: [{
+								name: '鍌ㄤ綅鏁伴噺鍙婂崰姣�',
+								type: 'pie',
+								radius: '85%',
+								data: [{ value: value[0], name: key[0] },
+								{ value: value[1], name: key[1] },
+								{ value: value[2], name: key[2] },
+								{ value: value[3], name: key[3] },
+								{ value: value[4], name: key[4] },
+								{ value: value[5], name: key[5] },
+								{ value: value[6], name: key[6] },
+								{ value: value[7], name: key[7] },
+								{ value: value[8], name: key[8] },
+								],
+								emphasis: {
+									itemStyle: {
+										shadowBlur: 10,
+										shadowOffsetX: 0,
+										shadowColor: 'rgba(255, 0, 0, 0.5)'
+									}
+								}
+							}],
+
+
+						};
+						this.chartLine2.setOption(option2);
+
+					} else {
+						layer.msg(res.msg, {
+							icon: 2,
+							time: 2000
+						}, function () { })
+					}
+				});
+
+			};
+
+		});
+	</script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/HTML/views/WareHouseSetting/test.json b/HTML/views/WareHouseSetting/test.json
new file mode 100644
index 0000000..5502a66
--- /dev/null
+++ b/HTML/views/WareHouseSetting/test.json
@@ -0,0 +1,59 @@
+{
+    "code": 1,
+    "msg": "鎴愬姛",
+    "data": {
+      "Col": 15,
+      "Row": 18,
+      "SlotsVm": [
+        {
+          "SlotColumn": 1,
+          "SlotRow": 1,
+          "SlotCode": "010101",
+          "SlotStatusCls": "zero",
+          "Make": "01"
+        },
+        {
+          "SlotColumn": 2,
+          "SlotRow": 1,
+          "SlotCode": "010201",
+          "SlotStatusCls": "zero",
+          "Make": "01"
+        },
+        {
+          "SlotColumn": 3,
+          "SlotRow": 1,
+          "SlotCode": "010301",
+          "SlotStatusCls": "zero",
+          "Make": "01"
+        },
+        {
+          "SlotColumn": 4,
+          "SlotRow": 1,
+          "SlotCode": "010401",
+          "SlotStatusCls": "zero",
+          "Make": "01"
+        },
+        {
+          "SlotColumn": 1,
+          "SlotRow": 5,
+          "SlotCode": "A0105",
+          "SlotStatusCls": "zero",
+          "Make": "02"
+        },
+        {
+          "SlotColumn": 4,
+          "SlotRow": 1,
+          "SlotCode": "A0401",
+          "SlotStatusCls": "zero",
+          "Make": "03"
+        },
+        {
+          "SlotColumn": 3,
+          "SlotRow": 3,
+          "SlotCode": "A0303",
+          "SlotStatusCls": "zero",
+          "Make": "04"
+        }
+      ]
+    }
+  }
\ No newline at end of file
diff --git a/Wms/Model/ModelVm/SysVm/BordModel.cs b/Wms/Model/ModelVm/SysVm/BordModel.cs
new file mode 100644
index 0000000..8ff2e63
--- /dev/null
+++ b/Wms/Model/ModelVm/SysVm/BordModel.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Model.ModelVm.SysVm
+{
+    public class SlotsVm
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int SlotColumn { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public int SlotRow { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string SlotCode { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string SlotStatusCls { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Make { get; set; }
+    }
+    public class BordModelVM
+    {
+        public int Col { get; set; }
+        public int Row { get; set; }
+        public List<SlotsVm> SlotsVm { get; set; } = new List<SlotsVm>();
+    }
+}
diff --git a/Wms/Utility/Extension/ApplicationBuilderExtensions.cs b/Wms/Utility/Extension/ApplicationBuilderExtensions.cs
index 3ea0774..148a483 100644
--- a/Wms/Utility/Extension/ApplicationBuilderExtensions.cs
+++ b/Wms/Utility/Extension/ApplicationBuilderExtensions.cs
@@ -85,16 +85,26 @@
                         if (requestReader.BaseStream.Length != 0)
                             requestContent = requestReader.ReadToEnd();
                     }
-                    if (httpContext.Request.RouteValues["controller"].ToString().ToLower() == "upapi"|| httpContext.Request.RouteValues["controller"].ToString().ToLower() == "downapi")
+                    try
                     {
-                        diagnosticContext.Set("ExternalSystems", true);
+                        if (httpContext.Request.RouteValues["controller"] != null)
+                        {
+                            if (httpContext.Request.RouteValues["controller"].ToString().ToLower() == "upapi" || httpContext.Request.RouteValues["controller"].ToString().ToLower() == "downapi")
+                            {
+                                diagnosticContext.Set("ExternalSystems", true);
+                            }
+                            else
+                            {
+                                diagnosticContext.Set("ExternalSystems", false);
+                            }
+                        }
+                        diagnosticContext.Set("_RequestBody", requestContent);
+                        diagnosticContext.Set("_Service", AppDomain.CurrentDomain.FriendlyName);
                     }
-                    else
+                    catch (Exception)
                     {
-                        diagnosticContext.Set("ExternalSystems", false);
+
                     }
-                    diagnosticContext.Set("_RequestBody", requestContent);
-                    diagnosticContext.Set("_Service", AppDomain.CurrentDomain.FriendlyName);
                 };
             });
 
diff --git a/Wms/WMS.BLL/SysServer/StorageLocatServer.cs b/Wms/WMS.BLL/SysServer/StorageLocatServer.cs
index 2f45fce..67ca384 100644
--- a/Wms/WMS.BLL/SysServer/StorageLocatServer.cs
+++ b/Wms/WMS.BLL/SysServer/StorageLocatServer.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
+using System.Reflection.Metadata;
 using System.Text;
 using System.Threading.Tasks;
 using Model.ModelDto.SysDto;
@@ -974,5 +975,63 @@
         }
 
         #endregion
+
+        /// <summary>
+        /// 鑾峰彇鍌ㄤ綅淇℃伅(瀵嗛泦搴�)
+        /// </summary>
+        /// <param name="wareHouseNo">浠撳簱</param>
+        /// <param name="row">鎺�</param>
+        /// <returns></returns>
+        public async Task<BordModelVM> GetFlatLegend(string wareHouseNo, int layer)
+        {
+            var list = await Db.Queryable<SysStorageLocat>().Where(s => s.WareHouseNo == wareHouseNo && s.Layer == layer && s.IsDel == "0").ToListAsync();
+            BordModelVM listBord = new BordModelVM()
+            {
+                Col = 15,
+                Row = 18
+            };
+
+            foreach (var modLocat in list)
+            {
+                SlotsVm mod = new SlotsVm()
+                {
+                    SlotColumn = modLocat.Column,
+                    SlotRow = modLocat.Row,
+                    SlotCode = modLocat.LocatNo,
+                    //SlotStatusCls = modLocat.Flag!="0"? "eight": modLocat.Status == "0"? "zero":,
+                    Make = modLocat.Make
+                };
+                if (modLocat.Flag != "0")
+                    mod.SlotStatusCls = "eight";
+                switch (modLocat.Status)
+                {
+                    case "0":
+                        mod.SlotStatusCls = "zero";
+                        break;
+                    case "1":
+                        mod.SlotStatusCls = "one";
+                        break;
+                    case "2":
+                        mod.SlotStatusCls = "two";
+                        break;
+                    case "3":
+                        mod.SlotStatusCls = "three";
+                        break;
+                    case "4":
+                        mod.SlotStatusCls = "four";
+                        break;
+                    case "5":
+                        mod.SlotStatusCls = "five";
+                        break;
+                    default:
+                        break;
+                }
+                listBord.SlotsVm.Add(mod);
+            }
+
+            return listBord;
+
+        }
+
     }
 }
diff --git a/Wms/WMS.IBLL/ISysServer/IStorageLocatServer.cs b/Wms/WMS.IBLL/ISysServer/IStorageLocatServer.cs
index 832d69d..0665015 100644
--- a/Wms/WMS.IBLL/ISysServer/IStorageLocatServer.cs
+++ b/Wms/WMS.IBLL/ISysServer/IStorageLocatServer.cs
@@ -193,5 +193,6 @@
 
         #endregion
 
+        Task<BordModelVM> GetFlatLegend(string wareHouseNo, int layer);
     }
 }
diff --git a/Wms/Wms/Controllers/BordController.cs b/Wms/Wms/Controllers/BordController.cs
new file mode 100644
index 0000000..b25c173
--- /dev/null
+++ b/Wms/Wms/Controllers/BordController.cs
@@ -0,0 +1,34 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Utility;
+using WMS.IBLL.ISysServer;
+
+namespace Wms.Controllers
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    [Authorize]
+    [ServiceFilter(typeof(ApiResponseActionFilter))]
+    public class BordController : ControllerBase
+    {
+
+        private readonly IStorageLocatServer _locatSvc; //鍌ㄤ綅
+
+        public BordController(IStorageLocatServer locatSvc)
+        {
+            _locatSvc = locatSvc; //鍌ㄤ綅
+        }
+
+        [HttpGet]
+        public async Task<BordModelVM> GetSlotVm(string layer)
+        {
+            return await _locatSvc.GetFlatLegend("W01",Convert.ToInt32(layer));
+        }
+
+    }
+}

--
Gitblit v1.8.0