yl
2023-09-19 fbba6d6e8ccf4b052735bd51fd04ff7cb5c16b78
设备类型接口修改、导入问题修改、缺陷定义接口开发
已添加3个文件
已修改14个文件
860 ■■■■ 文件已修改
VueWebCoreApi/ApiGroup/OpenApiGroup.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/DeviceManagerController.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ImportExcelController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/QualityManagementController.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/DeviceManagerBLL.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/QualityManagementBLL.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/DeviceManagerDAL.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ProductModelDAL.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/QualityManagementDAL.cs 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ExcelList.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ImportExcelData.cs 363 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/存货档案.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/库位设置.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/往来单位.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/缺陷定义.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/角色管理.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/ApiGroup/OpenApiGroup.cs
@@ -18,6 +18,8 @@
        ç‰©æ–™ç®¡ç† = 4,
        [Description("设备管理")]
        è®¾å¤‡ç®¡ç† = 5,
        [Description("质量管理")]
        è´¨é‡ç®¡ç† = 8,
        [Description("周期任务")]
        å‘¨æœŸä»»åŠ¡ = 9,
        [Description("系统设置")]
@@ -28,7 +30,6 @@
        ç•…捷通ERP基础数据同步 = 12,
        [Description("Excel导入")]
        Excel导入 = 13
    }
}
VueWebCoreApi/Controllers/DeviceManagerController.cs
@@ -24,37 +24,32 @@
        /// <summary>
        /// è®¾å¤‡ç±»åž‹æŸ¥è¯¢
        /// </summary>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "DeviceTypeSearch")]
        [HttpGet]
        public JsonResult DeviceTypeSearch(int page = 0, int rows = 0, string prop = null, string order = null)
        public JsonResult DeviceTypeSearch()
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = DeviceManagerBLL.DeviceTypeSearch(startNum, endNum, prop, order);
            mes = DeviceManagerBLL.DeviceTypeSearch();
            return Json(mes);
        }
        #endregion
        #region[设备类型新增]
        #region[设备类型新增/编辑]
        /// <summary>
        /// è®¾å¤‡ç±»åž‹æ–°å¢ž
        /// è®¾å¤‡ç±»åž‹æ–°å¢ž/编辑
        /// </summary>
        /// <param name="OperType">操作类型(Add/Update)</param>
        /// <param name="json">提交数据对象</param>
        /// <returns></returns>
        [Route(template: "AddUpdateDeviceType")]
        [HttpPost]
        public JsonResult AddUpdateDeviceType(List<ObjectDataCont> json)
        public JsonResult AddUpdateDeviceType(string OperType,List<ObjectDataCont> json)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = DeviceManagerBLL.AddUpdateDeviceType(json, us);
            mes = DeviceManagerBLL.AddUpdateDeviceType(OperType,json, us);
            return Json(mes);
        }
        #endregion
