北鸣对接T+畅捷通,看板API
yl
2023-11-22 918c8b4360a4d58c4162d4777575abf1d20ef007
VueWebApi/DLL/DAL/KanBanManagerentDAL.cs
@@ -20,278 +20,17 @@
        public static List<SqlParameter> listStr = new List<SqlParameter>(); //定义全局参数集合
        public static SqlParameter[] parameters; //定义全局SqlParameter参数数组
        #region[正清和车间看板,获取生产车间]
        public static ToMessage ShopSearch()
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取车间信息
                sql = @"select org_code ,org_name from TOrganization where is_delete='0' and description='W'";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间看板,左上产线加工任务接口]
        public static ToMessage LineSearchTopLeftData(string shopcode)
        {
            string sql = "";
            List<ShopTopLeft> list = new List<ShopTopLeft>();
            var dynamicParams = new DynamicParameters();
            try
            {
                if (shopcode != null || shopcode != "") //产线编码不为空
                {
                    string[] selects = Array.ConvertAll<string, string>(shopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                    //查询产线下已开工的加工单信息
                    sql = @"select *  from (
                                    select distinct E.saleOrderCode,A.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname,S.good_qty,S.ng_qty,S.bad_qty   from TK_Wrk_Record A
                                    inner join TK_Wrk_Man P on A.wo_code=P.wo_code
                                    left join TMateriel_Info M on P.materiel_code=M.partcode
                                    left join TUom T on M.uom_code=T.code
                                    left join TKimp_Ewo E on P.m_po=E.wo and P.sourceid=E.id
                                    left join (
                                      select wo_code,sum(good_qty) as good_qty,sum(ng_qty) as ng_qty,sum(bad_qty) as bad_qty  from TK_Wrk_Step where isend='Y' group by wo_code
                                    ) S on P.wo_code=S.wo_code
                                    where P.status<>'CLOSED' and P.status<>'NEW' and P.wkshp_code in @shopcode and A.style='S' and A.step_seq='1'
                                    ) as AA where AA.plan_qty>=(AA.good_qty+aa.bad_qty+AA.ng_qty)";
                    var data0 = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                    if (data0.Rows.Count > 0)
                    {
                        for (int j = 0; j < data0.Rows.Count; j++)
                        {
                            string saleOrderCode = data0.Rows[j]["SALEORDERCODE"].ToString();//销售订单号
                            string wo_code = data0.Rows[j]["WO_CODE"].ToString();//工单号
                            string plan_qty = data0.Rows[j]["PLAN_QTY"].ToString();//任务数量
                            string partcode = data0.Rows[j]["PARTCODE"].ToString();//产品编码
                            string partname = data0.Rows[j]["PARTNAME"].ToString();//产品名称
                            string partspec = data0.Rows[j]["PARTSPEC"].ToString();//产品规格
                            string uomname = data0.Rows[j]["UOMNAME"].ToString();//单位名称
                            ShopTopLeft lineone = new ShopTopLeft();
                            lineone.saleordercode = saleOrderCode;
                            lineone.workcode = wo_code;
                            lineone.qty = plan_qty;
                            lineone.partnumber = partcode;
                            lineone.partname = partname;
                            lineone.partspec = partspec;
                            lineone.uom = uomname;
                            lineone.children = new List<TreeTwo>();
                            //查新工单下工序信息
                            sql = @"select A.seq,T.stepcode,T.stepname,A.plan_qty,A.start_qty,A.good_qty,A.ng_qty,A.status
                                            from TK_Wrk_Step A
                                            left join TStep T on A.step_code=T.stepcode
                                            where A.wo_code=@wo_code";
                            dynamicParams.Add("@wo_code", wo_code);
                            var data1 = DapperHelper.selectdata(sql, dynamicParams);
                            for (int k = 0; k < data1.Rows.Count; k++)
                            {
                                string stepseq = data1.Rows[k]["SEQ"].ToString();//工序序号
                                string stepcode = data1.Rows[k]["STEPCODE"].ToString();//工序编码
                                string stepname = data1.Rows[k]["STEPNAME"].ToString();//工序名称
                                string planqty = data1.Rows[k]["PLAN_QTY"].ToString();//任务数量
                                string startqty = data1.Rows[k]["START_QTY"].ToString();//开工数量
                                string good_qty = data1.Rows[k]["GOOD_QTY"].ToString();//报工数量
                                string ng_qty = data1.Rows[k]["NG_QTY"].ToString();//不良数量
                                string status = data1.Rows[k]["STATUS"].ToString();//状态
                                TreeTwo linetwo = new TreeTwo();
                                linetwo.stepseq = stepseq;
                                linetwo.stepcode = stepcode;
                                linetwo.stepname = stepname;
                                linetwo.planqty = planqty;
                                linetwo.startqty = startqty;
                                linetwo.goodqty = good_qty;
                                linetwo.ngqty = ng_qty;
                                linetwo.status = status;
                                lineone.children.Add(linetwo);
                            }
                            list.Add(lineone);
                        }
                    }
                    else
                    {
                        mes.code = "300";
                        mes.Message = "当前车间下无在生产任务!";
                        mes.data = null;
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "车间参数不能为空!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            mes.code = "200";
            mes.Message = "查询成功!";
            mes.data = list;
            return mes;
        }
        #endregion\
        #region[正清和车间看板,左下列表接口]
        public static ToMessage LineSearchBottomLeftData(string shopcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            string[] selects = Array.ConvertAll<string, string>(shopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
            try
            {
                //获取任务列表信息
                sql = @"select A.*,ROW_NUMBER() OVER(ORDER BY (case when A.warning<=2 then A.planenddate end) asc ,A.planstartdate asc) AS RowNum from(
                         select  A.status,A.lm_date,E.saleOrderCode,A.wo_code,M.partcode,M.partname,M.partspec,U.name,
                         A.plan_qty,B.good_qty,B.ng_qty,E.planstartdate,E.planenddate, datediff(day,getdate(),E.planenddate) warning
                         from TK_Wrk_Man A
                         inner join TK_Wrk_Step B on A.wo_code=B.wo_code
                         inner join TKimp_Ewo E on A.m_po=E.wo and A.sourceid=E.id
                         left  join TMateriel_Info M on A.materiel_code=M.partcode
                         left  join TUom U on M.uom_code=U.code
                         where A.status<>'CLOSED' and A.wkshp_code in @shopcode and A.is_delete<>'1' and B.isend='Y'
                         and A.plan_qty>=(B.good_qty+B.ng_qty+B.bad_qty)
                         )as A ";
                var data = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间看板,右上top排行接口,当日]
        public static ToMessage LineSearchTopRightData(string shopcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            string[] selects = Array.ConvertAll<string, string>(shopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
            try
            {
                //获取产品报工top5信息
                sql = @"select top 5 A.org_name as wkshname,A.name as linename,A.partname,isnull(sum(A.good_qty),0) as good_qty from(
                        select W.org_name,E.name,M.partname,A.good_qty  from TK_Wrk_Record A
                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
                        inner join TMateriel_Info M on A.materiel_code=M.partcode
                        inner  join TEqpInfo E on A.eqp_code=E.code
                        inner  join TOrganization W on E.wksp_code=W.org_code and W.description='W'
                        where A.style='B' and S.isend='Y' and W.org_code in @shopcode and datediff(day,GETDATE(),A.lm_date)=0
                        union all
                        select C.name as linename,'' as wkshname,M.partname,A.sqty as good_qty  from TK_Wrk_OutRecord A
                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
                        inner join TMateriel_Info M on A.materiel_code=M.partcode
                        inner  join TCustomer C on A.wx_code=C.code
                        where A.style='S' and S.isend='Y' and datediff(day,GETDATE(),A.lm_date)=0
                        ) as A group by A.org_name,A.name,A.partname order by good_qty desc";
                var data = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间看板,右下top排行接口,当前时间往前一周]
        public static ToMessage LineSearchBottomRightData(string shopcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            string[] selects = Array.ConvertAll<string, string>(shopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
            try
            {
                //获取报工不良次数top5信息
                sql = @"select B.name, COUNT(*) as cont
                        from CSR_WorkRecord_Defect A
                        inner join  TDefect B on CHARINDEX(',' + B.code + ',', ',' + A.defect_code + ',') > 0
                        inner join TK_Wrk_Man M on A.wo_code=M.wo_code
                        where M.wkshp_code in @shopcode
                        group by B.name order by cont desc";
                var data = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间质量数字化看板,top5不良]
        public static ToMessage QCBadTop(string wkshopcode)
        #region[北鸣仓库看板左上,生产待入库]
        public static ToMessage ProductionStockedInLeftTop()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                string[] wkshoplist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                sql = @"select * from h_v_DDKanBan_QCBadTop";
                sql = @"select * from h_v_BMKanBan_ProductionNotReceived";
                var data = DapperHelper.selecttable(sql);
                var top = data.AsEnumerable().GroupBy(row => row.Field<string>("name"))
                .Select(group => new
                {
                    name = group.Key,
                    cont = group.Sum(row => row.Field<int>("cont"))
                }).ToList();
                dir.Add("ALL", top);
                for (int i = 0; i < wkshoplist.Length; i++)
                {
                    var top0 = data.AsEnumerable()
                               .Where(row => row.Field<string>("wkshp_code")== wkshoplist[i].ToString()) // 添加查询条件
                               .GroupBy(row =>row.Field<string>("name"))
                               .Select(group => new
                               {
                                   name = group.Key,
                                   cont = group.Sum(row => row.Field<int>("cont"))
                               }).ToList();
                    dir.Add(wkshoplist[i].ToString(), top0);
                }
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -304,115 +43,13 @@
        }
        #endregion
        #region[正清和车间质量数字化看板,左中周不良趋势]
        public static ToMessage QCBadCenterLeftWeek(string wkshopcode)
        {
            string sql = "";
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                //富尔达车间质量数字化看板,周不良趋势(当前时间往前一周)
                //存储过程名
                string[] wkshoplist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                sql = @"h_p_KanBan_QCBadCenterLeft";
                for (int i = 0; i < wkshoplist.Length; i++)
                {
                    var dynamicParams = new DynamicParameters();
                    dynamicParams.Add("@wkshop_code", wkshoplist[i].ToString());
                    var dt = DapperHelper.selectProcedure(sql, dynamicParams);
                    dir.Add(wkshoplist[i].ToString(), dt);
                }
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间质量数字化看板,右中周完成数/率]
        public static ToMessage QCBadCenterRightWeek(string wkshopcode)
        #region[北鸣仓库看板左下,产品代发货]
        public static ToMessage ProductConsignmentLeftBottom()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                string[] wkshoplist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                sql = @"select * from h_v_DDKanBan_QCBadCenterRight";
                var data = DapperHelper.selecttable(sql);
                for (int i = 0; i < wkshoplist.Length; i++)
                {
                    var top0 = data.AsEnumerable()
                               .Where(row => row.Field<string>("wkshp_code") == wkshoplist[i].ToString()) // 添加查询条件
                               .Select(group => new
                               {
                                   wkshp_code = group.Field<string>("wkshp_code"),
                                   plan_qty= group.Field<decimal>("plan_qty"),
                                   good_qty = group.Field<decimal>("good_qty"),
                                   radio = group.Field<decimal>("radio")
                               }).ToList();
                    dir.Add(wkshoplist[i].ToString(), top0);
                }
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间质量数字化看板,下任务进度]
        public static ToMessage QCBadBottomWeek(string wkshopcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                string[] wkshoplist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                sql = @"select * from h_v_DDKanBan_QCBadBottom where wkshp_code in @wkshoplist";
                dynamicParams.Add("@wkshoplist", wkshoplist);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和仓库看板,左上产品待入库列表]
        public static ToMessage WareHouseTopLeftData()
        {
            string sql = "";
            try
            {
                //获取仓库生产加工单待入库列表
                sql = @"select * from h_v_DDKanBan_WareHouseTopLeft order by voucherdate";
                sql = @"select * from h_v_BMKanBan_ProductionNotDeliver";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -429,122 +66,17 @@
        }
        #endregion
        #region[正清和仓库看板,左下产品待发货列表]
        public static ToMessage WareHouseTopBottomData()
        {
            string sql = "";
            try
            {
                //获取仓库生产加工单待入库列表
                sql = @"select * from h_v_DDKanBan_WareHouseTopBottom order by voucherdate";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和仓库看板,右上成品库、半成品库top5库存排行]
        public static ToMessage WareHouseRightTopData()
        {
            string sql = "";
            try
            {
                sql = @"select * from h_v_DDKanBan_WareHouseRightTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和仓库看板,右下原料库库top5库存排行]
        public static ToMessage WareHouseRightBottomData()
        {
            string sql = "";
            try
            {
                sql = @"select * from h_v_DDKanBan_WareHouseRightBottom";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[正清和车间综合看板,左上生产订单]
        public static ToMessage WorkShopCompreLeftTop(string wkshopcode)
        #region[北鸣仓库看板右上,近一周生产待入库产品排行TOP5]
        public static ToMessage ProductionStockedInRightTop()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            Dictionary<object, object> dir = new Dictionary<object, object>();
            Dictionary<object, object> dir0 = new Dictionary<object, object>();
            Dictionary<object, object> dir1 = new Dictionary<object, object>();
            try
            {
                string[] wkshoplist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                sql = @"select * from h_v_DDKanBan_WorkShopCompreLeftTop";
                sql = @"select * from h_v_BMKanBan_ProductionNotReceivedSumTop";
                var data = DapperHelper.selecttable(sql);
                sql = @"select * from h_v_DDKanBan_WorkShopCompreLeftCenter";
                var data1 = DapperHelper.selecttable(sql);
                for (int i = 0; i < wkshoplist.Length; i++)
                {
                    var top0 = data.AsEnumerable()
                               .Where(row => row.Field<string>("wkshp_code") == wkshoplist[i].ToString()) // 添加查询条件
                               .Select(group => new
                               {
                                   wkshp_code = group.Field<string>("wkshp_code"),
                                   plan_qty = group.Field<decimal>("plan_qty"),
                                   good_qty = group.Field<decimal>("good_qty")
                               }).DefaultIfEmpty(new { wkshp_code = wkshoplist[i].ToString(), plan_qty = 0m, good_qty = 0m })//为空时指定默认值
                               .ToList();
                    dir0.Add(wkshoplist[i].ToString(), top0);
                    var top1 = data1.AsEnumerable()
                               .Where(row => row.Field<string>("wkshp_code") == wkshoplist[i].ToString()) // 添加查询条件
                               .Select(group => new
                               {
                                   wkshp_code = group.Field<string>("wkshp_code"),
                                   plan_qty = group.Field<decimal>("plan_qty"),
                                   quantity = group.Field<decimal>("quantity")
                               }).DefaultIfEmpty(new { wkshp_code = wkshoplist[i].ToString(), plan_qty = 0m,quantity = 0m })//为空时指定默认值
                               .ToList();
                    dir1.Add(wkshoplist[i].ToString(), top1);
                }
                dir.Add("LeftTop", dir0);
                dir.Add("LeftBottom", dir1);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -557,22 +89,17 @@
        }
        #endregion
        #region[正清和车间综合看板,右上销售订单]
        public static ToMessage WorkShopCompreRightTop()
        #region[北鸣仓库看板右下,近一周销售待发货产品排行TOP5]
        public static ToMessage ProductionStockedInRightBottom()
        {
            var sql = "";
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                sql = @"select * from h_v_DDKanBan_WorkShopCompreRightTop";
                sql = @"select * from h_v_BMKanBan_ProductionNotDeliverSumTop";
                var data = DapperHelper.selecttable(sql);
                sql = @"select * from h_v_DDKanBan_WorkShopCompreRightCenter";
                var data1 = DapperHelper.selecttable(sql);
                dir.Add("RightTop", data);
                dir.Add("RightBottom", data1);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -585,21 +112,88 @@
        }
        #endregion
        #region[正清和车间综合看板,右下库存]
        public static ToMessage WorkShopCompreRightBottom()
        #region[北鸣采购委外看板左上,采购待入库]
        public static ToMessage ProcureOutsourcLeftTop()
        {
            var sql = "";
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                sql = @"select * from h_v_DDKanBan_WorkShopCompreRightBottom";
                sql = @"select * from h_v_BMKanBan_ProcureNotReceived";
                var data = DapperHelper.selecttable(sql);
                dir.Add("Y", data.Rows[0]["BaseQuantity"].ToString());
                dir.Add("B", data.Rows[1]["BaseQuantity"].ToString());
                dir.Add("C", data.Rows[2]["BaseQuantity"].ToString());
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = dir;
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[北鸣采购委外看板左下,委外待入库]
        public static ToMessage ProcureOutsourcLeftBottom()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_BMKanBan_OutSourcingNotReceived";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[北鸣采购委外看板右上,近一周采购待入库物料排行TOP5]
        public static ToMessage ProcureOutsourcRightTop()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_BMKanBan_ProcureNotReceivedSumTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[北鸣采购委外看板右下,近一周委外待入库产品排行TOP5]
        public static ToMessage ProcureOutsourcRightBottom()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_BMKanBan_OutSourcingNotReceivedSumTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {