yl
2024-03-04 010838be5afbc9659d8ce143ca4f712ff376bcf3
看板接口开发
已修改6个文件
314 ■■■■ 文件已修改
VueWebCoreApi/Controllers/ImportExcelController.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/KanBanManagerentController.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/KanBanManagerentBLL.cs 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/KanBanManagerentDAL.cs 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/appsettings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ImportExcelController.cs
@@ -218,5 +218,31 @@
            return mes;
        }
        #endregion
        #region[测似保存图片提交数据]
        /// <summary>
        /// 测似保存图片提交数据
        /// </summary>
        /// <param name="imageBase64s">测似保存图片提交数据</param>
        /// <returns></returns>
        [Route(template: "UploadImages")]
        [HttpPost]
        [ApiExplorerSettings(IgnoreApi = true)]
        public async Task<IActionResult> UploadImages([FromBody] List<string> imageBase64s)
        {
            foreach (var imageBase64 in imageBase64s)
            {
                byte[] imageBytes = Convert.FromBase64String(imageBase64);
                string imagePath = Path.Combine("wwwroot/MouldRecordImage/", $"image_{Guid.NewGuid()}.png"); // 生成唯一的文件名
                using (FileStream fs = new FileStream(imagePath, FileMode.Create))
                {
                    await fs.WriteAsync(imageBytes, 0, imageBytes.Length);
                }
            }
            return Ok("Images uploaded successfully.");
        }
        #endregion
    }
}
VueWebCoreApi/Controllers/KanBanManagerentController.cs
@@ -21,13 +21,12 @@
        /// <summary>
        /// 车间看板,上生产信息
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
        [Route(template: "WorkShopProduceTopData")]
        [HttpGet]
        public JsonResult WorkShopProduceTopData(string wkshopcode)
        public JsonResult WorkShopProduceTopData()
        {
            mes = KanBanManagerentBLL.WorkShopProduceTopData(wkshopcode);
            mes = KanBanManagerentBLL.WorkShopProduceTopData();
            return Json(mes);
        }
        #endregion
@@ -36,13 +35,12 @@
        /// <summary>
        /// 车间看板,下左近一周不良趋势
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
        [Route(template: "WorkShopProduceBottomLeftData")]
        [HttpGet]
        public JsonResult WorkShopProduceBottomLeftData(string wkshopcode)
        public JsonResult WorkShopProduceBottomLeftData()
        {
            mes = KanBanManagerentBLL.WorkShopProduceBottomLeftData(wkshopcode);
            mes = KanBanManagerentBLL.WorkShopProduceBottomLeftData();
            return Json(mes);
        }
        #endregion
@@ -51,13 +49,12 @@
        /// <summary>
        /// 车间看板,下右近一月不良统计
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
        [Route(template: "WorkShopProduceBottomRightData")]
        [HttpGet]
        public JsonResult WorkShopProduceBottomRightData(string wkshopcode)
        public JsonResult WorkShopProduceBottomRightData()
        {
            mes = KanBanManagerentBLL.WorkShopProduceBottomRightData(wkshopcode);
            mes = KanBanManagerentBLL.WorkShopProduceBottomRightData();
            return Json(mes);
        }
        #endregion
@@ -67,13 +64,12 @@
        /// <summary>
        /// 车间综合看板,左上生产订单
        /// </summary>
        /// <param name="wkshopcode">车间编码字符串集</param>
        /// <returns></returns>
        [Route(template: "WorkShopCompreLeftTop")]
        [HttpGet]
        public JsonResult WorkShopCompreLeftTop(string wkshopcode)
        public JsonResult WorkShopCompreLeftTop()
        {
            mes = KanBanManagerentBLL.WorkShopCompreLeftTop(wkshopcode);
            mes = KanBanManagerentBLL.WorkShopCompreLeftTop();
            return Json(mes);
        }
        #endregion