VueWebCoreApi/Controllers/ImportExcelController.cs
@@ -15,7 +15,7 @@
    [ApiExplorerSettings(GroupName = "Excel导入")]
    [ApiController]
    [Route("api/[controller]")]
    //[ChannelActionFilter]
    [ChannelActionFilter]
    public class ImportExcelController : Controller
    {
VueWebCoreApi/Controllers/QualityManagementController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.Controllers
{
    [ApiExplorerSettings(GroupName = "质量管理")]
    [ApiController]
    [Route("api/[controller]")]
    [ChannelActionFilter]
    public class QualityManagementController : Controller
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        #region[质量管理,缺陷定义查询列表]
        /// <summary>
        /// è´¨é‡ç®¡ç†,缺陷定义查询列表
        /// </summary>
        /// <param name="defectcode">缺陷代码</param>
        /// <param name="defectname">缺陷名称</param>
        /// <param name="defectdescr">缺陷描述</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "DedectSearch")]
        [HttpGet]
        public JsonResult DedectSearch(string defectcode = null, string defectname = null, string defectdescr = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = QualityManagementBLL.DedectSearch(defectcode, defectname, defectdescr, startNum, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[质量管理,缺陷定义新增、编辑提交]
        /// <summary>
        /// è´¨é‡ç®¡ç†ï¼Œç¼ºé™·å®šä¹‰æ–°å¢žã€ç¼–辑提交
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "AddUpdateDedect")]
        [HttpPost]
        public JsonResult AddUpdateDedect([FromBody] JObject obj)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            string defectcode = obj["defectcode"].ToString();    //缺陷代码
            string defectname = obj["defectname"].ToString(); //缺陷名称
            string defectdescr = obj["defectdescr"].ToString(); //缺陷描述
            string opertype = obj["OperType"].ToString();  //操作类型
            mes = QualityManagementBLL.AddUpdateDedect(defectcode, defectname, defectdescr, opertype, us);
            return Json(mes);
        }
        #endregion
        #region[质量管理,缺陷定义删除]
        /// <summary>
        /// è´¨é‡ç®¡ç†ï¼Œç¼ºé™·å®šä¹‰åˆ é™¤
        /// </summary>
        /// <param name="defectcode">缺陷代码</param>
        /// <returns></returns>
        [Route(template: "DeleteDedect")]
        [HttpPost]
        public JsonResult DeleteDedect(string defectcode)
        {
            mes = QualityManagementBLL.DeleteDedect(defectcode);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/DeviceManagerBLL.cs
@@ -280,16 +280,16 @@
        #region[设备类型查询]
        public static ToMessage DeviceTypeSearch(int startNum, int endNum, string prop, string order)
        public static ToMessage DeviceTypeSearch()
        {
            return DeviceManagerDAL.DeviceTypeSearch(startNum, endNum, prop, order);
            return DeviceManagerDAL.DeviceTypeSearch();
        }
        #endregion
        #region[设备类型新增]
        public static ToMessage AddUpdateDeviceType(List<ObjectDataCont> json, User us)
        public static ToMessage AddUpdateDeviceType(string OperType, List<ObjectDataCont> json, User us)
        {
            return DeviceManagerDAL.AddUpdateDeviceType(json, us);
            return DeviceManagerDAL.AddUpdateDeviceType(OperType,json, us);
        }
        #endregion
VueWebCoreApi/DLL/BLL/QualityManagementBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.DAL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.BLL
{
    public class QualityManagementBLL
    {
        #region[质量管理,缺陷定义查询列表]
        public static ToMessage DedectSearch(string defectcode, string defectname, string defectdescr, int startNum, int endNum, string prop, string order)
        {
            return QualityManagementDAL.DedectSearch(defectcode, defectname, defectdescr, startNum, endNum, prop, order);
        }
        #endregion
        #region[质量管理,缺陷定义新增、编辑提交]
        public static ToMessage AddUpdateDedect(string defectcode, string defectname, string defectdescr, string opertype, User us)
        {
            return QualityManagementDAL.AddUpdateDedect(defectcode, defectname, defectdescr, opertype, us);
        }
        #endregion
        #region[质量管理,缺陷定义删除]
        public static ToMessage DeleteDedect(string defectcode)
        {
            return QualityManagementDAL.DeleteDedect(defectcode);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/DeviceManagerDAL.cs
@@ -2375,20 +2375,18 @@
        #region[设备类型查询]
        public static ToMessage DeviceTypeSearch(int startNum, int endNum, string prop, string order)
        public static ToMessage DeviceTypeSearch()
        {
            var dynamicParams = new DynamicParameters();
            try
            {
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select id, code,name,remark
                var sql = @"select id, code,name
                            from TEqpType";
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
                mes.count = data.Rows.Count;
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -2402,7 +2400,7 @@
        #endregion
        #region[设备类型新增]
        public static ToMessage AddUpdateDeviceType(List<ObjectDataCont> json, User us)
        public static ToMessage AddUpdateDeviceType(string OperType, List<ObjectDataCont> json, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -2410,6 +2408,32 @@
            try
            {
                list.Clear();
                if (OperType == "Add")
                {
                    //判断设备类型是否重复
                    sql = @"select *  from TEqpType where code=@devtypecode";
                    dynamicParams.Add("@devtypecode", json[0].code);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "设备类型编码已存在,请重新输入!";
                        mes.data = null;
                        return mes;
                    }
                    //判断设备类型名称是否重复
                    sql = @"select *  from TEqpType where name=@devtypename";
                    dynamicParams.Add("@devtypename", json[0].name);
                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data1.Rows.Count > 0)
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "设备类型名称已存在,请重新输入!";
                        mes.data = null;
                        return mes;
                    }
                //循环写入设备类型表
                for (int i = 0; i < json.Count; i++)
                {
@@ -2427,6 +2451,7 @@
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
@@ -2445,6 +2470,57 @@
                    mes.data = null;
                }
            }
                if (OperType == "Update")
                {
                    //判断设备名称是否重复
                    sql = @"select *  from TEqpType where  code<>@devtypecode and name=@devtypename";
                    dynamicParams.Add("@devtypecode", json[0].code);
                    dynamicParams.Add("@devtypename", json[0].name);
                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data1.Rows.Count > 0)
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "设备类型名称已存在,请重新输入!";
                        mes.data = null;
                        return mes;
                    }
                    for (int i = 0; i < json.Count; i++)
                    {
                        sql = @"update TEqpType set name=@devtypename,remark=@remark,lm_user=@lm_user,lm_date=@lm_date
                                where code=@devtypecode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                devtypecode = json[i].code,
                                devtypename = json[i].name,
                                remark = json[i].description,
                                lm_user= us.usercode,
                                lm_date = DateTime.Now.ToString()
                            }
                        });
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "修改", "修改了设备类型:" + string.Join(",", json.Select(m => m.code)), us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "操作失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs
@@ -84,7 +84,7 @@
                    Message = ImportExcelData.Seventeen(savePath, out StuCode);
                    break;
                case "18"://缺陷定义
                    Message = ImportExcelData.Eighteen(savePath, out StuCode);
                    Message = ImportExcelData.Eighteen(dataTable, out StuCode);
                    break;
                case "19"://生产订单
                    Message = ImportExcelData.Nineteen(savePath, out StuCode);
@@ -182,7 +182,7 @@
                    list = ImportExcelData.SeventeenData(savePath, out stuCode, out message, out count);
                    break;
                case "18"://缺陷定义
                    list = ImportExcelData.EighteenData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.EighteenData(dataTable, out stuCode, out message, out count);
                    break;
                case "19"://生产订单
                    list = ImportExcelData.NineteenData(savePath, out stuCode, out message, out count);
@@ -272,7 +272,7 @@
                    Message = ImportExcelData.SeventeenSubmit(savePath, User, out StuCode);
                    break;
                case "18"://缺陷定义
                    Message = ImportExcelData.EighteenSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.EighteenSubmit(dataTable, us, out StuCode);
                    break;
                case "19"://生产订单
                    Message = ImportExcelData.NineteenSubmit(savePath, User, out StuCode);
VueWebCoreApi/DLL/DAL/ProductModelDAL.cs
@@ -57,24 +57,36 @@
            {
                if (tunittype == "" || tunittype == null)
                {
                    sql = @"select code,name,lm_user,lm_date,isGroup,idunitgroup,data_sources
                             from TUnit  T where T.isGroup='0'
                    sql = @"select AA.code,AA.name,U.username as lm_user,AA.lm_date,AA.isGroup,AA.idunitgroup,AA.data_sources
                            from(
                            select code,name,lm_user,lm_date,isGroup,idunitgroup,data_sources
                            from TUnit  T
                            where T.isGroup='0'
                             union all
                             select code,name,lm_user,lm_date,'1' as isGroup,code as idunitgroup,data_sources         
                             from TUnitGroup ";
                            from TUnitGroup
                            ) as AA
                            left join TUser U on AA.lm_user=U.usercode ";
                }
                if (tunittype == "S") //单计量
                {
                    sql = @"select code,name,lm_user,lm_date,isGroup,idunitgroup,data_sources  from TUnit where isSingleUnit='1' and isGroup='0'";
                    sql = @"select T.code,T.name,U.username as lm_user,T.lm_date,T.isGroup,T.idunitgroup,T.data_sources
                            from TUnit T
                            left join TUser U on T.lm_user=U.usercode
                            where T.isSingleUnit='1' and T.isGroup='0'";
                }
                if (tunittype == "M" && (tunitgroupcode == "" || tunitgroupcode == null)) //多计量,且多计量组编码为空
                {
                    sql = @"select code,name,lm_user,lm_date,'1' as isGroup,code as idunitgroup,data_sources   from TUnitGroup";
                    sql = @"select T.code,T.name,U.usercode as lm_user,T.lm_date,'1' as isGroup,T.code as idunitgroup,T.data_sources
                            from TUnitGroup T
                            left join TUser U on T.lm_user=U.usercode";
                }
                if (tunittype == "M" && (tunitgroupcode != "" && tunitgroupcode != null)) //多计量,且多计量组编码不为空
                {
                    sql = @"select code,name,isMainUnit,changeRate,rateDescription,lm_user,lm_date,isGroup,idunitgroup,data_sources
                            from TUnit where isSingleUnit='0' and isGroup='1' and idunitgroup=@tunitgroupcode";
                    sql = @"select T.code,T.name,T.isMainUnit,T.changeRate,T.rateDescription,U.username as lm_user,T.lm_date,T.isGroup,T.idunitgroup,T.data_sources
                            from TUnit T
                            left join TUser U on T.lm_user=U.usercode
                            where T.isSingleUnit='0' and T.isGroup='1' and T.idunitgroup=@tunitgroupcode";
                    dynamicParams.Add("@tunitgroupcode", tunitgroupcode);
                }
                // --------------查询指定数据--------------
@@ -750,7 +762,7 @@
                            M.idUnitByPurchase as idUnitByPurchasecode,P.name as idUnitByPurchasename,M.idUnitBySale as idUnitBySalecode,S.name as idUnitBySalename,
                            M.idunitbymanufacture as idunitbymanufacturecode,F.name as idunitbymanufacturename,M.idinventoryclass as idinventoryclasscode,C.name as idinventoryclassname,
                            M.isPurchase,M.isSale,M.isMadeSelf,M.isMaterial,M.isMadeRequest,M.idwarehouse as idwarehousecode,H.name as idwarehousename,M.lowQuantity,M.topQuantity,M.safeQuantity,
                            M.status,M.lm_user,M.lm_date,M.data_sources
                            M.status,U.username as lm_user,M.lm_date,M.data_sources
                            from TMateriel_Info M
                            left join TUnit T on M.idunit=T.code
                            left join TUnit R on M.idSubUnitByReport=R.code
@@ -761,6 +773,7 @@
                            left join TMateriel_Class C on M.idinventoryclass=C.code
                            left join TUnitGroup G on M.idunitgroup=G.code
                            left join TSecStck H on M.idwarehouse=H.code
                            left join TUser U on M.lm_user=U.usercode
                            where 1=1 " + search;
                // --------------查询指定数据--------------
                var total = 0; //总条数
VueWebCoreApi/DLL/DAL/QualityManagementDAL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Models;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.DAL
{
    public class QualityManagementDAL
    {
        public static DataTable dt;    //定义全局变量dt
        public static bool res;       //定义全局变量dt
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        public static string strProcName = ""; //定义全局sql变量
        public static List<SqlParameter> listStr = new List<SqlParameter>(); //定义全局参数集合
        public static SqlParameter[] parameters; //定义全局SqlParameter参数数组
        #region[质量管理,缺陷定义查询列表]
        public static ToMessage DedectSearch(string defectcode, string defectname, string defectdescr, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (defectcode != "" && defectcode != null)
                {
                    search += "and A.code like '%'+@defectcode+'%' ";
                    dynamicParams.Add("@defectcode", defectcode);
                }
                if (defectname != "" && defectname != null)
                {
                    search += "and A.name like '%'+@defectname+'%' ";
                    dynamicParams.Add("@defectname", defectname);
                }
                if (defectdescr != "" && defectdescr != null)
                {
                    search += "and A.description like '%'+@defectdescr+'%' ";
                    dynamicParams.Add("@defectdescr", defectdescr);
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.code,A.name,A.description,U.username as lm_user,A.lm_date  from TDefect A
                            left join TUser U on A.lm_user=U.usercode
                            where 1=1 " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[质量管理,缺陷定义新增、编辑提交]
        public static ToMessage AddUpdateDedect(string defectcode, string defectname, string defectdescr, string opertype, User us)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
            try
            {
                if (opertype == "Add")
                {
                    //写入缺陷定义定义表
                    sql = @"insert into TDefect(code,name,description,is_step,lm_user,lm_date)
                                values(@defectcode,@defectname,@description,@is_step,@username,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            defectcode = defectcode,
                            defectname = defectname,
                            description = defectdescr,
                            is_step="N",
                            username = us.usercode,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "缺陷定义新增成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "缺陷定义新增失败!";
                        mes.data = null;
                    }
                }
                if (opertype == "Update")
                {
                    sql = @"update TDefect set name=@defectname,description=@description,lm_user=@username,lm_date=@CreateDate where code=@defectcode";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            defectcode = defectcode,
                            defectname = defectname,
                            description = defectdescr,
                            username = us.usercode,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "缺陷定义修改成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "缺陷定义修改失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[质量管理,缺陷定义删除]
        public static ToMessage DeleteDedect(string defectcode)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //sql = @"select * from  CSR_WorkRecord_Defect  where defect_code=@defectcode";
                //dynamicParams.Add("@defectcode", defectcode);
                //var data = DapperHelper.selectdata(sql, dynamicParams);
                //if (data.Rows.Count > 0)
                //{
                //    mes.code = "300";
                //    mes.count = 0;
                //    mes.Message = "当前缺陷项已生成报工缺陷记录,不允许删除!";
                //    mes.data = null;
                //    return mes;
                //}
                sql = @"delete TDefect  where code=@defectcode";
                list.Add(new { str = sql, parm = new { defectcode = defectcode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "缺陷删除成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "缺陷删除失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebCoreApi/Tools/ExcelList.cs
@@ -22,16 +22,16 @@
                new ScoreReport("7","库位设置"),
                new ScoreReport("8","存货档案"),
                new ScoreReport("9","设备清单"),
                new ScoreReport("10","设备点检项目"),
                new ScoreReport("22","设备点检标准"),
                new ScoreReport("11","设备保养项目"),
                new ScoreReport("23","设备保养标准"),
                new ScoreReport("12","工装清单"),
                new ScoreReport("13","工装点检"),
                new ScoreReport("14","工装保养"),
                //new ScoreReport("10","设备点检项目"),
                //new ScoreReport("22","设备点检标准"),
                //new ScoreReport("11","设备保养项目"),
                //new ScoreReport("23","设备保养标准"),
                //new ScoreReport("12","工装清单"),
                //new ScoreReport("13","工装点检"),
                //new ScoreReport("14","工装保养"),
                new ScoreReport("15","工序定义"),
                new ScoreReport("16","工艺路线"),
                new ScoreReport("24","节拍工价"),
                //new ScoreReport("16","工艺路线"),
                //new ScoreReport("24","节拍工价"),
                new ScoreReport("17","质检标准"),
                new ScoreReport("18","缺陷定义"),
                new ScoreReport("19","生产订单"),
VueWebCoreApi/Tools/ImportExcelData.cs
@@ -227,7 +227,7 @@
                return Message;
            }
            else if (excelTable[0].Columns.Count != 6)
            else if (excelTable[0].Columns.Count != 4)
            {
                code = "301";
                Message = "角色清单模板不符合规范,请检查列名字段数";
@@ -251,22 +251,10 @@
                Message = "角色清单模板:表头信息不符合规范,第3列应为{*状态}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "数据范围")
            else if (excelTable[0].Columns[3].ColumnName != "描述")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第4列应为{数据范围}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "数据权限")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第5列应为{数据权限}";
                return Message;
            }
            else if (excelTable[0].Columns[5].ColumnName != "描述")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第6列应为{描述}";
                Message = "角色清单模板:表头信息不符合规范,第4列应为{描述}";
                return Message;
            }
            else
@@ -464,10 +452,10 @@
                Message = "库位设置模板:表头信息不符合规范,第3列应为{*所属仓库编码}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "*上级库位编码")
            else if (excelTable[0].Columns[3].ColumnName != "上级库位编码")
            {
                code = "301";
                Message = "库位设置模板:表头信息不符合规范,第4列应为{*上级库位编码}";
                Message = "库位设置模板:表头信息不符合规范,第4列应为{上级库位编码}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "*状态")
@@ -509,7 +497,7 @@
                Message = "存货分类模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[1].Columns.Count != 12)
            else if (excelTable[1].Columns.Count != 13)
            {
                code = "301";
                Message = "存货档案模板不符合规范,请检查列名字段数";
@@ -521,10 +509,10 @@
                Message = "存货分类型模板:表头信息不符合规范,第1列应为{*存货分类编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "*存货分类型名称")
            else if (excelTable[0].Columns[1].ColumnName != "*存货分类名称")
            {
                code = "301";
                Message = "存货分类型模板:表头信息不符合规范,第2列应为{*存货分类型名称}";
                Message = "存货分类型模板:表头信息不符合规范,第2列应为{*存货分类名称}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "上级编码")
@@ -569,10 +557,10 @@
                Message = "存货档案模板:表头信息不符合规范,第6列应为{*计量方式}";
                return Message;
            }
            else if (excelTable[1].Columns[6].ColumnName != "*计量单位/组编码")
            else if (excelTable[1].Columns[6].ColumnName != "*计量单位/组名称")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第7列应为{*计量单位/组编码}";
                Message = "存货档案模板:表头信息不符合规范,第7列应为{*计量单位/组名称}";
                return Message;
            }
            else if (excelTable[1].Columns[7].ColumnName != "所属仓库编码")
@@ -1626,47 +1614,39 @@
        #endregion
        #region【Excel模板上传验证,缺陷定义模板】
        public static string Eighteen(string FileCode, out string code)
        public static string Eighteen(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";
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 4)
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "300";
                code = "301";
                Message = "缺陷定义模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns[0].ColumnName != "*缺陷编号(唯一)")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第1列应为{序号}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第1列应为{*缺陷编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "缺陷编号(唯一)")
            else if (excelTable[0].Columns[1].ColumnName != "*缺陷名称")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第2列应为{缺陷编号(唯一)}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第2列应为{*缺陷名称}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "缺陷名称")
            else if (excelTable[0].Columns[2].ColumnName != "缺陷描述")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第3列应为{缺陷名称}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "缺陷描述")
            {
                code = "300";
                Message = "缺陷描述模板不符合规范:表头信息不符合规范,第4列应为{缺陷描述}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第3列应为{缺陷描述}";
                return Message;
            }
            else
@@ -1988,7 +1968,7 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*岗位名称}";
                        erro.ErrorCont = "岗位表:{*岗位名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "岗位表:{*岗位名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -2052,7 +2032,7 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*班组名称}";
                        erro.ErrorCont = "班组表:{*班组名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "班组表:{*班组名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -2251,7 +2231,7 @@
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //班组表
            //角色表
            for (int k = 0; k < excelTable[0].Rows.Count; k++)
            {
                if (excelTable[0].Rows[k][0].ToString().Trim() != null && excelTable[0].Rows[k][0].ToString().Trim() != "")
@@ -2278,56 +2258,56 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*角色名称}";
                        erro.ErrorCont = "角色表:{*角色名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "角色表:{*角色名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                {
                    if (excelTable[0].Rows[k][3].ToString().Trim() == "自定义")
                    {
                        if (excelTable[0].Rows[k][4].ToString().Trim() == null && excelTable[0].Rows[k][4].ToString().Trim() == "")
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = "/";
                            erro.ErrorField = "{数据权限}";
                            erro.ErrorCont = "角色表:{数据范围}字段为:" + excelTable[1].Rows[k][3].ToString().Trim() + "时,{数据权限}字段不能为空";
                            list.Add(erro);
                        }
                        else
                        {
                            //判断数据权限编码是否合理
                            if (excelTable[0].Rows[k][4].ToString().Trim() != null && excelTable[0].Rows[k][4].ToString().Trim() != "")
                            {
                                string[] torgcode = Array.ConvertAll<string, string>(excelTable[0].Rows[k][4].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                                sql = @"select postcode  from TOrganization  where torg_code in @torgcode";
                                dynamicParams.Add("@torgcode", torgcode);
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt != null && dt.Rows.Count > 0)
                                {
                                    string[] values = excelTable[0].Rows[k][4].ToString().Trim().Split(',');
                                    var unmatchedValues = values.Except(dt.AsEnumerable().Select(row => row.Field<string>("torg_code")));
                                    foreach (var value in unmatchedValues)
                                    {
                                        ExcelErro erro = new ExcelErro();
                                        erro.RoeNumber = (k + 1).ToString();
                                        erro.ErrorField = "{数据权限}";
                                        erro.ErrorCont = "角色表:{数据权限}字段" + value + " ä¸æ˜¯æœ‰æ•ˆçš„组织编码";
                                        list.Add(erro);
                                    }
                                }
                                else
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = (k + 1).ToString();
                                    erro.ErrorField = "{数据权限}";
                                    erro.ErrorCont = "角色表:{数据权限}字段" + excelTable[0].Rows[k][4].ToString().Trim() + " ä¸æ˜¯æœ‰æ•ˆçš„组织编码";
                                    list.Add(erro);
                                }
                            }
                        }
                    }
                }
                //if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                //{
                //    if (excelTable[0].Rows[k][3].ToString().Trim() == "自定义")
                //    {
                //        if (excelTable[0].Rows[k][4].ToString().Trim() == null && excelTable[0].Rows[k][4].ToString().Trim() == "")
                //        {
                //            ExcelErro erro = new ExcelErro();
                //            erro.RoeNumber = "/";
                //            erro.ErrorField = "{数据权限}";
                //            erro.ErrorCont = "角色表:{数据范围}字段为:" + excelTable[1].Rows[k][3].ToString().Trim() + "时,{数据权限}字段不能为空";
                //            list.Add(erro);
                //        }
                //        else
                //        {
                //            //判断数据权限编码是否合理
                //            if (excelTable[0].Rows[k][4].ToString().Trim() != null && excelTable[0].Rows[k][4].ToString().Trim() != "")
                //            {
                //                string[] torgcode = Array.ConvertAll<string, string>(excelTable[0].Rows[k][4].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                //                sql = @"select postcode  from TOrganization  where torg_code in @torgcode";
                //                dynamicParams.Add("@torgcode", torgcode);
                //                dt = DapperHelper.selectdata(sql, dynamicParams);
                //                if (dt != null && dt.Rows.Count > 0)
                //                {
                //                    string[] values = excelTable[0].Rows[k][4].ToString().Trim().Split(',');
                //                    var unmatchedValues = values.Except(dt.AsEnumerable().Select(row => row.Field<string>("torg_code")));
                //                    foreach (var value in unmatchedValues)
                //                    {
                //                        ExcelErro erro = new ExcelErro();
                //                        erro.RoeNumber = (k + 1).ToString();
                //                        erro.ErrorField = "{数据权限}";
                //                        erro.ErrorCont = "角色表:{数据权限}字段" + value + " ä¸æ˜¯æœ‰æ•ˆçš„组织编码";
                //                        list.Add(erro);
                //                    }
                //                }
                //                else
                //                {
                //                    ExcelErro erro = new ExcelErro();
                //                    erro.RoeNumber = (k + 1).ToString();
                //                    erro.ErrorField = "{数据权限}";
                //                    erro.ErrorCont = "角色表:{数据权限}字段" + excelTable[0].Rows[k][4].ToString().Trim() + " ä¸æ˜¯æœ‰æ•ˆçš„组织编码";
                //                    list.Add(erro);
                //                }
                //            }
                //        }
                //    }
                //}
            }
            if (list.Count > 0)
            {
@@ -2392,24 +2372,21 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][2].ToString().Trim() != null && excelTable[0].Rows[j][2].ToString().Trim() != "")
                {
                    // ä½¿ç”¨Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*往来单位类型编号(唯一)"]) == excelTable[0].Rows[j][2].ToString().Trim()); // å‡è®¾ID列名为Id
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                       row.Field<string>("上级编码") == row.Field<string>("*往来单位类型编号(唯一)") ||
                       (row.Field<string>("上级编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*往来单位类型编号(唯一)") == row.Field<string>("上级编码")))
                   );
                    // å¦‚果父级ID不合理,则输出
                    if (!isParentIdValid)
            // è¾“出不合理的行
            foreach (var row in invalidRows)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级编码}";
                        erro.ErrorCont = "往来单位类型表:{上级编码}字段:" + excelTable[0].Rows[j][2].ToString().Trim() + " ä¸åˆç†";
                erro.ErrorCont = $"往来单位类型表:*往来单位类型编号(唯一): {row.Field<string>("*往来单位类型编号(唯一)")} çš„上级编码:{row.Field<string>("上级编码")}不合理";
                        list.Add(erro);
                    }
                }
            }
            //往来单位表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
@@ -2600,23 +2577,22 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                {
                    // ä½¿ç”¨Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*库位编号(唯一)"]) == excelTable[0].Rows[k][3].ToString().Trim()); // å‡è®¾ID列名为Id
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                     row.Field<string>("上级库位编码") == row.Field<string>("*库位编号(唯一)") ||
                     (row.Field<string>("上级库位编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*库位编号(唯一)") == row.Field<string>("上级库位编码")))
                 );
                    // å¦‚果父级ID不合理,则输出
                    if (!isParentIdValid)
            // è¾“出不合理的行
            foreach (var row in invalidRows)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级库位编码}";
                        erro.ErrorCont = "库位表:{上级库位编码}字段:" + excelTable[0].Rows[k][3].ToString().Trim() + " ä¸åˆç†";
                erro.ErrorCont = $"库位表:*库位编号(唯一): {row.Field<string>("*库位编号(唯一)")} çš„上级库位编码:{row.Field<string>("上级库位编码")}不合理";
                        list.Add(erro);
                    }
                }
            }
            if (list.Count > 0)
            {
                int index = 0;
@@ -2680,24 +2656,21 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][2].ToString().Trim() != null && excelTable[0].Rows[j][2].ToString().Trim() != "")
                {
                    // ä½¿ç”¨Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*存货分类编号(唯一)"]) == excelTable[0].Rows[j][2].ToString().Trim()); // å‡è®¾ID列名为Id
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                      row.Field<string>("上级编码") == row.Field<string>("*存货分类编号(唯一)") ||
                      (row.Field<string>("上级编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*存货分类编号(唯一)") == row.Field<string>("上级编码")))
                  );
                    // å¦‚果父级ID不合理,则输出
                    if (!isParentIdValid)
            // è¾“出不合理的行
            foreach (var row in invalidRows)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级编码}";
                        erro.ErrorCont = "存货分类表:{上级编码}字段:" + excelTable[0].Rows[j][2].ToString().Trim() + " ä¸åˆç†";
                erro.ErrorCont = $"存货类型表:*存货分类编号(唯一): {row.Field<string>("**存货分类编号(唯一)")} çš„上级编码:{row.Field<string>("上级编码")}不合理";
                        list.Add(erro);
                    }
                }
            }
            //存货表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
