| | |
| | | |
| | | 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() { |
| | |
| | | } |
| | | 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; } |
| | | } |
| | | } |
| | | |
| | | } |