1.增加节拍工价导入(工艺路线版本、工序版本)
2.增加MES工单批量查找历史引用最新工艺信息接口MesOrderNewStepListContent
已添加3个文件
已修改9个文件
657 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/ImportExcelController.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/GridReportDAL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/MouldManagerDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/BatchProcess.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ExcelList.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ImportExcelData.cs 473 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/节拍工价(工序版).xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/节拍工价(工艺路线版).xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ImportExcelController.cs
@@ -35,8 +35,10 @@
        [HttpGet]
        public JsonResult ExcelModelData()
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            ToMessage mes = new ToMessage();
            List<ScoreReport> list = ExcelList.ExcelData();
            List<ScoreReport> list = ExcelList.ExcelData(us);
            mes.code = "200";
            mes.data = list;
            return Json(mes);
@@ -53,8 +55,10 @@
        [HttpGet]
        public JsonResult DownLoadExcel(string FileCode = null)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            ToMessage mes = new ToMessage();
            List<ScoreReport> list = ExcelList.ExcelData();
            List<ScoreReport> list = ExcelList.ExcelData(us);
            list = list.Where(s => s.FileCode == FileCode).ToList();
            var filename = list[0].FileName + ".xls";
            string fileip = AppSetting.GetAppSetting("FileIP");
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -377,6 +377,23 @@
        }
        #endregion
        #region[MES工单批量查找历史引用最新工序信息]
        /// <summary>
        /// MES工单批量查找历史引用最新工序信息
        /// </summary>
        /// <param name="list">提交数据</param>
        /// <returns></returns>
        [Route(template: "MesOrderNewStepListContent")]
        [HttpPost]
        public JsonResult MesOrderNewStepListContent(List<BatchProcess> list)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = WorkOrderBLL.MesOrderNewStepListContent(list, us);
            return Json(mes);
        }
        #endregion
        #region[MES工单查看工单SOP]
        /// <summary>
        /// MES工单查看工单SOP
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -132,6 +132,13 @@
        }
        #endregion
        #region[MES工单批量查找历史引用最新工序信息]
        public static ToMessage MesOrderNewStepListContent(List<BatchProcess> list, User us)
        {
            return WorkOrderDAL.MesOrderNewStepListContent(list, us);
        }
        #endregion
        #region[MES工单查看工单SOP]
        public static ToMessage MesOrderSopSearch(string wocode, string materielcode)
        {
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs
@@ -83,8 +83,11 @@
                case "16"://工艺路线
                    Message = ImportExcelData.Sixteen(dataTable, out StuCode);
                    break;
                case "24"://节拍工价
                    Message = ImportExcelData.TwentyFour(savePath, out StuCode);
                case "24"://节拍工价(工艺路线版)
                    Message = ImportExcelData.TwentyFour(dataTable, out StuCode);
                    break;
                case "25"://节拍工价(工序版)
                    Message = ImportExcelData.TwentyFive(dataTable, out StuCode);
                    break;
                case "17"://质检标准
                    Message = ImportExcelData.Seventeen(savePath, out StuCode);
@@ -187,8 +190,11 @@
                case "16"://工艺路线
                    list = ImportExcelData.SixteenData(dataTable, out stuCode, out message, out count);
                    break;
                case "24"://节拍工价
                    list = ImportExcelData.TwentyFourData(savePath, out stuCode, out message, out count);
                case "24"://节拍工价(工艺路线版)
                    list = ImportExcelData.TwentyFourData(dataTable, out stuCode, out message, out count);
                    break;
                case "25"://节拍工价(工序版)
                    list = ImportExcelData.TwentyFiveData(dataTable, out stuCode, out message, out count);
                    break;
                case "17"://质检标准
                    list = ImportExcelData.SeventeenData(savePath, out stuCode, out message, out count);
@@ -283,8 +289,11 @@
                case "16"://工艺路线
                    Message = ImportExcelData.SixteenSubmit(dataTable, us, out StuCode);
                    break;
                case "24"://节拍工价
                    Message = ImportExcelData.TwentyFourSubmit(savePath, User, out StuCode);
                case "24"://节拍工价(工艺路线版)
                    Message = ImportExcelData.TwentyFourSubmit(dataTable, us, out StuCode);
                    break;
                case "25"://节拍工价(工序版)
                    Message = ImportExcelData.TwentyFiveSubmit(dataTable, us, out StuCode);
                    break;
                case "17"://质检标准
                    Message = ImportExcelData.SeventeenSubmit(savePath, User, out StuCode);
VueWebCoreApi/DLL/DAL/GridReportDAL.cs
@@ -35,7 +35,7 @@
                    left join TK_Wrk_Man M on A.wo_code=M.wo_code
                    left join TMateriel_Info P on M.materiel_code=P.partcode
                    left join TStep B on A.step_code=B.stepcode
                    where A.wo_code=@mesordercode ";
                    where A.wo_code=@mesordercode order by A.seq";
            dynamicParams.Add("@username", us.username);
            dynamicParams.Add("@createdate", DateTime.Now.ToString());
            dynamicParams.Add("@mesordercode", mesordercode);
VueWebCoreApi/DLL/DAL/MouldManagerDAL.cs
@@ -1222,7 +1222,7 @@
                }
                //根据模具保养标准编码获取关联的检验项目信息
                sql = @"select B.code,B.name,A.chkdesc from TMouldmai_Deta A
                        left join TMouldchk_Item  B on A.code=B.code
                        left join TMouldmai_Item  B on A.code=B.code
                        where  A.mouldmai_main_code=@repairstand_code order by A.seq asc";
                dynamicParams.Add("@repairstand_code", rout.code);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