@@ -2730,7 +2703,7 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[1].Rows[k][5].ToString().Trim() != null && excelTable[5].Rows[k][1].ToString().Trim() != "")
                if (excelTable[1].Rows[k][5].ToString().Trim() != null && excelTable[1].Rows[k][5].ToString().Trim() != "")
                {
                    switch (excelTable[1].Rows[k][5].ToString().Trim())
                    {
@@ -2738,15 +2711,15 @@
                            //判断计量单位是否为单计量
                            if (excelTable[1].Rows[k][6].ToString().Trim() != null && excelTable[1].Rows[k][6].ToString().Trim() != "")
                            {
                                sql = @"select *  from TUnit where code=@code and isSingleUnit='1'";
                                dynamicParams.Add("@code", excelTable[1].Rows[k][6].ToString().Trim());
                                sql = @"select *  from TUnit where name=@name and isSingleUnit='1'";
                                dynamicParams.Add("@name", excelTable[1].Rows[k][6].ToString().Trim());
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt.Rows.Count <= 0)
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = "/";
                                    erro.ErrorField = "{*计量单位/组编码}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组编码}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的单计量单位";
                                    erro.ErrorField = "{*计量单位/组名字}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组名字}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的单计量单位";
                                    list.Add(erro);
                                }
                            }
