From 505e0d47a72f51b0dc4dc315f8fce36cc73abc89 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期二, 29 七月 2025 17:28:28 +0800
Subject: [PATCH] 添加看板获取货位状态接口, 修复容器插入, 货位容器绑定货位字段未更新的问题

---
 api/WmsController.cs |  137 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 133 insertions(+), 4 deletions(-)

diff --git a/api/WmsController.cs b/api/WmsController.cs
index 9b13ddf..e3d682a 100644
--- a/api/WmsController.cs
+++ b/api/WmsController.cs
@@ -1,24 +1,26 @@
 锘� using System.Collections.Generic;
+using System.Linq;
 using System.Web.Http;
 
 using HH.WCS.Mobox3.AnGang.core;
+using HH.WCS.Mobox3.AnGang.models;
 using HH.WCS.Mobox3.AnGang.util;
 
 using Newtonsoft.Json;
+
+using SqlSugar;
 
 using static HH.WCS.Mobox3.AnGang.api.ApiModel;
 using static HH.WCS.Mobox3.AnGang.api.OtherModel;
 using static HH.WCS.Mobox3.AnGang.dispatch.NDC;
 
-namespace HH.WCS.Mobox3.AnGang.api
-{
+namespace HH.WCS.Mobox3.AnGang.api {
     /// <summary>
     /// 绗笁鏂硅皟鐢ㄧ殑鎺ュ彛
     /// </summary>
     [RoutePrefix("api")]
-    public class WmsController : System.Web.Http.ApiController
-    {
+    public class WmsController : System.Web.Http.ApiController {
         [HttpGet]
         [Route("GetKanbanAgvState")]
         public KanbanAgvState GetKanbanAgvState() {
@@ -41,5 +43,132 @@
             }
             return new KanbanAgvState { AgvState = resName };
         }
+
+        [HttpGet]
+        [Route("GetLocInfo")]
+        public WmsModel.tbData GetLocInfo() {
+            return WmsService.GetLocInfo();
+        }
+
+        [HttpGet]
+        [Route("GetLocStateInfo")]
+        public WmsModel.LocStateInfo GetLocStateInfo() {
+            return WmsService.GetLocStateInfo();
+        }
+
+        [HttpGet]
+        [Route("GetLocCountInfo")]
+        public WmsModel.LocCountInfo GetLocCountInfo() {
+            return WmsService.GetLocCountInfo();
+        }
     }
+
+    public class WmsService {
+        public static WmsModel.tbData GetLocInfo() {
+            var db = new SqlHelper<object>().GetInstance();
+            try {
+                var locs = db.Queryable<TN_Location>().ToList();
+                var haveCgDetailCntrList = db.Queryable<TN_CG_Detail>().Select(d => d.S_CNTR_CODE).ToList();
+                var emptyLocs = db.Queryable<TN_Location, TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
+                    .Where((l, c) => !haveCgDetailCntrList.Contains(c.S_CNTR_CODE)).Select((l, c) => l.S_CODE).ToList();
+
+                return new WmsModel.tbData {
+                    data = locs.Select(l => new WmsModel.tbDataOne {
+                        value = $"{l.N_ROW}-{l.N_COL}-{l.N_LAYER}",
+                        state = l.N_LOCK_STATE == 3 ? "璐т綅閿� :
+                                l.N_CURRENT_NUM == 0 ? "绌鸿揣浣� :
+                                emptyLocs.Contains(l.S_CODE) ? "绌烘墭鐩� : "婊℃墭鐩�
+                    }).ToList()
+                };
+            }
+            catch (System.Exception) {
+                return new WmsModel.tbData();
+            }
+        }
+        public static WmsModel.LocStateInfo GetLocStateInfo() {
+            var db = new SqlHelper<object>().GetInstance();
+            try {
+                //var locs = db.Queryable<TN_Location>().ToList();
+                var result = db.Queryable<TN_Location>()
+                    .Select(l => new WmsModel.LocState {
+                        Code = l.S_CODE,
+                        Row = l.N_ROW,
+                        Column = l.N_COL,
+                        Layer = l.N_LAYER,
+                        CurrentNum = l.N_CURRENT_NUM,
+                        LockState = l.N_LOCK_STATE,
+                    }).ToList();
+
+                return new WmsModel.LocStateInfo {
+                    //LocStates = locs.Select(l => new WmsModel.LocState {
+                    //    Code = l.S_CODE,
+                    //    Row = l.N_ROW,
+                    //    Column = l.N_COL,
+                    //    Layer = l.N_LAYER,
+                    //    CurrentNum = l.N_CURRENT_NUM,
+                    //    LockState= l.N_LOCK_STATE,
+                    //}).ToList(),
+                    LocStates = result
+                };
+            }
+            catch (System.Exception) {
+                return new WmsModel.LocStateInfo();
+            }
+        }
+
+        public static WmsModel.LocCountInfo GetLocCountInfo() {
+            var db = new SqlHelper<object>().GetInstance();
+            try {
+                var result = db.Queryable<TN_Location>()
+                    .GroupBy(loc => new { loc.N_ROW, loc.N_LAYER }) // 鎸夎鍜屽眰鍒嗙粍
+                    .Select(loc => new WmsModel.LocCount {
+                        Row = loc.N_ROW,          // 琛�+                        Layer = loc.N_LAYER,      // 灞�+                        Count = SqlFunc.AggregateSum(loc.N_CURRENT_NUM) // 绱 N_CURRENT_NUM 鏁伴噺
+                    })
+                    .ToList();
+                return new WmsModel.LocCountInfo {
+                    locCounts= result
+                };
+            }
+            catch (System.Exception) {
+                return new WmsModel.LocCountInfo();
+            }
+        }
+    }
+
+    public class WmsModel {
+        public class LocStateInfo {
+            public List<LocState> LocStates = new List<LocState>();
+        }
+
+        public class LocState {
+            public string Code { get; set; }
+            public int Row { get; set; }
+            public int Column { get; set; }
+            public int Layer { get; set; }
+            public int LockState { get; set; }
+            public int CurrentNum { get; set; }
+        }
+
+        public class LocCountInfo {
+            public List<LocCount> locCounts= new List<LocCount>();
+        }
+
+        public class LocCount {
+            public int Row { get; set; }
+            public int Layer { get; set; }
+            public int Count { get; set; }
+        }
+
+        public class tbData {
+            public List<tbDataOne> data = new List<tbDataOne>();
+        }
+
+        public class tbDataOne {
+            public string value { get; set; }
+            public string state { get; set; }
+        }
+    }
+    
 }

--
Gitblit v1.9.1