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 | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 164 insertions(+), 8 deletions(-) diff --git a/api/WmsController.cs b/api/WmsController.cs index 56e489d..e3d682a 100644 --- a/api/WmsController.cs +++ b/api/WmsController.cs @@ -1,18 +1,174 @@ 锘�-using HH.WCS.Mobox3.AnGang.config; -using Newtonsoft.Json; using System.Collections.Generic; +using System.Linq; using System.Web.Http; -using static HH.WCS.Mobox3.AnGang.api.ApiModel; -namespace HH.WCS.Mobox3.AnGang.api -{ +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 { /// <summary> /// 绗笁鏂硅皟鐢ㄧ殑鎺ュ彛 /// </summary> [RoutePrefix("api")] - public class WmsController : System.Web.Http.ApiController - { - + public class WmsController : System.Web.Http.ApiController { + [HttpGet] + [Route("GetKanbanAgvState")] + public KanbanAgvState GetKanbanAgvState() { + LogHelper.Info("瑙﹀彂API锛欸etKanbanAgvState锛氱湅鏉胯幏鍙朅GV鐘舵�", "API"); + + var res = WCSCore.AgvState; + var resName = string.Empty; + switch (res) { + case "in_system": resName = "绯荤粺鍐�; break; + case "out_system": resName = "绯荤粺澶�; break; + case "online": resName = "鍦ㄧ嚎"; break; + case "offline": resName = "绂荤嚎"; break; + case "ready": resName = "灏辩华"; break; + case "not_ready": resName = "鏈氨缁�; break; + case "in_dispatc": resName = "璋冨害涓�; break; + case "out_dispatch": resName = "璋冨害澶�; break; + case "running": resName = "杩愯涓�; break; + case "not_running": resName = "鏈繍琛�; break; + default: resName = "鏈煡鐘舵�"; break; + } + 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