@@ -2755,15 +2728,15 @@
                            //判断计量单位是否为多计量
                            if (excelTable[1].Rows[k][6].ToString().Trim() != null && excelTable[1].Rows[k][6].ToString().Trim() != "")
                            {
                                sql = @"select *  from TUnitGroup where code=@code";
                                sql = @"select *  from TUnitGroup where name=@name";
                                dynamicParams.Add("@code", excelTable[1].Rows[k][6].ToString().Trim());
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt.Rows.Count <= 0)
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = "/";
                                    erro.ErrorField = "{*计量单位/组编码}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组编码}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的多计量单位组";
                                    erro.ErrorField = "{*计量单位/组名称}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组名称}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的多计量单位组";
                                    list.Add(erro);
                                }
                            }
@@ -3538,32 +3511,44 @@
        #endregion
        #region【Excel上传数据验证,缺陷定义】
        public static List<ExcelErro> EighteenData(string FileCode, out string StuCode, out string message, out int count)
        public static List<ExcelErro> EighteenData(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 k = 0; k < excelTable[0].Rows.Count; k++)
            {
                if (excelTable.Rows[i][1].ToString().Trim() != null && excelTable.Rows[i][1].ToString().Trim() != "")
                if (excelTable[0].Rows[k][0].ToString().Trim() != null && excelTable[0].Rows[k][0].ToString().Trim() != "")
                {
                    sql = @"select code  from TDefect where code=@code";
                    dynamicParams.Add("@code", excelTable.Rows[i][1].ToString().Trim());
                    sql = @"select *  from TDefect where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[k][0].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.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[k][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][1].ToString().Trim() != null && excelTable[0].Rows[k][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TDefect where name=@name";
                    dynamicParams.Add("@name", excelTable[0].Rows[k][1].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*缺陷名称}";
                        erro.ErrorCont = "缺陷表:{*缺陷名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -3583,7 +3568,7 @@
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable.Rows.Count;
                count = excelTable[0].Rows.Count;
            }
            return list;
        }