@@ -1787,7 +1787,7 @@
            {
                //获取对应模具保养标准
                sql = @"select M.code,M.name   from TMouldmai_Mould E
                        inner join TMouldchk_Main M on E.mouldmaimain_code=M.code
                        inner join TMouldmai_Main M on E.mouldmaimain_code=M.code
                        where E.mould_code=@mouldcode order by M.lm_date desc";
                dynamicParams.Add("@mouldcode", mouldcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -1856,6 +1856,82 @@
        }
        #endregion
        #region[MES工单批量查找历史引用最新工序信息]
        public static ToMessage MesOrderNewStepListContent(List<BatchProcess> list, User us)
        {
            var sql = "";
            List<Dictionary<object, object>> dir = new List<Dictionary<object, object>>();
            var dynamicParams = new DynamicParameters();
            try
            {
                dynamic dynObj = JObject.Parse(us.mesSetting);
                bool route = dynObj.route;
                for (int i = 0; i < list.Count; i++)
                {
                    if (route) //工艺路线版
                    {
                        Dictionary<object, object> dict = new Dictionary<object, object>();
                        //MES工单查找历史引用最新工序信息
                        sql = @"select S.wo_code,S.seq,S.step_code as stepcode,T.stepname as stepname,S.stepprice,S.isbott,S.isend,S.ratio
                        from TK_Wrk_Step S
                        inner join (
                        select top 1 A.wo_code,A.route_code   from TK_Wrk_Man A
                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.route_code=S.route_code
                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode and A.route_code=@routecode
                        order by A.lm_date desc
                        ) as W on S.wo_code=W.wo_code and S.route_code=W.route_code
                        left join TStep  T on S.step_code=T.stepcode
                        order by S.seq";
                        dynamicParams.Add("@wkshopcode", list[i].wkshopcode);
                        dynamicParams.Add("@partcode", list[i].partcode);
                        dynamicParams.Add("@routecode", list[i].routecode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        // å‘字典中添加数据
                        dict.Add("partcode", list[i].partcode);
                        dict.Add("stepdata", data);
                        // å°†å­—典添加到列表中
                        dir.Add(dict);
                    }
                    else
                    {
                        Dictionary<object, object> dict = new Dictionary<object, object>();
                        //MES工单查找历史引用最新工序信息
                        sql = @"select S.wo_code,S.seq,S.step_code as stepcode,T.stepname as stepname,S.stepprice,S.isbott,S.isend,S.ratio
                        from TK_Wrk_Step S
                        inner join (
                        select top 1 A.wo_code   from TK_Wrk_Man A
                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code
                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode
                        order by A.lm_date desc
                        ) as W on S.wo_code=W.wo_code
                        left join TStep  T on S.step_code=T.stepcode
                        order by S.seq";
                        dynamicParams.Add("@wkshopcode", list[i].wkshopcode);
                        dynamicParams.Add("@partcode", list[i].partcode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        // å‘字典中添加数据
                        dict.Add("partcode", list[i].partcode);
                        dict.Add("stepdata", data);
                        // å°†å­—典添加到列表中
                        dir.Add(dict);
                    }
                }
                mes.code = "200";
                mes.count = dir.Count;
                mes.data = dir;
                mes.message = "查询成功!";
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单查看工单SOP]
        public static ToMessage MesOrderSopSearch(string wocode, string materielcode)
        {
VueWebCoreApi/Models/BatchProcess.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models
{
    public class BatchProcess
    {
        /// <summary>
        /// è½¦é—´ç¼–码
        /// </summary>
        public string wkshopcode { get; set; }
        // <summary>
        /// å·¥è‰ºç¼–码
        /// </summary>
        public string routecode { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string partcode { get; set; }
    }
}
VueWebCoreApi/Tools/ExcelList.cs
@@ -1,15 +1,19 @@
using System;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Models;
namespace VueWebCoreApi.Tools
{
    public class ExcelList
    {
        public static List<ScoreReport> ExcelData()
        public static List<ScoreReport> ExcelData(User us)
        {
            dynamic dynObj = JObject.Parse(us.mesSetting);
            bool route = dynObj.route;
            List<ScoreReport> list = new List<ScoreReport>
            {
                 //new ScoreReport("0","组织架构"),
@@ -36,10 +40,20 @@
                //new ScoreReport("24","节拍工价"),
                new ScoreReport("17","质检标准"),
                new ScoreReport("18","缺陷定义"),
                new ScoreReport("19","生产订单"),
                new ScoreReport("20","库存查询"),
                new ScoreReport("21","物料清单"),
                //new ScoreReport("19","生产订单"),
                //new ScoreReport("20","库存查询"),
                //new ScoreReport("21","物料清单"),
            };
            //工艺路线版
            if (route)
            {
                list.Add(new ScoreReport("16", "工艺路线"));
                list.Add(new ScoreReport("24", "节拍工价(工艺路线版)"));
            }
            else //工序版
            {
                list.Add(new ScoreReport("25", "节拍工价(工序版)"));
            }
            return list;
        }
    }
VueWebCoreApi/Tools/ImportExcelData.cs
@@ -1465,78 +1465,91 @@
        }
        #endregion
        #region【Excel模板上传验证,节拍工价模板】
        public static string TwentyFour(string FileCode, out string code)
        #region【Excel模板上传验证,节拍工价(工艺路线版)模板】
        public static string TwentyFour(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            if (excelTable.Count != 2)
            if (excelTable.Count != 1)
            {
                code = "300";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 9)
            else if (excelTable[0].Columns.Count != 4)
            {
                code = "300";
                Message = "节拍工价模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns[0].ColumnName != "*产品编码")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第1列应为{序号}";
                Message = "产品名称模板不符合规范:表头信息不符合规范,第1列应为{*产品编码}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "产品名称")
            else if (excelTable[0].Columns[1].ColumnName != "*工艺路线编码")
            {
                code = "300";
                Message = "产品名称模板不符合规范:表头信息不符合规范,第2列应为{产品名称}";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第2列应为{*工艺路线编码}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "工艺路线名称")
            else if (excelTable[0].Columns[2].ColumnName != "*工序编码")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第3列应为{工艺路线名称}";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第3列应为{*工序编码}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "工序名称")
            else if (excelTable[0].Columns[3].ColumnName != "*计件单价")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{工序名称}";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{*计件单价}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "设备名称")
            else
            {
                code = "200";
                Message = "模板检验通过";
            }
            return Message;
        }
        #endregion
        #region【Excel模板上传验证,节拍工价(工序版)模板】
        public static string TwentyFive(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            if (excelTable.Count != 1)
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{设备名称}";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "300";
                Message = "节拍工价模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[5].ColumnName != "计件单价")
            else if (excelTable[0].Columns[0].ColumnName != "*产品编码")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{计件单价}";
                Message = "产品名称模板不符合规范:表头信息不符合规范,第1列应为{*产品编码}";
                return Message;
            }
            else if (excelTable[0].Columns[6].ColumnName != "设备节拍")
            else if (excelTable[0].Columns[1].ColumnName != "*工序编码")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{设备节拍}";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第2列应为{*工序编码}";
                return Message;
            }
            else if (excelTable[0].Columns[7].ColumnName != "生产节拍")
            else if (excelTable[0].Columns[2].ColumnName != "*计件单价")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{生产节拍}";
                return Message;
            }
            else if (excelTable[0].Columns[8].ColumnName != "型腔数")
            {
                code = "300";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第4列应为{型腔数}";
                Message = "节拍工价模板不符合规范:表头信息不符合规范,第3列应为{*计件单价}";
                return Message;
            }
            else
@@ -4018,119 +4031,104 @@
        }
        #endregion
        #region【Excel上传数据验证,节拍工价】
        public static List<ExcelErro> TwentyFourData(string FileCode, out string StuCode, out string message, out int count)
        #region【Excel上传数据验证,节拍工价(工艺路线版)】
        public static List<ExcelErro> TwentyFourData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            DataTable dt;
            var dynamicParams = new DynamicParameters();
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            DataTable excelTable = new DataTable();
            list = ImportExcel.ExcelToTableErro(FileCode);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            excelTable = ImportExcel.ExcelToTable(FileCode);  //获取Excel数据
            for (int i = 0; i < excelTable.Rows.Count; i++)
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            for (int i = 0; i < excelTable[0].Rows.Count; i++)
            {
                //产品是否存在
                sql = @"select partname from TMateriel_Info
                        where partname=@partname";
                dynamicParams.Add("@partname", excelTable.Rows[i][1].ToString().Trim());
                sql = @"select partcode,partname from TMateriel_Info
                        where partcode=partcode";
                dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{产品名称}";
                    erro.ErrorCont = "存货档案:{产品名称}字段" + excelTable.Rows[i][1].ToString().Trim() + "不存在";
                    erro.ErrorField = "{*产品编码}";
                    erro.ErrorCont = "存货档案:{*产品编码}字段" + excelTable[0].Rows[i][0].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //工艺路线是否存在
                sql = @"select name from TFlw_Rout
                        where name=@routename";
                dynamicParams.Add("@routename", excelTable.Rows[i][2].ToString().Trim());
                sql = @"select code,name from TFlw_Rout
                        where code=@routecode";
                dynamicParams.Add("@routecode", excelTable[0].Rows[i][1].ToString().Trim());
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{工艺路线名称}";
                    erro.ErrorCont = "工艺路线:{工艺路线名称}字段" + excelTable.Rows[i][2].ToString().Trim() + "不存在";
                    erro.ErrorField = "{*工艺路线编码}";
                    erro.ErrorCont = "工艺路线:{*工艺路线编码}字段" + excelTable[0].Rows[i][1].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //工序是否存在
                sql = @"select stepname from TStep
                        where stepname=@stepname";
                dynamicParams.Add("@stepname", excelTable.Rows[i][3].ToString().Trim());
                sql = @"select stepcode,stepname from TStep
                        where stepcode=@stepcode";
                dynamicParams.Add("@stepcode", excelTable[0].Rows[i][2].ToString().Trim());
                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                if (data1.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{工序名称}";
                    erro.ErrorCont = "工序定义:{工序名称}字段" + excelTable.Rows[i][3].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //设备是否存在
                sql = @"select name from TEqpInfo
                        where name=@eqpname";
                dynamicParams.Add("@eqpname", excelTable.Rows[i][4].ToString().Trim());
                var data2 = DapperHelper.selectdata(sql, dynamicParams);
                if (data2.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{设备名称}";
                    erro.ErrorCont = "设备清单:{设备名称}字段" + excelTable.Rows[i][4].ToString().Trim() + "不存在";
                    erro.ErrorField = "{*工序编码}";
                    erro.ErrorCont = "工序定义:{*工序编码}字段" + excelTable[0].Rows[i][2].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //判断产品是否关联工艺路线
                sql = @"select M.partname,R.name  from TMateriel_Route A
                sql = @"select M.partcode,R.code  from TMateriel_Route A
                        inner join TMateriel_Info M on A.materiel_code=M.partcode
                        inner join TFlw_Rout R on A.route_code=R.code
                        where M.partname=@partname and R.name=@routename";
                dynamicParams.Add("@partname", excelTable.Rows[i][1].ToString().Trim());
                dynamicParams.Add("@routename", excelTable.Rows[i][2].ToString().Trim());
                        where M.partcode=@partcode and R.code=@routecode";
                dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                dynamicParams.Add("@routecode", excelTable[0].Rows[i][1].ToString().Trim());
                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                if (data3.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{产品名称/工艺路线名称}";
                    erro.ErrorCont = "产品关联工艺路线:{产品名称}字段:【" + excelTable.Rows[i][1].ToString().Trim() + "】对应工艺路线名称:【" + excelTable.Rows[i][2].ToString().Trim() + "】未关联";
                    erro.ErrorField = "{*产品编码/*工艺路线编码}";
                    erro.ErrorCont = "产品关联工艺路线:{*产品编码}字段:【" + excelTable[0].Rows[i][0].ToString().Trim() + "】对应*工艺路线编码:【" + excelTable[0].Rows[i][1].ToString().Trim() + "】未关联";
                    list.Add(erro);
                }
                //判断工艺路线是否关联工序
                sql = @"select R.name,S.stepname  from TFlw_Rtdt A
                sql = @"select R.code,S.stepcode  from TFlw_Rtdt A
                        inner join TFlw_Rout R on A.rout_code=R.code
                        inner join TStep S on A.step_code=S.stepcode
                        where R.name=@routename and S.stepname=@stepname";
                dynamicParams.Add("@routename", excelTable.Rows[i][2].ToString().Trim());
                dynamicParams.Add("@stepname", excelTable.Rows[i][3].ToString().Trim());
                        where R.code=@routecode and S.stepcode=@stepcode";
                dynamicParams.Add("@routecode", excelTable[0].Rows[i][1].ToString().Trim());
                dynamicParams.Add("@stepcode", excelTable[0].Rows[i][2].ToString().Trim());
                var data4 = DapperHelper.selectdata(sql, dynamicParams);
                if (data4.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{工艺路线名称/工序名称}";
                    erro.ErrorCont = "工艺路线关联工序:{工艺路线名称}字段:【" + excelTable.Rows[i][2].ToString().Trim() + "】对应工序名称:【" + excelTable.Rows[i][3].ToString().Trim() + "】未关联";
                    erro.ErrorField = "{*工艺路线编码/*工序编码}";
                    erro.ErrorCont = "工艺路线关联工序:{*工艺路线编码}字段:【" + excelTable[0].Rows[i][1].ToString().Trim() + "】对应*工序编码:【" + excelTable[0].Rows[i][2].ToString().Trim() + "】未关联";
                    list.Add(erro);
                }
                //判断工序是否关联设备
                sql = @"select E.name,S.stepname  from TFlw_Rteqp A
                        inner join TStep S on A.step_code=S.stepcode
                        inner join TEqpInfo E on A.eqp_code=E.code
                        where S.stepname=@stepname and E.name=@eqpname";
                dynamicParams.Add("@stepname", excelTable.Rows[i][3].ToString().Trim());
                dynamicParams.Add("@eqpname", excelTable.Rows[i][4].ToString().Trim());
                var data5 = DapperHelper.selectdata(sql, dynamicParams);
                if (data5.Rows.Count <= 0)
                //判断产品、工艺路线、工序是否重复
                var isDuplicate = excelTable[0].AsEnumerable()
                .GroupBy(row => new
                {
                    PartCode = row["*产品编码"].ToString().Trim(),
                    RoutCode = row["*工艺路线编码"].ToString().Trim(),
                    StepCode = row["*工序编码"].ToString().Trim()
                }).Any(g => g.Count() > 1);
                if (isDuplicate)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{工序名称/设备名称}";
                    erro.ErrorCont = "工序关联设备:{工序名称}字段:【" + excelTable.Rows[i][3].ToString().Trim() + "】对应设备名称:【" + excelTable.Rows[i][4].ToString().Trim() + "】未关联";
                    erro.ErrorField = "{*产品编码/*工艺路线编码/*工序编码}";
                    erro.ErrorCont = "模板数据中:{*产品编码}字段:【" + excelTable[0].Rows[i][0].ToString().Trim() + "】对应{*工艺路线编码}字段:【" + excelTable[0].Rows[i][1].ToString().Trim() + "】对应{*工序编码}:【" + excelTable[0].Rows[i][2].ToString().Trim() + "】有重复!";
                    list.Add(erro);
                }
            }
@@ -4149,7 +4147,99 @@
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable.Rows.Count;
                count = excelTable[0].Rows.Count;
            }
            return list;
        }
        #endregion
        #region【Excel上传数据验证,节拍工价(工艺路线版)】
        public static List<ExcelErro> TwentyFiveData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            var dynamicParams = new DynamicParameters();
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            for (int i = 0; i < excelTable[0].Rows.Count; i++)
            {
                //产品是否存在
                sql = @"select partcode,partname from TMateriel_Info
                        where partcode=partcode";
                dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{*产品编码}";
                    erro.ErrorCont = "存货档案:{*产品编码}字段" + excelTable[0].Rows[i][0].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //工序是否存在
                sql = @"select stepcode,stepname from TStep
                        where stepcode=@stepcode";
                dynamicParams.Add("@stepcode", excelTable[0].Rows[i][1].ToString().Trim());
                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                if (data1.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{*工序编码}";
                    erro.ErrorCont = "工序定义:{*工序编码}字段" + excelTable[0].Rows[i][1].ToString().Trim() + "不存在";
                    list.Add(erro);
                }
                //判断产品是否关联工序
                sql = @"select M.partcode,R.stepcode  from TMateriel_Step A
                        inner join TMateriel_Info M on A.materiel_code=M.partcode
                        inner join TStep R on A.step_code=R.stepcode
                        where M.partcode=@partcode and R.stepcode=@stepcode";
                dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                dynamicParams.Add("@stepcode", excelTable[0].Rows[i][1].ToString().Trim());
                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                if (data3.Rows.Count <= 0)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{*产品编码/*工序编码}";
                    erro.ErrorCont = "产品关联工序:{*产品编码}字段:【" + excelTable[0].Rows[i][0].ToString().Trim() + "】对应*工序编码:【" + excelTable[0].Rows[i][1].ToString().Trim() + "】未关联";
                    list.Add(erro);
                }
                //判断产品、工序是否重复
                var isDuplicate = excelTable[0].AsEnumerable()
                .GroupBy(row => new
                {
                    PartCode = row["*产品编码"].ToString().Trim(),
                    StepCode = row["*工序编码"].ToString().Trim()
                }).Any(g => g.Count() > 1);
                if (isDuplicate)
                {
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = "/";
                    erro.ErrorField = "{产品编码/工序编码}";
                    erro.ErrorCont = "模板数据中:{*产品编码}字段:【" + excelTable[0].Rows[i][0].ToString().Trim() + "】对应*工序编码:【" + excelTable[0].Rows[i][1].ToString().Trim() + "】有重复!";
                    list.Add(erro);
                }
            }
            if (list.Count > 0)
            {
                int index = 0;
                foreach (ExcelErro item in list)
                {
                    index++;
                    item.Seq = index.ToString();
                }
                StuCode = "301";
                message = "数据验证失败";
            }
            else
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable[0].Rows.Count;
            }
            return list;
        }
@@ -5912,143 +6002,136 @@
        }
        #endregion
        #region【Excel数据上传,节拍工价】
        public static string TwentyFourSubmit(string FileCode, string User, out string StuCode)
        #region【Excel数据上传,节拍工价(工艺路线版)】
        public static string TwentyFourSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
            string sql = "";
            DataTable dt;
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                DataTable excelTable = new DataTable();
                excelTable = ImportExcel.ExcelToTable(FileCode);
                //导入设备点检项目表
                for (int i = 0; i < excelTable.Rows.Count; i++)
                //导入节拍工价表
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    string partcode = "", routecode = "", stepcode = "", eqpcode = "", wkspcode = "";
                    //查询产品编码
                    sql = @"select partcode from TMateriel_Info
                        where partname=@partname";
                    dynamicParams.Add("@partname", excelTable.Rows[i][1].ToString().Trim());
                    //查询工序节拍表中:产品+工艺路线+工序是否存在
                    sql = @"select *  from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode";
                    dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                    dynamicParams.Add("@routecode", excelTable[0].Rows[i][1].ToString().Trim());
                    dynamicParams.Add("@stepcode", excelTable[0].Rows[i][2].ToString().Trim());
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        partcode = data.Rows[0]["partcode"].ToString();
                    }
                    else
                    {
                        StuCode = "产品名称:【" + excelTable.Rows[i][1].ToString().Trim() + "】对应编码不存在!";
                        message = "导入失败!";
                    }
                    //查询工艺路线编码
                    sql = @"select code from TFlw_Rout
                        where name=@routename";
                    dynamicParams.Add("@routename", excelTable.Rows[i][2].ToString().Trim());
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data0.Rows.Count > 0)
                    {
                        routecode = data0.Rows[0]["code"].ToString();
                    }
                    else
                    {
                        StuCode = "工艺路线名称:【" + excelTable.Rows[i][2].ToString().Trim() + "】对应编码不存在!";
                        message = "导入失败!";
                    }
                    //查询工序编码
                    sql = @"select stepcode from TStep
                        where stepname=@stepname";
                    dynamicParams.Add("@stepname", excelTable.Rows[i][3].ToString().Trim());
                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data1.Rows.Count > 0)
                    {
                        stepcode = data1.Rows[0]["stepcode"].ToString();
                    }
                    else
                    {
                        StuCode = "工序名称:【" + excelTable.Rows[i][3].ToString().Trim() + "】对应编码不存在!";
                        message = "导入失败!";
                    }
                    //查询设备编码
                    sql = @"select code from TEqpInfo
                        where name=@eqpname";
                    dynamicParams.Add("@eqpname", excelTable.Rows[i][4].ToString().Trim());
                    var data4 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data4.Rows.Count > 0)
                    {
                        eqpcode = data4.Rows[0]["code"].ToString();
                    }
                    else
                    {
                        StuCode = "设备名称:【" + excelTable.Rows[i][4].ToString().Trim() + "】对应编码不存在!";
                        message = "导入失败!";
                    }
                    //查询车间编码
                    sql = @"select wksp_code from TEqpInfo
                        where name=@eqpname";
                    dynamicParams.Add("@eqpname", excelTable.Rows[i][4].ToString().Trim());
                    var data5 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data5.Rows.Count > 0)
                    {
                        wkspcode = data5.Rows[0]["wksp_code"].ToString();
                    }
                    else
                    {
                        StuCode = "设备名称:【" + excelTable.Rows[i][4].ToString().Trim() + "】对应车间编码不存在!";
                        message = "导入失败!";
                    }
                    //查询工序节拍表中:产品+工艺路线+工序+设备是否存在
                    sql = @"select *  from TPrteEqp_Stad
                        where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
                    dynamicParams.Add("@partcode", partcode);
                    dynamicParams.Add("@routecode", routecode);
                    dynamicParams.Add("@stepcode", stepcode);
                    dynamicParams.Add("@eqpcode", eqpcode);
                    var data6 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data6.Rows.Count > 0)
                    {
                        sql = @"update TPrteEqp_Stad set stand_value=@stand_value,eqp_value=@eqp_value,cavity_qty=@cavity_qty,unprice=@unprice,lm_user=@username,lm_date=@userdate
                            where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode ";
                        sql = @"update TPrteEqp_Stad set unprice=@unprice,lm_user=@username,lm_date=@userdate
                            where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                partcode = partcode,
                                routecode = routecode,
                                stepcode = stepcode,
                                eqpcode = eqpcode,
                                stand_value = excelTable.Rows[i][7].ToString().Trim(),
                                eqp_value = excelTable.Rows[i][6].ToString().Trim(),
                                cavity_qty = excelTable.Rows[i][8].ToString().Trim(),
                                unprice = excelTable.Rows[i][5].ToString().Trim(),
                                username = User,
                                partcode = excelTable[0].Rows[i][0].ToString().Trim(),
                                routecode = excelTable[0].Rows[i][1].ToString().Trim(),
                                stepcode = excelTable[0].Rows[i][2].ToString().Trim(),
                                unprice = excelTable[0].Rows[i][3].ToString().Trim(),
                                username = us.usercode,
                                userdate = DateTime.Now.ToString()
                            }
                        });
                    }
                    else
                    {
                        sql = @"insert into TPrteEqp_Stad(materiel_code,eqp_code,stand_value,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,step_code)
                              values(@partcode,@eqpcode,@stand_value,@routecode,@unprice,@eqp_value,@cavity_qty,@wkspcode,@username,@userdate,@stepcode)";
                        sql = @"insert into TPrteEqp_Stad(materiel_code,route_code,step_code,unprice,lm_user,lm_date)
                              values(@partcode,@routecode,@stepcode,@unprice,@username,@userdate)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                partcode = partcode,
                                eqpcode = eqpcode,
                                stand_value = excelTable.Rows[i][7].ToString().Trim(),
                                routecode = routecode,
                                unprice = excelTable.Rows[i][5].ToString().Trim(),
                                eqp_value = excelTable.Rows[i][6].ToString().Trim(),
                                cavity_qty = excelTable.Rows[i][8].ToString().Trim(),
                                wkspcode = wkspcode,
                                username = User,
                                userdate = DateTime.Now.ToString(),
                                stepcode = stepcode
                                partcode = excelTable[0].Rows[i][0].ToString().Trim(),
                                routecode = excelTable[0].Rows[i][1].ToString().Trim(),
                                stepcode = excelTable[0].Rows[i][2].ToString().Trim(),
                                unprice = excelTable[0].Rows[i][3].ToString().Trim(),
                                username = us.usercode,
                                userdate = DateTime.Now.ToString()
                            }
                        });
                    }
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    StuCode = "200";
                    message = "导入成功!";
                }
                else
                {
                    StuCode = "300";
                    message = "导入失败!";
                }
            }
            catch (Exception e)
            {
                StuCode = "300";
                message = e.Message;
            }
            return message;
        }
        #endregion
        #region【Excel数据上传,节拍工价(工序版)】
        public static string TwentyFiveSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
            string sql = "";
            DataTable dt;
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                //导入节拍工价表
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    //查询工序节拍表中:产品+工序是否存在
                    sql = @"select *  from TPrteEqp_Stad where materiel_code=@partcode  and step_code=@stepcode";
                    dynamicParams.Add("@partcode", excelTable[0].Rows[i][0].ToString().Trim());
                    dynamicParams.Add("@stepcode", excelTable[0].Rows[i][1].ToString().Trim());
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        sql = @"update TPrteEqp_Stad set unprice=@unprice,lm_user=@username,lm_date=@userdate
                            where materiel_code=@partcode  and step_code=@stepcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                partcode = excelTable[0].Rows[i][0].ToString().Trim(),
                                stepcode = excelTable[0].Rows[i][1].ToString().Trim(),
                                unprice = excelTable[0].Rows[i][2].ToString().Trim(),
                                username = us.usercode,
                                userdate = DateTime.Now.ToString()
                            }
                        });
                    }
                    else
                    {
                        sql = @"insert into TPrteEqp_Stad(materiel_code,step_code,unprice,lm_user,lm_date)
                              values(@partcode,@stepcode,@unprice,@username,@userdate)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                partcode = excelTable[0].Rows[i][0].ToString().Trim(),
                                stepcode = excelTable[0].Rows[i][1].ToString().Trim(),
                                unprice = excelTable[0].Rows[i][2].ToString().Trim(),
                                username = us.usercode,
                                userdate = DateTime.Now.ToString()
                            }
                        });
                    }
VueWebCoreApi/wwwroot/Excel/½ÚÅŤ¼Û(¹¤Ðò°æ).xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/½ÚÅŤ¼Û(¹¤ÒÕ·Ïß°æ).xls
Binary files differ