@@ -105,5 +101,51 @@
            return Json(mes);
        }
        #endregion
        #region[仓库看板,左上产品待入库列表]
        /// <summary>
        /// 仓库看板,左上产品待入库列表
        /// </summary>
        /// <returns></returns>
        [Route(template: "WareHouseTopLeftData")]
        [HttpGet]
        public JsonResult WareHouseTopLeftData()
        {
            mes = KanBanManagerentBLL.WareHouseTopLeftData();
            return Json(mes);
        }
        #endregion
        #region[仓库看板,左下产品待发货列表]
        /// <summary>
        /// 仓库看板,左下产品待发货列表
        /// </summary>
        /// <returns></returns>
        [Route(template: "WareHouseTopBottomData")]
        [HttpGet]
        public JsonResult WareHouseTopBottomData()
        {
            mes = KanBanManagerentBLL.WareHouseTopBottomData();
            return Json(mes);
        }
        #endregion
        #region[仓库看板,右即时库存]
        /// <summary>
        /// 仓库看板,右上成品库、半成品库top5库存排行
        /// </summary>
        /// <returns></returns>
        [Route(template: "WareHouseRightTopData")]
        [HttpGet]
        public JsonResult WareHouseRightTopData()
        {
            mes = KanBanManagerentBLL.WareHouseRightTopData();
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/KanBanManagerentBLL.cs
@@ -10,31 +10,31 @@
    public class KanBanManagerentBLL
    {
        #region[车间看板,上生产信息]
        public static ToMessage WorkShopProduceTopData(string wkshopcode)
        public static ToMessage WorkShopProduceTopData()
        {
            return KanBanManagerentDAL.WorkShopProduceTopData(wkshopcode);
            return KanBanManagerentDAL.WorkShopProduceTopData();
        }
        #endregion
        #region[车间看板,下左近一周不良趋势]
        public static ToMessage WorkShopProduceBottomLeftData(string wkshopcode)
        public static ToMessage WorkShopProduceBottomLeftData()
        {
            return KanBanManagerentDAL.WorkShopProduceBottomLeftData(wkshopcode);
            return KanBanManagerentDAL.WorkShopProduceBottomLeftData();
        }
        #endregion
        #region[车间看板,下右近一月不良统计]
        public static ToMessage WorkShopProduceBottomRightData(string wkshopcode)
        public static ToMessage WorkShopProduceBottomRightData()
        {
            return KanBanManagerentDAL.WorkShopProduceBottomRightData(wkshopcode);
            return KanBanManagerentDAL.WorkShopProduceBottomRightData();
        }
        #endregion
        #region[车间综合看板,左上生产订单]
        public static ToMessage WorkShopCompreLeftTop(string wkshopcode)
        public static ToMessage WorkShopCompreLeftTop()
        {
            return KanBanManagerentDAL.WorkShopCompreLeftTop(wkshopcode);
            return KanBanManagerentDAL.WorkShopCompreLeftTop();
        }
        #endregion
@@ -51,5 +51,30 @@
            return KanBanManagerentDAL.WorkShopCompreRightBottom();
        }
        #endregion
        #region[仓库看板,左上产品待入库列表]
        public static ToMessage WareHouseTopLeftData()
        {
            return KanBanManagerentDAL.WareHouseTopLeftData();
        }
        #endregion
        #region[仓库看板,左下产品待发货列表]
        public static ToMessage WareHouseTopBottomData()
        {
            return KanBanManagerentDAL.WareHouseTopBottomData();
        }
        #endregion
        #region[仓库看板,右即时库存]
        public static ToMessage WareHouseRightTopData()
        {
            return KanBanManagerentDAL.WareHouseRightTopData();
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs
@@ -2519,7 +2519,7 @@
                if (customerclasscode != "" && customerclasscode != null)
                {
                    string[] classcode = Array.ConvertAll<string, string>(customerclasscode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                    search += "and C.customertype in @classcode ";
                    search += "and C.customertype in @classcode";
                    dynamicParams.Add("@classcode", classcode);
                }
                if (customercode != "" && customercode != null)
VueWebCoreApi/DLL/DAL/KanBanManagerentDAL.cs
@@ -13,16 +13,13 @@
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        #region[车间看板,上生产信息]
        public static ToMessage WorkShopProduceTopData(string wkshopcode)
        public static ToMessage WorkShopProduceTopData()
        {
            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_JLKanBan_WorkshopTop where wkshp_code in @wkshoplist";
                dynamicParams.Add("@wkshoplist", wkshoplist);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                sql = @"select * from h_v_JLKanBan_WorkshopTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = data;
@@ -39,26 +36,17 @@
        #endregion
        #region[车间看板,下左近一周不良趋势]
        public static ToMessage WorkShopProduceBottomLeftData(string wkshopcode)
        public static ToMessage WorkShopProduceBottomLeftData()
        {
            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_JLKanBan_WorkshopBottomLeft";
                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);
                }
                var data = DapperHelper.lissql(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = dir;
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -72,16 +60,13 @@
        #endregion
        #region[车间看板,下右近一月不良统计]
        public static ToMessage WorkShopProduceBottomRightData(string wkshopcode)
        public static ToMessage WorkShopProduceBottomRightData()
        {
            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_JLKanBan_WorkshopBottomRight where wkshp_code in @wkshoplist";
                dynamicParams.Add("@wkshoplist", wkshoplist);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                sql = @"select * from h_v_JLKanBan_WorkshopBottomRight";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = data;
@@ -99,46 +84,18 @@
        #region[车间综合看板,左上生产订单]
        public static ToMessage WorkShopCompreLeftTop(string wkshopcode)
        public static ToMessage WorkShopCompreLeftTop()
        {
            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_JLKanBan_WorkShopCompreLeftTop";
                var data = DapperHelper.selecttable(sql);
                sql = @"select * from h_v_JLKanBan_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);
                dir.Add("LeftTop", data);
                dir.Add("LeftBottom", data1);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = dir;
@@ -189,14 +146,31 @@
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                sql = @"select * from h_v_JLKanBan_WorkShopCompreRightBottom";
                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;
                //存储过程名
                sql = @"h_p_IFCLD_StockInventory";
                var data = DapperHelper.lissql(sql);
                if (data.Rows.Count > 0)
                {
                    // 使用Lambda表达式对qty列进行汇总,并通过type列分组
                    var groupedData = data.AsEnumerable()
                    .GroupBy(row => row.Field<string>("FErpCls"))
                    .Select(group => new
                    {
                        Type = group.Key,
                        Qty = group.Sum(row => row.Field<decimal>("FCUUQty"))
                    }).ToList();
                    mes.code = "200";
                    mes.message = "查询成功!";
                    mes.data = groupedData;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "暂无库存信息!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
@@ -208,5 +182,80 @@
            return mes;
        }
        #endregion
        #region[仓库看板,左上产品待入库列表]
        public static ToMessage WareHouseTopLeftData()
        {
            string sql = "";
            try
            {
                //获取仓库生产加工单待入库列表
                sql = @"select * from h_v_MHKanBan_WareHouseTopLeft 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[仓库看板,左下产品待发货列表]
        public static ToMessage WareHouseTopBottomData()
        {
            string sql = "";
            try
            {
                //获取仓库销售订单产品待发货列表
                sql = @"select * from h_v_MHKanBan_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[仓库看板,右即时库存]
        public static ToMessage WareHouseRightTopData()
        {
            string sql = "";
            try
            {
                sql = @"h_p_IFCLD_SumStockInventory";
                var data = DapperHelper.lissql(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
    }
}
VueWebCoreApi/appsettings.json
@@ -9,7 +9,7 @@
  "AllowedHosts": "*",
  //服务器环境
  "ConnectionStrings": {
    "DBServer": "Data Source=121.196.36.24,1533;Initial Catalog=vmes_JL;User ID=sa;Password=xkd@20230101;pooling=false",
    "DBServer": "Data Source=192.168.1.190;Initial Catalog=vmes;User ID=sa;Password=Xkd123456;pooling=false",
    //企业编码
    "CompanyCode": "000",
    //企业名称
@@ -25,7 +25,7 @@
    //session失效时间
    "InProc": "240",
    //Excel导出模板配置IP
    "FileIP": "http://121.196.36.24:8021/",
    "FileIP": "http://192.168.1.190:8000/",
    //jwtkey
    "SigningKey": "Hello World"
  }