@@ -4042,28 +4027,28 @@
                //导入角色
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    if (excelTable[0].Rows[i][3].ToString().Trim() != null && excelTable[0].Rows[i][3].ToString().Trim() != "")
                    {
                        //数据范围
                        switch (excelTable[0].Rows[i][3].ToString().Trim())
                        {
                            case "全部":
                                datarange = "ALL";
                                break;
                            case "本级":
                                datarange = "LEVEL";
                                break;
                            case "本人":
                                datarange = "PERSON";
                                break;
                            case "自定义":
                                datarange = "CUSTOM";
                                datapermissions = excelTable[0].Rows[i][4].ToString().Trim();
                                break;
                            default:
                                break;
                        }
                    }
                    //if (excelTable[0].Rows[i][3].ToString().Trim() != null && excelTable[0].Rows[i][3].ToString().Trim() != "")
                    //{
                    //    //数据范围
                    //    switch (excelTable[0].Rows[i][3].ToString().Trim())
                    //    {
                    //        case "全部":
                    //            datarange = "ALL";
                    //            break;
                    //        case "本级":
                    //            datarange = "LEVEL";
                    //            break;
                    //        case "本人":
                    //            datarange = "PERSON";
                    //            break;
                    //        case "自定义":
                    //            datarange = "CUSTOM";
                    //            datapermissions = excelTable[0].Rows[i][4].ToString().Trim();
                    //            break;
                    //        default:
                    //            break;
                    //    }
                    //}
                    sql = @"insert into TRole(rolecode,rolename,status,datarange,datapermissions,identifying,description,lm_user,lm_date) 
                            values(@rolecode,@rolename,@status,@datarange,@datapermissions,@identifying,@description,@lm_user,@lm_date)";
