hudong
2025-05-30 1483d0e74b4dde9eb22e022276390bfa1f24495b
api/WmsSapController.cs
@@ -17,18 +17,163 @@
using static HH.WCS.Mobox3.pinggao.api.OtherModel;
using static HH.WCS.Mobox3.pinggao.api.ApibackModel;
using HH.WCS.Mobox3.pinggao.models;
using static HH.WCS.Mobox3.pinggao.models.DAPING;
using HH.WCS.Mobox3.pinggao.util;
using SqlSugar;
namespace HH.WCS.Mobox3.pinggao.api
{
    public class WmsSapController : System.Web.Http.ApiController
    {
        #region 大屏数据接口
        /// <summary>
        /// 生产订单信息获取
        /// 大屏数据
        /// </summary>
        /// <returns></returns>
        public BarChartResponse InOut(){
            var response = new BarChartResponse
            {
                OutboundData = new List<BarChartData>
                {
                },
                InboundData = new List<BarChartData>
                {
                },
                CKNData = new List<NB> { },
                ListTask = new List<Tasks> { },
                Inttbounddjcount = 0,
                Outtbounddjcount=0,
                IntodayCount = 0,
                OuttodayCount = 0
            };
            var db = new SqlHelper<object>().GetInstance();
            #region 出库
            // 1. 获取当前年份(或指定年份)
            int year = DateTime.Now.Year; // 如2023
            // 2. 生成1-12月所有月份(确保完整性)
            var allMonths = Enumerable.Range(1, 12)
                .Select(m => new DateTime(year, m, 1).ToString("MM"))
                .ToList();
            //var allMonths = Enumerable.Range(1, 12).ToList();
            // 3. 查询数据库获取出库数据(按月份分组统计)
            var outboundCounts = db.Queryable<WCSTask>()
                .Where(a => a.S_TYPE.Contains("出库") &&a.N_B_STATE==3&& a.T_END_TIME != null&&a.T_END_TIME.Value.Year== year)
                .ToList() // 加载到内存
                .GroupBy(a => a.T_END_TIME.Value.ToString("MM")) // 按月份分组
                .ToDictionary(g => g.Key, g => g.Count()); // 转为字典(月份:记录数)
            // 3. 构建完整1-12月数据(缺失月份补0)
            var outboundData = allMonths.Select(month => new BarChartData
            {
                Month = int.Parse(month),
                Count = outboundCounts.TryGetValue(month, out var count) ? count : 0
            }).ToList();
            response.OutboundData = outboundData;
            #endregion
            #region 入库
            var inttboundCounts = db.Queryable<WCSTask>()
           .Where(a => a.S_TYPE.Contains("入库") && a.N_B_STATE == 3 && a.T_END_TIME != null && a.T_END_TIME.Value.Year == year)
           .ToList() // 加载到内存
           .GroupBy(a => a.T_END_TIME.Value.ToString("MM")) // 按月份分组
           .ToDictionary(g => g.Key, g => g.Count()); // 转为字典(月份:记录数)
            var intboundData = allMonths.Select(month => new BarChartData
            {
                Month = int.Parse(month),
                Count = inttboundCounts.TryGetValue(month, out var count) ? count : 0
            }).ToList();
            response.InboundData = intboundData;
            #endregion
            #region 未完成单据量
            var Inttbounddjcount = db.Queryable<TN_Inbound_Order>().Where(s=>s.N_B_STATE==0).Count();
            var Outtbounddjcount = db.Queryable<TN_Ll_Order>().Where(s=>s.N_B_STATE==0).Count();
            var today = DateTime.Today;
            var tomorrow = today.AddDays(1);
            var IntodayCount = db.Queryable<WCSTask>()
                .Where(s => s.N_B_STATE == 3 && s.S_TYPE.Contains("入库")&&
                            s.T_END_TIME >= today &&
                            s.T_END_TIME < tomorrow).Count();
            var OuttodayCount = db.Queryable<WCSTask>()
            .Where(s => s.N_B_STATE == 3 && s.S_TYPE.Contains("出库") &&
                        s.T_END_TIME >= today &&
                        s.T_END_TIME < tomorrow).Count();
            response.Inttbounddjcount = Inttbounddjcount;
            response.Outtbounddjcount = Outtbounddjcount;
            response.OuttodayCount = OuttodayCount;
            response.IntodayCount = IntodayCount;
            #endregion
            #region 任务列表
            var tasklist = db.Queryable<WCSTask>().Where(s => s.N_B_STATE != 2).Select(s => new { s.S_CNTR_CODE, s.S_START_AREA, s.S_END_AREA, s.S_B_STATE }).Take(5).ToList() ;
            var tasksList = tasklist.Select(t => new Tasks
            {
                S_CNTR_CODE = t.S_CNTR_CODE,
                S_START_AREA = t.S_START_AREA,
                S_END_AREA = t.S_END_AREA,
                S_B_STATE = t.S_B_STATE
            }).ToList();
            response.ListTask = tasksList;
            #endregion
            #region 仓库库内审核
            var ManCount = db.Queryable<CntrItemRel>()
                           .Where(s => s.S_CNTR_TYPE == "满托")
                           .GroupBy(s => s.S_CNTR_CODE)
                           .Select(s => new { s.S_CNTR_CODE })
                           .Count();
            var ManName = "满托盘";
            var BanCount = db.Queryable<CntrItemRel>()
                           .Where(s => s.S_CNTR_TYPE == "半托")
                           .GroupBy(s => s.S_CNTR_CODE)
                           .Select(s => new { s.S_CNTR_CODE })
                           .Count();
            var BanName = "半托盘";
            //所有容器的数量
            int allCntrcout = db.Queryable<LocCntrRel>().Count();
            //所有容器物料数量
            int alltprcout = db.Queryable<CntrItemRel>()
                     .GroupBy(s => s.S_CNTR_CODE)
                     .Select(s => new { s.S_CNTR_CODE })
                     .Count();
            var KTCount = allCntrcout - alltprcout;
            var KTName = "空托盘";
            int alllocationcout = db.Queryable<Location>().Count();
            var KHWCount = alllocationcout - allCntrcout;
            var KHWName = "空货位";
            var list = new List<NB>
        {
            new NB { Name = ManName, Count = ManCount },
            new NB { Name = BanName, Count = BanCount },
            new NB { Name = KTName, Count = KTCount },
            new NB { Name = KHWName, Count = KHWCount }
        };
            response.CKNData = list;
            #endregion
            return response;
        }
        #endregion
        /// <summary>
        /// 供应商接收接口获取
        /// </summary>
        /// <param name="xmlData"></param>
        /// <returns></returns>
        [HttpPost]
        public Orderback.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
        public GYSReturnRoot.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
        {
            #region xml数据接收转数组
@@ -48,7 +193,7 @@
            #endregion
            #region 外采入库业务流程
            //Orderback.Root simpleResult = WmsSpaHelper.Mater_In(xmlData);
            GYSReturnRoot.Root simpleResult = WmsSpaHelper.GYS_In(xmlData);
            //接收返回参数 生成sap对接文档返回格式
            //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg);
@@ -61,7 +206,7 @@
            //    Content = new StringContent(xml, Encoding.UTF8, "application/xml")
            //};
            //return response;
            return null;
            return simpleResult;
            #endregion
        }
@@ -115,7 +260,7 @@
        /// <returns></returns>
        [HttpPost]
        public SimpleResult MaterReceiveXmlData([FromBody] MaterDto.Root xmlData)
        public WLReturnRoot.Root MaterReceiveXmlData([FromBody] MaterDto.Root xmlData)
        {
            #region xml数据接收转数组
@@ -135,7 +280,7 @@
            #endregion
            #region 外采入库业务流程
            SimpleResult simpleResult = WmsSpaHelper.Mater_In(xmlData);
            WLReturnRoot.Root simpleResult = WmsSpaHelper.Mater_In(xmlData);
            //接收返回参数 生成sap对接文档返回格式
            //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg);
@@ -148,6 +293,8 @@
            //    Content = new StringContent(xml, Encoding.UTF8, "application/xml")
            //};
            //return response;
            var json = JsonConvert.SerializeObject(simpleResult);
            return simpleResult;
            #endregion
        }
@@ -324,7 +471,7 @@
            {
                OtherReturnRoot.ITEM wcReturnRoot = new OtherReturnRoot.ITEM();
                wcReturnRoot.WLPZBH = item.WLPZBH;
                wcReturnRoot.WLPZND = item.WLPZND;
                wcReturnRoot.ND = item.WLPZND;
                wcReturnRoot.MSGCODE = item.resultCode;
                wcReturnRoot.MSGDESP = item.resultMsg;
                wcReturnRoots.Add(wcReturnRoot);
@@ -368,6 +515,16 @@
            return WmsSpaHelper.OutboundOrderSorting(model);
        }
        /// <summary>
        /// 空托出入库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public Task<SimpleResult> InOutKT(KtSorting model)
        {
            return WmsSpaHelper.KtSorting(model);
        }
        /// <summary>