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