@@ -4075,9 +4060,10 @@
                            rolecode = excelTable[0].Rows[i][0].ToString().Trim(),
                            rolename = excelTable[0].Rows[i][1].ToString().Trim(),
                            status = excelTable[0].Rows[i][2].ToString().Trim(),
                            datarange = datarange,
                            datarange = "ALL",
                            datapermissions = datapermissions,
                            description = excelTable[0].Rows[i][5].ToString().Trim(),
                            identifying="2",
                            description = excelTable[0].Rows[i][3].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString()
                        }
@@ -4323,16 +4309,19 @@
                    if (excelTable[1].Rows[i][5].ToString().Trim() == "S")
                    {
                        isSingleUnit = 1;
                        idunit = excelTable[1].Rows[i][6].ToString().Trim();
                        sql = @"select * from TUnit  where name=@name and isSingleUnit='1'";
                        dynamicParams.Add("@name", excelTable[1].Rows[i][6].ToString().Trim());
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        idunit = dt.Rows[0]["code"].ToString();
                    }
                    if (excelTable[1].Rows[i][5].ToString().Trim() == "M")
                    {
                        sql = @"select T.code,T.name,T.isMainUnit   from TUnitGroup G
                                inner join TUnit T on G.code=T.idunitgroup
                                where G.code=@code";
                        dynamicParams.Add("@code", excelTable[1].Rows[i][6].ToString().Trim());
                                where G.name=@name";
                        dynamicParams.Add("@name", excelTable[1].Rows[i][6].ToString().Trim());
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        idunitgroup = excelTable[1].Rows[i][6].ToString().Trim();
                        idunitgroup = dt.Rows[0]["groupcode"].ToString();
                        idunit = dt.AsEnumerable().Where(row => row.Field<string>("isMainUnit") =="1").Select(row => row.Field<string>("code")).FirstOrDefault();
                        idnounit = dt.AsEnumerable().Where(row => row.Field<string>("isMainUnit") == "0").Select(row => row.Field<string>("code")).FirstOrDefault();
                    }
@@ -5086,34 +5075,32 @@
        #endregion
        #region【Excel数据上传,缺陷定义】
        public static string EighteenSubmit(string FileCode, string User, out string StuCode)
        public static string EighteenSubmit(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++)
                {
                    sql = @"insert into TDefect(code,name,descr,lm_user,lm_date)
                            values(@code,@name,@descr,@Operator,@CreateDate)";
                    sql = @"insert into TDefect(code,name,description,is_step,lm_user,lm_date)
                            values(@code,@name,@description,@is_step,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable.Rows[i][1].ToString().Trim(),
                            name = excelTable.Rows[i][2].ToString().Trim(),
                            descr = excelTable.Rows[i][3].ToString().Trim(),
                            Operator = User,
                            CreateDate = DateTime.Now.ToString()
                            code = excelTable[0].Rows[i][0].ToString().Trim(),
                            name = excelTable[0].Rows[i][1].ToString().Trim(),
                            description = excelTable[0].Rows[i][2].ToString().Trim(),
                            is_step="N",
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString()
                        }
                    });
                }
VueWebCoreApi/wwwroot/Excel/´æ»õµµ°¸.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/¿âλÉèÖÃ.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/ÍùÀ´µ¥Î».xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/ȱÏݶ¨Òå.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/½ÇÉ«¹ÜÀí.xls
Binary files differ