MES工单新选源单、选单据类型(标准工单、报废补单)
开发工序检验报表(查询、导出)
已添加15个文件
已修改18个文件
已删除1个文件
2032 ■■■■■ 文件已修改
.vs/VueWebApi/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/AppDeviceManageController.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/DeviceManagerController.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ProductionManagementController.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/QualityManagementController.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/AppDeviceManageBLL.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/ProductionManagementBLL.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/QualityManagementBLL.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/AppDeviceManageDAL.cs 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/DeviceManagerDAL.cs 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/ProductionManagementDAL.cs 156 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/QualityManagementDAL.cs 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/20220826120105760.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/工序检验记录20220826111001.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/工序检验记录20220826112554.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/工序检验记录20220826122922020.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/工序检验记录20220826123323771.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/File/newxls/工序检验记录20220826152043175.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-08-25.TXT 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-08-26.TXT 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Models/AppDevicecCheck.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Models/StandEqp.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/DALSkillCondition.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/DownLoad.cs 573 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/VueWebApi.csproj 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VueWebApi/v16/.suo
Binary files differ
VueWebApi/Controllers/AppDeviceManageController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using VueWebApi.DLL.BLL;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/AppDeviceManage")]
    [ControllerGroup("App设备管理", "在线接口")]
    public class AppDeviceManageController : ApiController
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        #region[日常点检,扫描工位/设备二维码]
        /// <summary>
        /// æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
        /// </summary>
        /// <param name="eqpcode">设备编码</param>
        /// <returns></returns>
        [Route(template: "ScanDeviceQrCodeData")]
        [HttpGet]
        public HttpResponseMessage ScanDeviceQrCodeData(string eqpcode)
        {
            mes = AppDeviceManageBLL.ScanDeviceQrCodeData(eqpcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[日常点检,选择扫码设备列表带出点检项]
        /// <summary>
        /// æ—¥å¸¸ç‚¹æ£€,选择扫码设备列表带出点检项
        /// </summary>
        /// <param name="eqpcode">设备编码</param>
        /// <returns></returns>
        [Route(template: "SelectScanDeviceQrCodeItem")]
        [HttpGet]
        public HttpResponseMessage SelectScanDeviceQrCodeItem(string eqpcode)
        {
            mes = AppDeviceManageBLL.SelectScanDeviceQrCodeItem(eqpcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[日常点检、提交保存]
        /// <summary>
        /// æ—¥å¸¸ç‚¹æ£€ã€æäº¤ä¿å­˜
        /// </summary>
        /// <param name="username">登录人员(点检人)</param>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "AppDeviceCheckSave")]
        [HttpPost]
        public HttpResponseMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
        {
            mes = AppDeviceManageBLL.AppDeviceCheckSave(username, json);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/Controllers/DeviceManagerController.cs
@@ -286,7 +286,7 @@
        /// <returns></returns>
        [Route(template: "DeviceCheckItemSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceCheckItemSearch(string checkitemcode = null, string checkitemname = null, string checkdescr = null, string isqrcode = null,string cycle=null, int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage DeviceCheckItemSearch(int page, int rows, string prop,string order,string checkitemcode = null, string checkitemname = null, string checkdescr = null, string isqrcode = null,string cycle=null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
@@ -351,7 +351,7 @@
        /// <returns></returns>
        [Route(template: "DeviceMaiItemSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceMaiItemSearch(string maiitemcode = null, string maiitemname = null, string maidescr = null, string isqrcode = null, string cycle = null, int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage DeviceMaiItemSearch(int page, int rows, string prop, string order,string maiitemcode = null, string maiitemname = null, string maidescr = null, string isqrcode = null, string cycle = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
@@ -413,7 +413,7 @@
        /// <returns></returns>
        [Route(template: "DeviceCheckStandArdSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceCheckStandArdSearch(string checkstandcode = null, string checkstandname = null, string checkcontr = null,int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage DeviceCheckStandArdSearch(int page, int rows, string prop, string order,string checkstandcode = null, string checkstandname = null, string checkcontr = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
@@ -531,7 +531,7 @@
        /// <returns></returns>
        [Route(template: "DeviceRepairStandArdSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceRepairStandArdSearch(string repairstandcode = null, string repairstandname = null, string repairstanddescr = null, int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage DeviceRepairStandArdSearch(int page, int rows, string prop, string order,string repairstandcode = null, string repairstandname = null, string repairstanddescr = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
@@ -633,5 +633,7 @@
        }
        #endregion
    }
}
VueWebApi/Controllers/ProductionManagementController.cs
@@ -117,6 +117,8 @@
        /// </summary>
        /// <param name="mesorderstus">工单状态码</param>
        /// <param name="mesordercode">工单编号</param>
        /// <param name="sourceorder">源单单号</param>
        /// <param name="ordertype">单据类型</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
@@ -129,11 +131,11 @@
        /// <returns></returns>
        [Route(template: "MesOrderSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null,string sourceorder=null,string ordertype=null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = 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 = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            mes = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
@@ -195,6 +197,8 @@
        public HttpResponseMessage AddUpdateMesOrder([FromBody] JObject obj)
        {
            string mesorderstus = obj["mesorderstus"].ToString();    //工单状态码
            string sourceorder = obj["sourceorder"].ToString();    //源单编号
            string ordertype = obj["ordertype"].ToString();       //工单类型
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string mesqty = obj["mesqty"].ToString(); //工单数量
@@ -205,7 +209,7 @@
            string orderlev = obj["orderlev"].ToString(); //工单等级
            string opertype = obj["OperType"].ToString();  //操作类型
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, sourceorder, ordertype, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
            return TJson.toJson(mes);
        }
        #endregion
@@ -489,8 +493,9 @@
            string reportqty = obj["reportqty"].ToString(); //报工工数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            string remarks = obj["remarks"].ToString(); //备注
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -539,8 +544,9 @@
            string sqty = obj["sqty"].ToString(); //收料数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            string remarks = obj["remarks"].ToString(); //备注
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -549,13 +555,13 @@
        /// <summary>
        /// ä¸è‰¯å¤„理,提交
        /// </summary>
        /// <param name="username">处理人员编码</param>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "EditOrderNgStepSeave")]
        [HttpPost]
        public HttpResponseMessage EditOrderNgStepSeave(ReportDefectHandle json)
        public HttpResponseMessage EditOrderNgStepSeave(string username, ReportDefectHandle json)
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.EditOrderNgStepSeave(json, username);
            return TJson.toJson(mes);
        }
@@ -623,10 +629,11 @@
            string checktypecode = obj["checktypecode"].ToString(); //检验类型编码
            string checkresult = obj["checkresult"].ToString(); //检验结果
            string checkdescr = obj["checkdescr"].ToString(); //检验描述
            string checkqty = obj["checkqty"].ToString(); //检验数量
            string data = obj["data"].ToString();
            List<StepCheck> json = Newtonsoft.Json.JsonConvert.DeserializeObject<List<StepCheck>>(data);
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, username,json);
            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username,json);
            return TJson.toJson(mes);
        }
        #endregion
VueWebApi/Controllers/QualityManagementController.cs
@@ -227,5 +227,74 @@
        }
        #endregion
        #region[工序检验记录列表查询]
        /// <summary>
        /// å·¥åºæ£€éªŒè®°å½•列表查询
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partapec">产品名称</param>
        /// <param name="stepname">产品名称</param>
        /// <param name="standname">产品名称</param>
        /// <param name="checktype">检验类型编码</param>
        /// <param name="checkresult">检验结果</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "StepCheckTableSearch")]
        [HttpGet]
        public HttpResponseMessage StepCheckTableSearch(string wocode = null, string partcode = null, string partname = null, string partapec = null, string stepname = null,string standname=null, string checktype = null, string checkresult = 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.StepCheckTableSearch(wocode, partcode, partname,partapec,stepname,standname,checktype,checkresult, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[工序检验记录列表明细查询]
        /// <summary>
        /// å·¥åºæ£€éªŒè®°å½•列表查询
        /// </summary>
        /// <param name="id">主表id</param>
        /// <returns></returns>
        [Route(template: "StepCheckTableSubSearch")]
        [HttpGet]
        public HttpResponseMessage StepCheckTableSubSearch(string id)
        {
            mes = QualityManagementBLL.StepCheckTableSubSearch(id);
            return TJson.toJson(mes);
        }
        #endregion
        #region[工序检验记录导出]
        /// <summary>
        /// å·¥åºæ£€éªŒè®°å½•导出
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partapec">产品名称</param>
        /// <param name="stepname">产品名称</param>
        /// <param name="standname">产品名称</param>
        /// <param name="checktype">检验类型编码</param>
        /// <param name="checkresult">检验结果</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "StepCheckTableOutExcel")]
        [HttpGet]
        public HttpResponseMessage StepCheckTableOutExcel(string wocode = null, string partcode = null, string partname = null, string partapec = null, string stepname = null, string standname = null, string checktype = null, string checkresult = null,string prop = null, string order = null)
        {
            mes = QualityManagementBLL.StepCheckTableOutExcel(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/DLL/BLL/AppDeviceManageBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using VueWebApi.DLL.DAL;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.DLL.BLL
{
    public class AppDeviceManageBLL
    {
        #region[日常点检,扫描工位/设备二维码]
        public static ToMessage ScanDeviceQrCodeData(string eqpcode)
        {
            return AppDeviceManageDAL.ScanDeviceQrCodeData(eqpcode);
        }
        #endregion
        #region[日常点检,选择扫码设备列表带出点检项]
        public static ToMessage SelectScanDeviceQrCodeItem(string eqpcode)
        {
            return AppDeviceManageDAL.SelectScanDeviceQrCodeItem(eqpcode);
        }
        #endregion
        #region[日常点检、提交保存]
        public static ToMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
        {
            return AppDeviceManageDAL.AppDeviceCheckSave(username,json);
        }
        #endregion
    }
}
VueWebApi/DLL/BLL/ProductionManagementBLL.cs
@@ -34,9 +34,9 @@
        #region[MES工单查询]
        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            return ProductionManagementDAL.ErpOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            return ProductionManagementDAL.MesOrderSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
        }
        #endregion
@@ -62,9 +62,9 @@
        #endregion
        #region[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        {
            return ProductionManagementDAL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
            return ProductionManagementDAL.AddUpdateMesOrder(mesorderstus,mesordercode, sourceorder,ordertype,partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
        }
        #endregion
@@ -178,9 +178,9 @@
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty,string startqty, string reportqty,string ngqty, string badcode, string username)
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty,string startqty, string reportqty,string ngqty, string badcode,string remarks, string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
            return ProductionManagementDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
        }
        #endregion
@@ -192,9 +192,9 @@
        #endregion
        #region[生产开报工, æ”¶æ–™æäº¤]
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode,string remarks, string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
            return ProductionManagementDAL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
        }
        #endregion
@@ -227,9 +227,9 @@
        #endregion
        #region[生产开报工,工序检验提交保存]
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr, string username, List<StepCheck> json)
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr,string checkqty, string username, List<StepCheck> json)
        {
            return ProductionManagementDAL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, username, json);
            return ProductionManagementDAL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username, json);
        }
        #endregion
    }
VueWebApi/DLL/BLL/QualityManagementBLL.cs
@@ -91,5 +91,28 @@
            return QualityManagementDAL.DeleteStepCheckItem(checkitemcode);
        }
        #endregion
        #region[工序检验记录列表查询]
        public static ToMessage StepCheckTableSearch(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, int startNum, int endNum, string prop, string order)
        {
            return QualityManagementDAL.StepCheckTableSearch(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, startNum, endNum, prop, order);
        }
        #endregion
        #region[工序检验记录列表明细查询]
        public static ToMessage StepCheckTableSubSearch(string id)
        {
            return QualityManagementDAL.StepCheckTableSubSearch(id);
        }
        #endregion
        #region[工序检验记录导出]
        public static ToMessage StepCheckTableOutExcel(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, string prop, string order)
        {
            return QualityManagementDAL.StepCheckTableOutExcel(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, prop, order);
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/AppDeviceManageDAL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,192 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.DLL.DAL
{
    public class AppDeviceManageDAL
    {
        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 ScanDeviceQrCodeData(string eqpcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取对应设备及所属车间
                sql = @"select A.code,A.name,T.org_code as wksp_code,T.org_name as wksp_name,E.eqpchkmain_code
                        from TEqpInfo A
                        left join TOrganization T on A.wksp_code=T.org_code
                        left join TEqpchk_Eqp E on A.code=E.eqp_code
                        where A.code=@eqpcode and A.enable='Y' and T.description='W'";
                dynamicParams.Add("@eqpcode", eqpcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "当前设备异常!";
                    mes.data = data;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[日常点检,选择扫码设备列表带出点检项]
        public static ToMessage SelectScanDeviceQrCodeItem(string eqpcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取对应设备关联的点检项目
                sql = @"select S.seq,S.code,S.name,chkdesc,isscan,cycle
                        from TEqpchk_Eqp A
                        inner join TEqpchk_Main B on A.eqpchkmain_code=B.code
                        inner join TEqpchk_Deta S on B.code=S.eqpchk_main_code
                        where A.eqp_code=@eqpcode
                        order by S.seq asc";
                dynamicParams.Add("@eqpcode", eqpcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "当前设备未设置点检标准绑定点检项目!";
                    mes.data = data;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[日常点检、提交保存]
        public static ToMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
        {
            var sql = "";
            string djwo = "";
            List<object> list = new List<object>();
            try
            {
                list.Clear();
                mes = SeachEncode.EncodingSeach("1036");  //生成单号
                if (mes.code == "300")
                {
                    return mes;
                }
                else
                {
                    djwo = mes.data.GetType().GetProperty("Encode").GetValue(mes.data, null).ToString(); //获取单号
                }
                if (json == null || json.children.Count <= 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "点检项信息不能为空!";
                    mes.data = null;
                    return mes;
                }
                //写入点检记录主表
                sql = @"insert into TEqpchk_Proc_Main(djwo,eqp_code,eqpchkmain_code,chk_user,chk_date,chk_result)
                        values(@djwo,@eqp_code,@eqpchkmain_code,@lm_user,@lm_date,@chk_result)";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        djwo = djwo,
                        eqp_code = json.code,
                        eqpchkmain_code=json.standcode,
                        lm_user = username,
                        lm_date = DateTime.Now.ToString(),
                        chk_result=json.result
                    }
                });
                //循环写入点检记录子表
                for (int i = 0; i < json.children.Count; i++)
                {
                    sql = @"insert into TEqpchk_Proc_Deta(seq,djwo,eqpchkdeta_code,chk_cyc,result,chk_value)
                            values(@seq,@djwo,@eqpchkdeta_code,@chk_cyc,@result,@chk_value)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            seq = json.children[i].seq,
                            djwo = djwo,
                            eqpchkdeta_code =json.children[i].itemcode,
                            chk_cyc = json.children[i].cycle,
                            result = json.children[i].result,
                            chk_value = json.children[i].value
                        }
                    }); ;
                }
                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
    }
}
VueWebApi/DLL/DAL/DeviceManagerDAL.cs
@@ -614,8 +614,15 @@
                    mes.data = null;
                    return mes;
                }
                //删除设备
                sql = @"update TEqpInfo set is_delete='1' where code=@devicecode";
                list.Add(new { str = sql, parm = new { devicecode = devicecode } });
                //删除设备关联点检标准表
                sql = @"delete TEqpchk_Eqp  where eqp_code=@devicecode";
                list.Add(new { str = sql, parm = new { devicecode = devicecode } });
                //删除设备绑定保养标准表
                sql = @"delete TEqpmai_Eqp  where eqp_code=@devicecode";
                list.Add(new { str = sql, parm = new { devicecode = devicecode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
@@ -1156,7 +1163,7 @@
                if (opertype == "Add")
                {
                    //新增设备点检标准主表
                    sql = @"insert into TEqpchk_Main(code,name,description,iscontr,lm_user,lm_date) values(@code,@name,@descr,@lm_user,@lm_date)";
                    sql = @"insert into TEqpchk_Main(code,name,description,iscontr,lm_user,lm_date) values(@code,@name,@descr,@iscontr,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { code = json.code, name = json.name, descr = json.description, iscontr = json.enable, lm_user = username, lm_date = DateTime.Now.ToString() } });
                    for (int i = 0; i < json.Data.Rows.Count; i++)
                    {
@@ -1313,7 +1320,7 @@
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<StepEqp> list = new List<StepEqp>();
            List<StandEqp> list = new List<StandEqp>();
            try
            {
                //获取工作站集合(车间,包含已绑定工作站标识)
@@ -1328,26 +1335,41 @@
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    StepEqp rout = new StepEqp();
                    StandEqp rout = new StandEqp();
                    rout.code = data.Rows[i]["WKSP_CODE"].ToString();
                    rout.name = data.Rows[i]["WKSP_NAME"].ToString();
                    rout.type = data.Rows[i]["TYPE"].ToString();
                    rout.flag = data.Rows[i]["FLAG"].ToString();
                    rout.children = new List<StepEqpCn>();
                    rout.children = new List<StandEqpCn>();
                    //根据车间编码查找设备(包含已关联标识)
                    sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
                    //sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
                    //        from TEqpInfo A
                    //        left join(
                    //        select distinct A.eqp_code  from TEqpchk_Eqp A
                    //        inner join TEqpInfo B on A.eqp_code=B.code
                    //        where A.eqpchkmain_code=@checkstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                    //        ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                    sql = @"select *  from(
                            select AA.code,AA.name,(case when BB.eqpchkmain_code is null then 'N' else 'Y' end) flag,(case when AA.eqpchkmain_code  is null then 'N' else 'Y' end) flage1
                            from(
                            select A.code,A.name,B.eqpchkmain_code
                            from TEqpInfo A
                            left join TEqpchk_Eqp B on A.code=B.eqp_code
                            where A.wksp_code=@wkspcode and A.is_delete<>'1'
                            ) as AA
                            left join(
                            select distinct A.eqp_code  from TEqpchk_Eqp A
                            inner join TEqpInfo B on A.eqp_code=B.code
                            where A.eqpchkmain_code=@checkstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                            ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                             select A.code,A.name,B.eqpchkmain_code
                             from TEqpInfo A
                             inner join TEqpchk_Eqp B on A.code=B.eqp_code
                             where A.wksp_code=@wkspcode and B.eqpchkmain_code=@checkstand_code and A.is_delete<>'1'
                            ) as BB on AA.code=BB.code
                            ) as CC where case when flag ='N' and flage1 ='Y' then 0 else 1 end=1";
                    dynamicParams.Add("@checkstand_code", checkstand_code);
                    dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    for (int j = 0; j < data0.Rows.Count; j++)
                    {
                        StepEqpCn cn = new StepEqpCn();
                        StandEqpCn cn = new StandEqpCn();
                        cn.code = data0.Rows[j]["CODE"].ToString();//设备编码
                        cn.name = data0.Rows[j]["NAME"].ToString();//设备名称
                        cn.type = data0.Rows[j]["TYPE"].ToString();//工作站类型(E:设备 W:外协供方)
@@ -1734,7 +1756,7 @@
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<StepEqp> list = new List<StepEqp>();
            List<StandEqp> list = new List<StandEqp>();
            try
            {
                //获取工作站集合(车间,包含已绑定工作站标识)
@@ -1745,30 +1767,46 @@
                        inner join TEqpInfo B on A.eqp_code=B.code 
                        where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                        ) B on T.org_code=B.wksp_code where T.description='W' and is_delete<>'1'";
                dynamicParams.Add("@repairstand_code", repairstand_code);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    StepEqp rout = new StepEqp();
                    StandEqp rout = new StandEqp();
                    rout.code = data.Rows[i]["WKSP_CODE"].ToString();
                    rout.name = data.Rows[i]["WKSP_NAME"].ToString();
                    rout.type = data.Rows[i]["TYPE"].ToString();
                    rout.flag = data.Rows[i]["FLAG"].ToString();
                    rout.children = new List<StepEqpCn>();
                    rout.children = new List<StandEqpCn>();
                    //根据车间编码查找设备(包含已关联标识)
                    sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
                    //sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
                    //        from TEqpInfo A
                    //        left join(
                    //        select distinct A.eqp_code  from TEqpmai_Eqp A
                    //        inner join TEqpInfo B on A.eqp_code=B.code
                    //        where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                    //        ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                    sql = @"select *  from(
                            select AA.code,AA.name,(case when BB.eapmai_code is null then 'N' else 'Y' end) flag,(case when AA.eapmai_code  is null then 'N' else 'Y' end) flage1
                            from(
                            select A.code,A.name,B.eapmai_code
                            from TEqpInfo A
                            left join TEqpmai_Eqp B on A.code=B.eqp_code
                            where A.wksp_code=@wkspcode and A.is_delete<>'1'
                            ) as AA
                            left join(
                            select distinct A.eqp_code  from TEqpmai_Eqp A
                            inner join TEqpInfo B on A.eqp_code=B.code
                            where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                            ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                             select A.code,A.name,B.eapmai_code
                             from TEqpInfo A
                             inner join TEqpmai_Eqp B on A.code=B.eqp_code
                             where A.wksp_code=@wkspcode and B.eapmai_code=@repairstand_code and A.is_delete<>'1'
                            ) as BB on AA.code=BB.code
                            ) as CC where case when flag ='N' and flage1 ='Y' then 0 else 1 end=1";
                    dynamicParams.Add("@repairstand_code", repairstand_code);
                    dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    for (int j = 0; j < data0.Rows.Count; j++)
                    {
                        StepEqpCn cn = new StepEqpCn();
                        StandEqpCn cn = new StandEqpCn();
                        cn.code = data0.Rows[j]["CODE"].ToString();//设备编码
                        cn.name = data0.Rows[j]["NAME"].ToString();//设备名称
                        cn.type = data0.Rows[j]["TYPE"].ToString();//工作站类型(E:设备 W:外协供方)
VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -138,13 +138,14 @@
                    }
                    if (i == Convert.ToInt32(ordernum))  //最后一单时
                    {
                        sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = wo,
                                wotype="PO",
                                status = "NEW",
                                wkshp_code = wkshopcode,
                                plan_qty = cdqty + (decimal.Parse(markqty) - sumqty),  //末单下单数量=切分数量+(下单数量-累计切分下单数量)
@@ -160,13 +161,14 @@
                    else
                    {
                        sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = wo,
                                wotype = "PO",
                                status = "NEW",
                                wkshp_code = wkshopcode,
                                plan_qty = cdqty,
@@ -296,7 +298,7 @@
        #region[MES工单查询]
        public static ToMessage ErpOrderSearch(string mesorderstus, string mesordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
@@ -311,6 +313,16 @@
                {
                    search += "and A.wo_code like '%'+@mesordercode+'%' ";
                    dynamicParams.Add("@mesordercode", mesordercode);
                }
                if (sourceorder != "" && sourceorder != null)
                {
                    search += "and A.m_po like '%'+@sourceorder+'%' ";
                    dynamicParams.Add("@sourceorder", sourceorder);
                }
                if (ordertype != "" && ordertype != null)
                {
                    search += "and A.wotype like '%'+@ordertype+'%' ";
                    dynamicParams.Add("@ordertype", ordertype);
                }
                if (partcode != "" && partcode != null)
                {
@@ -344,7 +356,7 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.status,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                var sql = @"select A.status,A.wotype,A.m_po,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.m_po,U.username as lm_user,A.lm_date
                            from TK_Wrk_Man A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
@@ -463,7 +475,7 @@
        #endregion
        #region[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        public static ToMessage AddUpdateMesOrder(string mesorderstus,string sourceorder,string ordertype, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
@@ -473,14 +485,16 @@
                if (opertype == "Add")
                {
                    //写入工单表
                    sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
                                values(@mesordercode,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                    sql = @"insert into TK_Wrk_Man(wo_code,wotype,m_po,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
                                values(@mesordercode,@wotype,@m_po,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            mesordercode = mesordercode,
                            wotype = ordertype,
                            m_po = sourceorder,
                            mesorderstus = "ALLO", //派发
                            wkshopcode = wkshopcode,
                            mesqty = mesqty,
@@ -491,7 +505,6 @@
                            username = username,
                            CreateDate = DateTime.Now.ToString(),
                            materiel_code = partcode,
                            m_po = "",
                            orderlev = orderlev
                        }
                    });
@@ -1538,7 +1551,7 @@
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string username)
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode,string remarks, string username)
        {
            var sql = "";
            string[] arra = new string[] { };
@@ -1579,16 +1592,20 @@
                }
                if (data.Rows.Count > 0)
                {
                    //修改报工记录
                    sql = @"update TK_Wrk_Record set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty,
                                lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode and style='B'";
                    list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
                    //获取主表最大ID
                    sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_Record')+1,1) as id";
                    var dt = DapperHelper.selecttable(sql);
                    //写入开报工记录表
                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    //写入子表
                    for (int i = 0; i < arra.Length; i++)
                    {
                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
                        list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
                        list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    }
                    if (badcode != "" && ngqty != "0")
@@ -1596,12 +1613,35 @@
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i],remarks=remarks,style = "B", lm_user = username, lm_date = date } });
                        }
                    }
                    ////修改报工记录
                    //sql = @"update TK_Wrk_Record set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty,
                    //            lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode and style='B'";
                    //list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
                    ////写入子表
                    //for (int i = 0; i < arra.Length; i++)
                    //{
                    //    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date)
                    //            values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
                    //    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    //}
                    //if (badcode != "" && ngqty != "0")
                    //{
                    //    //写入缺陷记录表
                    //    for (int i = 0; i < arra1.Length; i++)
                    //    {
                    //        sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                    //            values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                    //        list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
                    //    }
                    //}
                }
                else
                {
@@ -1626,9 +1666,9 @@
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "B", lm_user = username, lm_date = date } });
                        }
                    }
@@ -1748,7 +1788,7 @@
        #endregion
        #region[生产开报工, æ”¶æ–™æäº¤]
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode,string remarks, string username)
        {
            var sql = "";
            string[] arra1 = new string[] { };
@@ -1788,26 +1828,52 @@
                }
                if (data.Rows.Count > 0)
                {
                    //修改外协记录主表
                    sql = @"update TK_Wrk_OutRecord set sqty=sqty+@sqty,ng_qty=ng_qty+@ngqty,lm_user=@username,lm_date=@CreateDate
                             where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='S'";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, sqty = decimal.Parse(sqty), ngqty = decimal.Parse(ngqty), username = username, CreateDate = date } });
                    //获取主表最大ID
                    sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_OutRecord')+1,1) as id";
                    var dt = DapperHelper.selecttable(sql);
                    //写入外协记录主表
                    sql = @"insert into  TK_Wrk_OutRecord(wo_code,step_seq,step_code,wx_code,materiel_code,style,sqty,ng_qty,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@wx_code,@partcode,@style,@sqty,@ngqty,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, wx_code = wxcode, partcode = partcode, style = 'S', sqty = sqty, ngqty = ngqty, lm_user = username, lm_date = date } });
                    //写入外协记录子表
                    sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,style,lm_user,lm_date) 
                                values(@m_id,@wx_code,@in_person,@in_time,@sqty,@ngqty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, in_person = inuser, in_time = date, sqty = sqty, ngqty = ngqty, style = 'S', lm_user = username, lm_date = date } });
                                values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
                    if (badcode != "" && ngqty != "0")
                    {
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
                        }
                    }
                    ////修改外协记录主表
                    //sql = @"update TK_Wrk_OutRecord set sqty=sqty+@sqty,ng_qty=ng_qty+@ngqty,lm_user=@username,lm_date=@CreateDate
                    //         where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='S'";
                    //list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, sqty = decimal.Parse(sqty), ngqty = decimal.Parse(ngqty), username = username, CreateDate = date } });
                    ////写入外协记录子表
                    //sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,style,lm_user,lm_date)
                    //            values(@m_id,@wx_code,@in_person,@in_time,@sqty,@ngqty,@style,@lm_user,@lm_date)";
                    //list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, in_person = inuser, in_time = date, sqty = sqty, ngqty = ngqty, style = 'S', lm_user = username, lm_date = date } });
                    //if (badcode != "" && ngqty != "0")
                    //{
                    //    //写入缺陷记录表
                    //    for (int i = 0; i < arra1.Length; i++)
                    //    {
                    //        sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                    //            values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                    //        list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
                    //    }
                    //}
                }
                else
                {
@@ -1829,9 +1895,9 @@
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
                        }
                    }
@@ -2166,23 +2232,37 @@
        #endregion
        #region[生产开报工,工序检验提交保存]
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr, string username, List<StepCheck> json)
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr,string checkqty, string username, List<StepCheck> json)
        {
            var sql = "";
            string[] arra = new string[] { };
            string[] arra1 = new string[] { };
            List<object> list = new List<object>();
            string checktypename = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                list.Clear();
                switch (checktypecode)
                {
                    case "FirstCheck":
                        checktypename = "首检";
                        break;
                    case "PatroCheck":
                        checktypename = "巡检";
                        break;
                    case "EndCheck":
                        checktypename = "完工检验";
                        break;
                    default:
                        break;
                }
                //写入工序检验记录主表
                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_result,check_descr,lm_user,lm_date)
                                values(@mesordercode,@partcode,@stepcode,@checkstanedcode,@checkusercode,@checktypecode,@checkresult,@checkdescr,@lm_user,@lm_date)";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checkresult = checkresult, checkdescr = checkdescr, lm_user = username, lm_date = date } });
                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,check_result,check_descr,check_qty,lm_user,lm_date)
                                values(@mesordercode,@partcode,@stepcode,@checkstanedcode,@checkusercode,@checktypecode,@checktypename,@checkresult,@checkdescr,@check_qty,@lm_user,@lm_date)";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checktypename = checktypename, checkresult = checkresult, checkdescr = checkdescr, check_qty=checkqty, lm_user = username, lm_date = date } });
                //写入工序检验记录子表
                //获取主表最大ID
                sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+1,1) as id";
VueWebApi/DLL/DAL/QualityManagementDAL.cs
@@ -637,5 +637,234 @@
        }
        #endregion
        #region[工序检验记录列表查询]
        public static ToMessage StepCheckTableSearch(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.partcode like '%'+@stanedname+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and B.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partapec != "" && partapec != null)
                {
                    search += "and B.partspec like '%'+@partapec+'%' ";
                    dynamicParams.Add("@partapec", partapec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and S.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (standname != "" && standname != null)
                {
                    search += "and T.name like '%'+@standname+'%' ";
                    dynamicParams.Add("@standname", standname);
                }
                if (checktype != "" && checktype != null)
                {
                    search += "and A.check_type=@checktype ";
                    dynamicParams.Add("@checktype", checktype);
                }
                if (checkresult != "" && checkresult != null)
                {
                    search += "and A.check_result=@checkresult ";
                    dynamicParams.Add("@checkresult", checkresult);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.wo_code,A.partcode,B.partname,B.partspec,A.step_code,S.stepname,A.checkstaned_code,T.name as checkstaned_name,A.check_user,
                            A.check_type,A.check_result,A.check_descr,A.check_qty,U.username as lm_user,A.lm_date
                            from TStepCheckRecord A
                            left join TMateriel_Info B on A.partcode=B.partcode
                            left join TStep S on A.step_code=S.stepcode
                            left join TStepCheckStandard T on A.checkstaned_code=T.code
                            left join TUser U on A.lm_user=U.usercode
                            where " + 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 StepCheckTableSubSearch(string id)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select A.checkitem_seq,A.checkitem_code,A.checkitem_name,A.checkitem_descr,A.check_result,U.username as lm_user,A.lm_date
                        from TStepCheckRecordSub A
                        left join TUser U on A.lm_user=U.usercode
                        where A.m_id=@id";
                dynamicParams.Add("@id", id);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验记录导出]
        public static ToMessage StepCheckTableOutExcel(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.partcode like '%'+@stanedname+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and B.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partapec != "" && partapec != null)
                {
                    search += "and B.partspec like '%'+@partapec+'%' ";
                    dynamicParams.Add("@partapec", partapec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and S.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (standname != "" && standname != null)
                {
                    search += "and T.name like '%'+@standname+'%' ";
                    dynamicParams.Add("@standname", standname);
                }
                if (checktype != "" && checktype != null)
                {
                    search += "and A.check_type=@checktype ";
                    dynamicParams.Add("@checktype", checktype);
                }
                if (checkresult != "" && checkresult != null)
                {
                    search += "and A.check_result=@checkresult ";
                    dynamicParams.Add("@checkresult", checkresult);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.wo_code ORDER BY B.checkitem_code) = 1 THEN A.wo_code
                            ELSE ''END AS '工单号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partcode
                            ELSE ''END AS '产品编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partname
                            ELSE ''END AS '产品名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partspec
                            ELSE ''END AS '规格型号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.step_code ORDER BY B.checkitem_code) = 1 THEN S.stepname
                            ELSE ''END AS '工序名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.checkstaned_code ORDER BY B.checkitem_code) = 1 THEN A.checkstaned_code
                            ELSE ''END AS '标准编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.checkstaned_code ORDER BY B.checkitem_code) = 1 THEN T.name
                            ELSE ''END AS '标准名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.check_user ORDER BY B.checkitem_code) = 1 THEN U.username
                            ELSE ''END AS '检验人员',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.check_typename ORDER BY B.checkitem_code) = 1 THEN A.check_typename
                            ELSE ''END AS '检验类型',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.check_result ORDER BY B.checkitem_code) = 1 THEN A.check_result
                            ELSE ''END AS '检验结果',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.check_descr ORDER BY B.checkitem_code) = 1 THEN A.check_descr
                            ELSE ''END AS '检验描述',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.check_qty ORDER BY B.checkitem_code) = 1 THEN A.check_qty
                            END AS '检验数量',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.lm_date ORDER BY B.checkitem_code) = 1 THEN A.lm_date
                            END AS '检验时间',
                            B.checkitem_seq as '检验项目序号',B.checkitem_code '检验项目编码',B.checkitem_name '检验项目名称',B.checkitem_descr '检验项目描述',B.check_result '检验项目结果'
                            from TStepCheckRecord A
                            left join TStepCheckRecordSub B on A.id=B.m_id
                            left join TMateriel_Info M on A.partcode=M.partcode
                            left join TStep S on A.step_code=S.stepcode
                            left join TStepCheckStandard T on A.checkstaned_code=T.code
                            left join TUser U on A.check_user=U.usercode
                            where " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
                data.TableName ="Table"; //设置DataTable的名称
                string msg = DownLoad.DataTableToExcel(data, "工序检验记录");
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = msg;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebApi/File/newxls/20220826120105760.xlsx
Binary files differ
VueWebApi/File/newxls/¹¤Ðò¼ìÑé¼Ç¼20220826111001.xls
Binary files differ
VueWebApi/File/newxls/¹¤Ðò¼ìÑé¼Ç¼20220826112554.xls
VueWebApi/File/newxls/¹¤Ðò¼ìÑé¼Ç¼20220826122922020.xlsx
Binary files differ
VueWebApi/File/newxls/¹¤Ðò¼ìÑé¼Ç¼20220826123323771.xlsx
Binary files differ
VueWebApi/File/newxls/¹¤Ðò¼ìÑé¼Ç¼20220826152043175.xlsx
Binary files differ
VueWebApi/Logs/2022-08-25.TXT
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
 ã€æ—¶é—´ã€‘:2022-08-25 15:41:35,441
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 8
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:“)”附近有语法错误。
关键字 'AS' é™„近有语法错误。
引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-08-25 15:43:03,620
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 8
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:“)”附近有语法错误。
关键字 'AS' é™„近有语法错误。
引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-08-25 15:45:03,124
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 39
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:“)”附近有语法错误。
关键字 'AS' é™„近有语法错误。
引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-08-25 19:57:55,721
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 9
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:INSERT è¯­å¥ä¸­åˆ—的数目大于 VALUES å­å¥ä¸­æŒ‡å®šçš„值的数目。VALUES å­å¥ä¸­å€¼çš„æ•°ç›®å¿…须与 INSERT è¯­å¥ä¸­æŒ‡å®šçš„列的数目匹配。
引发异常路径:/api/ProductionManagement/SavaMesOrderStepReport
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   åœ¨ Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
   åœ¨ Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.DoTransaction(List`1 sqlList) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 425
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
VueWebApi/Logs/2022-08-26.TXT
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
 ã€æ—¶é—´ã€‘:2022-08-26 15:11:23,377
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 12
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:列名 'checktypename' æ— æ•ˆã€‚
引发异常路径:/api/QualityManagement/StepCheckTableOutExcel
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderImpl(IDbConnection cnn, CommandDefinition& command, CommandBehavior commandBehavior, IDbCommand& cmd)
   åœ¨ Dapper.SqlMapper.ExecuteReader(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.selectdata(String sql, Object parm) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 195
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-08-26 15:12:52,425
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 12
 ã€æ–‡ä»¶åœ°å€ã€‘: ç¬¬0行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:列名 'checktypename' æ— æ•ˆã€‚
引发异常路径:/api/QualityManagement/StepCheckTableOutExcel
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderImpl(IDbConnection cnn, CommandDefinition& command, CommandBehavior commandBehavior, IDbCommand& cmd)
   åœ¨ Dapper.SqlMapper.ExecuteReader(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.selectdata(String sql, Object parm)
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
VueWebApi/Models/AppDevicecCheck.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Models
{
    public class AppDevicecCheck
    {
        public string code { get; set; }
        public string name { get; set; }
        public string standcode { get; set; }
        public string result { get; set; }
        public List<AppDevicecCheckCn> children { get; set; }//子节点
    }
    public class AppDevicecCheckCn
    {
        public string seq { get; set; }
        public string itemcode { get; set; }
        public string cycle { get; set; }
        public string value { get; set; }
        public string result { get; set; }
    }
}
VueWebApi/Models/StandEqp.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Models
{
    public class StandEqp
    {
        public string code { get; set; }
        public string name { get; set; }
        public string type { get; set; }
        public string flag { get; set; }
        public string flag1 { get; set; }
        public List<StandEqpCn> children { get; set; }//子节点
    }
    public class StandEqpCn
    {
        public string code { get; set; }
        public string name { get; set; }
        public string type { get; set; }
        public string flag { get; set; }
        public string flag1 { get; set; }
    }
}
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PublishTargetUrl>D:\网站发布\XKDMesApi</_PublishTargetUrl>
    <History>True|2022-08-23T14:50:41.0238571Z;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
    <History>True|2022-08-26T08:00:22.2697361Z;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
  </PropertyGroup>
  <ItemGroup>
    <File Include="Areas/HelpPage/HelpPage.css">
@@ -696,16 +696,16 @@
      <publishTime>12/24/2021 15:38:29</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll">
      <publishTime>08/23/2022 22:50:32</publishTime>
      <publishTime>08/26/2022 16:00:15</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll.config">
      <publishTime>06/15/2022 15:31:43</publishTime>
    </File>
    <File Include="bin/VueWebApi.pdb">
      <publishTime>08/23/2022 22:50:32</publishTime>
      <publishTime>08/26/2022 16:00:15</publishTime>
    </File>
    <File Include="bin/VueWebApi.xml">
      <publishTime>08/23/2022 22:50:32</publishTime>
      <publishTime>08/26/2022 16:00:15</publishTime>
    </File>
    <File Include="bin/WebActivatorEx.dll">
      <publishTime>02/08/2013 16:42:28</publishTime>
@@ -1449,7 +1449,7 @@
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>08/23/2022 22:50:40</publishTime>
      <publishTime>08/26/2022 16:00:21</publishTime>
    </File>
  </ItemGroup>
</Project>
VueWebApi/Tools/DALSkillCondition.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
namespace VueWebApi.Tools
{
    public class DALSkillCondition
    {
        /// <summary>
        /// ä¸‹è½½excel
        /// </summary>
        /// <param name="path"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        #region
        public static bool ResultExcel(string path, DataTable dt)
        {
            try
            {
                NPOIHelper.ExportEasy(dt, path);
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
    }
}
VueWebApi/Tools/DownLoad.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,573 @@
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
namespace VueWebApi.Tools
{
    public static class DownLoad
    {
        ///<summary>
        ///    ä¸‹è½½
        ///</summary>
        ///<typeparam name="T"></typeparam>
        ///<param name="data"></param>
        ///<param name="map">所需要的列</param>
        ///<param name="filenName">文件名字</param>
        ///<returns></returns>
        public static string Download<T>(this IList<T> data, Dictionary<string, string> map, string filenName)
        {
            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
            var path = filepath + filename;
            if (!Directory.Exists(filepath))
            {
                Directory.CreateDirectory(filepath);
            }
            var properties = TypeDescriptor.GetProperties(typeof(T));
            var dt = new DataTable();
            var list = map.Values;
            //显示表结构
            foreach (var row in list)
            {
                dt.Columns.Add(row);
            }
            //取值
            foreach (var item in data)
            {
                var i = 0;
                var values = new object[dt.Columns.Count];
                foreach (var content in map)
                {
                    var property = properties[content.Key];
                    if (property != null)
                    {
                        var value = property.GetValue(item);
                        if (property.PropertyType == typeof(decimal))
                        {
                            if ((decimal)value == 0)
                            {
                                value = 0;
                            }
                            else
                            {
                                value = ((decimal)value).ToString("0.00");
                            }
                        }
                        values[i] = value;
                        if (Convert.ToString(content).Contains("率"))
                        {
                            values[i] = value + "%";
                        }
                    }
                    else
                    {
                        values[i] = DBNull.Value;
                    }
                    i++;
                }
                dt.Rows.Add(values);
            }
            var b = DALSkillCondition.ResultExcel(path, dt);
            if (b)
            {
                var url = fileip + "/apis/File/newxls/" + filename;
                return url;
            }
            var messge = filename + "下载失败";
            return messge;
        }
        /// <summary>
        /// Datas the set to excel.
        /// </summary>
        /// <param name="ds">The ds.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static string DataSetToExcel(DataSet ds, string filenName)
        {
            try
            {
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
                string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
                string filePath = HttpContext.Current.Server.MapPath("/File/newxls/");
                Directory.CreateDirectory(filePath);
                string Path = filePath + fileName;
                FileStream fs = null;
                XSSFWorkbook workbook = new XSSFWorkbook();
                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(ds.Tables[i].TableName);
                    XSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();
                    XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();
                    dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
                    int rowIndex = 0;
                    #region æ–°å»ºè¡¨ï¼Œå¡«å……表头,填充列头,样式
                    if (rowIndex == 0)
                    {
                        #region åˆ—头及样式
                        XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);
                        XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();
                        headStyle.Alignment = HorizontalAlignment.Center;
                        XSSFFont font = (XSSFFont)workbook.CreateFont();
                        font.FontName = "微软雅黑";
                        font.FontHeightInPoints = 12; //字体大小
                        font.Boldweight = 700;//字体加粗
                        headStyle.SetFont(font);
                        //自定义表头
                        for (var j = 0; j < ds.Tables[i].Columns.Count; j++)
                        {
                            sheet.SetColumnWidth(j, 30 * 256);//
                            //sheet.AutoSizeColumn(j); //自适应宽度
                            headerRow.CreateCell(j).SetCellValue(ds.Tables[i].Columns[j].ColumnName);
                            headerRow.GetCell(j).CellStyle = headStyle;
                        }
                        #endregion
                        rowIndex = 1;
                    }
                    #endregion
                    ICellStyle cellstyle = workbook.CreateCellStyle();
                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
                    cellstyle.Alignment = HorizontalAlignment.Center;
                    foreach (DataRow row in ds.Tables[i].Rows)
                    {
                        XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
                        #region å¡«å……内容
                        foreach (DataColumn column in ds.Tables[i].Columns)
                        {
                            XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal);
                            string type = row[column].GetType().FullName.ToString();
                            newCell.SetCellValue(GetValue(row[column].ToString(), type));
                            newCell.CellStyle = cellstyle;
                        }
                        #endregion
                        rowIndex++;
                    }
                }
                using (fs = File.OpenWrite(Path))
                {
                    workbook.Write(fs);
                    var url = fileip + "/File/newxls/" + fileName;
                    return url;
                }
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
        /// <summary>
        /// Datas the set to excel.
        /// </summary>
        /// <param name="ds">The ds.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static string DataTableToExcel(DataTable ds, string filenName)
        {
            try
            {
                string fileName = filenName + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
                string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
                string filePath = HttpContext.Current.Server.MapPath("/File/newxls/");
                Directory.CreateDirectory(filePath);
                string Path = filePath + fileName;
                FileStream fs = null;
                XSSFWorkbook workbook = new XSSFWorkbook();
                XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(ds.TableName);
                XSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();
                XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();
                dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
                int rowIndex = 0;
                #region æ–°å»ºè¡¨ï¼Œå¡«å……表头,填充列头,样式
                if (rowIndex == 0)
                {
                    #region åˆ—头及样式
                    XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);
                    XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();
                    headStyle.Alignment = HorizontalAlignment.Center;
                    XSSFFont font = (XSSFFont)workbook.CreateFont();
                    font.FontName = "微软雅黑";
                    font.FontHeightInPoints = 12; //字体大小
                    font.Boldweight = 700;//字体加粗
                    headStyle.SetFont(font);
                    //自定义表头
                    for (var j = 0; j < ds.Columns.Count; j++)
                    {
                        sheet.SetColumnWidth(j, 30 * 256);//
                                                          //sheet.AutoSizeColumn(j); //自适应宽度
                        headerRow.CreateCell(j).SetCellValue(ds.Columns[j].ColumnName);
                        headerRow.GetCell(j).CellStyle = headStyle;
                    }
                    #endregion
                    rowIndex = 1;
                }
                #endregion
                ICellStyle cellstyle = workbook.CreateCellStyle();
                cellstyle.VerticalAlignment = VerticalAlignment.Center;
                cellstyle.Alignment = HorizontalAlignment.Center;
                foreach (DataRow row in ds.Rows)
                {
                    XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
                    #region å¡«å……内容
                    foreach (DataColumn column in ds.Columns)
                    {
                        XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal);
                        string type = row[column].GetType().FullName.ToString();
                        newCell.SetCellValue(GetValue(row[column].ToString(), type));
                        newCell.CellStyle = cellstyle;
                    }
                    #endregion
                    rowIndex++;
                }
                using (fs = File.OpenWrite(Path))
                {
                    workbook.Write(fs);
                    var url = fileip + "/File/newxls/" + fileName;
                    return url;
                }
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
        /// <summary>
        /// Gets the value.
        /// </summary>
        /// <param name="cellValue">The cell value.</param>
        /// <param name="type">The type.</param>
        /// <returns>System.String.</returns>
        private static string GetValue(string cellValue, string type)
        {
            object value = string.Empty;
            switch (type)
            {
                case "System.String"://字符串类型
                    value = cellValue;
                    break;
                case "System.DateTime"://日期类型
                    System.DateTime dateV;
                    System.DateTime.TryParse(cellValue, out dateV);
                    value = dateV;
                    break;
                case "System.Boolean"://布尔型
                    bool boolV = false;
                    bool.TryParse(cellValue, out boolV);
                    value = boolV;
                    break;
                case "System.Int16"://整型
                case "System.Int32":
                case "System.Int64":
                case "System.Byte":
                    int intV = 0;
                    int.TryParse(cellValue, out intV);
                    value = intV;
                    break;
                case "System.Decimal"://浮点型
                case "System.Double":
                    double doubV = 0;
                    double.TryParse(cellValue, out doubV);
                    value = doubV;
                    break;
                case "System.DBNull"://空值处理
                    value = string.Empty;
                    break;
                default:
                    value = string.Empty;
                    break;
            }
            return value.ToString();
        }
        /// <summary>
        /// Datatable生成Excel表格并返回路径
        /// </summary>
        /// <param name="m_DataTable">Datatable</param>
        /// <param name="s_FileName">文件名</param>
        /// <returns></returns>
        public static string DataToExcel(System.Data.DataTable m_DataTable, string filenName)
        {
            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
            var path = filepath + filename;
            //string FileName = AppDomain.CurrentDomain.BaseDirectory + ("/Upload/Excel/") + filenName + ".xls";  //文件存放路径
            if (System.IO.File.Exists(path))                                //存在则删除
            {
                System.IO.File.Delete(path);
            }
            System.IO.FileStream objFileStream;
            System.IO.StreamWriter objStreamWriter;
            string strLine = "";
            objFileStream = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
            objStreamWriter = new System.IO.StreamWriter(objFileStream, Encoding.Unicode);
            for (int i = 0; i < m_DataTable.Columns.Count; i++)
            {
                strLine = strLine + m_DataTable.Columns[i].Caption.ToString() + Convert.ToChar(9);      //写列标题
            }
            objStreamWriter.WriteLine(strLine);
            strLine = "";
            for (int i = 0; i < m_DataTable.Rows.Count; i++)
            {
                for (int j = 0; j < m_DataTable.Columns.Count; j++)
                {
                    if (m_DataTable.Rows[i].ItemArray[j] == null)
                        strLine = strLine + " " + Convert.ToChar(9);                                    //写内容
                    else
                    {
                        string rowstr = "";
                        rowstr = m_DataTable.Rows[i].ItemArray[j].ToString();
                        if (rowstr.IndexOf("\r\n") > 0)
                            rowstr = rowstr.Replace("\r\n", " ");
                        if (rowstr.IndexOf("\t") > 0)
                            rowstr = rowstr.Replace("\t", " ");
                        strLine = strLine + rowstr + Convert.ToChar(9);
                    }
                }
                objStreamWriter.WriteLine(strLine);
                strLine = "";
            }
            objStreamWriter.Close();
            objFileStream.Close();
            var url = fileip + "/File/newxls/" + filename;
            return url;
        }
        /// <summary>
        /// å·¥èµ„报表Excel导出数据合并
        /// </summary>
        /// <param name="path"></param>
        /// <param name="table"></param>
        /// <param name="treeIndex"></param>
        public static void DataTree(DataTable table, string filenName, int treeIndex, out string pathstring)  //   /apis/File/newxls/工资产量报表20200507114638.xls
        {
            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
            var path = filepath + filename;
            using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                IWorkbook workBook = new HSSFWorkbook();
                //现在使用的仍然是生成Excel2003的Excel文件,由于03对行数(65535)和列数(255)有限制,所以当数据超出范围后难免出错
                //ArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') ...
                if (Path.GetExtension(path).Equals(".xlsx", System.StringComparison.OrdinalIgnoreCase))
                {
                    workBook = new XSSFWorkbook();
                }
                string sheetName = string.IsNullOrWhiteSpace(table.TableName) ? "Sheet1" : table.TableName;
                ISheet sheet = workBook.CreateSheet(sheetName);
                IRow row = null;
                int colNum = 8; //合并的列数
                //int colNum = table.Columns.Count;
                //if (treeIndex < table.Columns.Count || treeIndex > 0)
                //{
                //    colNum = treeIndex;
                //}
                ICellStyle cellCenterStyle = GetCenter(workBook);
                //IFont font = workBook.CreateFont(); //创建一个字体样式对象
                //font.FontName = "方正舒体"; //和excel里面的字体对应
                //font.IsItalic = true; //斜体
                //font.FontHeightInPoints = 16;//字体大小
                //font.Boldweight = short.MaxValue;//字体加粗
                //cellCenterStyle.SetFont(font); //将字体样式赋给样式对象
                int beginNum = 1;//排除列头,从1开始
                //处理表格列头
                row = sheet.CreateRow(beginNum - 1);
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    string strVal = table.Columns[i].ColumnName;
                    ICell cell = row.CreateCell(i);
                    cell.SetCellValue(strVal);
                    cell.CellStyle = cellCenterStyle;
                    row.Height = 450;
                    sheet.AutoSizeColumn(i);
                    List<int> lstColWidth = new List<int>();
                    //记录列长度
                    lstColWidth.Add(DataLength(strVal));
                    //设置列宽
                    int maxWidth = lstColWidth.Max() * 600;
                    sheet.SetColumnWidth(i, maxWidth);
                }
                //处理数据内容
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    row = sheet.CreateRow(beginNum + i);
                    row.Height = 350;
                    for (int j = 0; j < table.Columns.Count; j++)
                    {
                        string strVal = table.Rows[i][j].ToString();
                        ICell currCell = row.CreateCell(j);
                        currCell.SetCellValue(strVal);
                        currCell.CellStyle = cellCenterStyle;
                        sheet.SetColumnWidth(j, 256 * 15);
                    }
                }
                for (int i = 0; i < colNum; i++)  //数据条数
                {
                    List<int> lstColWidth = new List<int>();
                    string currVal = string.Empty;
                    string nextVal = string.Empty;
                    for (int j = beginNum; j <= sheet.LastRowNum; j++)
                    {
                        currVal = sheet.GetRow(j).Cells[i].StringCellValue;
                        int mk = j;
                        if (!string.IsNullOrWhiteSpace(currVal))//排除 ç©ºå€¼ï¼Œç©ºå€¼ä¸åšåˆå¹¶å¤„理
                        {
                            for (int k = j + 1; k <= sheet.LastRowNum; k++)
                            {
                                nextVal = sheet.GetRow(k).Cells[i].StringCellValue;
                                if (currVal != nextVal)
                                {
                                    //因为k ç´¯åŠ æ‰€ä»¥å¯¼è‡´å½“å‰å€¼ä¸Žä¸‹ä¸ªå€¼ ä¸ç›¸åŒï¼Œæ‰€ä»¥è®°å½• å½“前行数要 å‡åŽ»1
                                    mk = k - 1;
                                    break;
                                }
                                else if (k == sheet.LastRowNum) //边界值,处理最后一行,则提前Break å¹¶è®°å½•当前 k
                                {
                                    mk = k;
                                    break;
                                }
                            }
                        }
                        if (mk != j)//排除 ç©ºå€¼å¤–,下个值的行数不等于当前行数,则需要合并
                        {
                            sheet.AddMergedRegion(new CellRangeAddress(j, mk, i, i));
                            //sheet.GetRow(j).GetCell(i).SetCellValue("");
                        }
                        //else
                        //{
                        //    if (mk < sheet.LastRowNum)
                        //    {
                        //        if (sheet.GetRow(j).Cells[0].StringCellValue == sheet.GetRow(mk + 1).Cells[0].StringCellValue
                        //           && sheet.GetRow(j).Cells[1].StringCellValue == sheet.GetRow(mk + 1).Cells[1].StringCellValue
                        //           && sheet.GetRow(j).Cells[2].StringCellValue == sheet.GetRow(mk + 1).Cells[2].StringCellValue
                        //           && sheet.GetRow(j).Cells[3].StringCellValue == sheet.GetRow(mk + 1).Cells[3].StringCellValue
                        //            )
                        //        {
                        //            int mmk = mk + 1;
                        //            sheet.AddMergedRegion(new CellRangeAddress(j, mmk, i, i));
                        //        }
                        //    }
                        //}
                        //if (i == 0) //如果是第一列,则 åž‚直水平居中
                        {
                            sheet.GetRow(j).Cells[i].CellStyle = cellCenterStyle;
                        }
                        //跳到执行下一个不同数据的行
                        j = mk;
                        //记录列长度
                        lstColWidth.Add(DataLength(currVal));
                    }
                    //设置列宽
                    //int maxWidth = lstColWidth.Max() * 600;
                    //sheet.SetColumnWidth(i, maxWidth);
                }
                //固定列、行 æ»šåŠ¨æ—¶ä¸å˜
                //sheet.CreateFreezePane(3, 1, 3, 1);
                //写入数据流
                workBook.Write(fs);
                var url = fileip + "/apis/File/newxls/" + filename;
                pathstring = url;
            }
        }
        private static ICellStyle GetCenter(IWorkbook workBook, short fontSize = 10)
        {
            ICellStyle cellStyle = workBook.CreateCellStyle();
            IFont font = workBook.CreateFont();
            font.FontName = "微软雅黑";
            font.FontHeightInPoints = fontSize;
            cellStyle.SetFont(font);
            cellStyle.VerticalAlignment = VerticalAlignment.Center;
            cellStyle.Alignment = HorizontalAlignment.Center;
            return cellStyle;
        }
        /// <summary>
        /// èŽ·å–å­—ç¬¦ä¸²é•¿åº¦ï¼ˆä¸­æ–‡æŒ‰2个字节长度)
        /// </summary>
        /// <param name="stringWithEnglishAndChinese"></param>
        /// <returns></returns>
        private static int DataLength(string stringWithEnglishAndChinese)
        {
            int lng = 0;
            for (int i = 0; i < stringWithEnglishAndChinese.Length; i++)
            {
                byte[] b = System.Text.Encoding.Default.GetBytes(stringWithEnglishAndChinese.Substring(i, 1));
                if (b.Length > 1)
                    lng += 2;
                else
                    lng += 1;
            }
            return lng;
        }
    }
}
VueWebApi/VueWebApi.csproj
@@ -283,6 +283,7 @@
    <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
    <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
    <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
    <Compile Include="Controllers\AppDeviceManageController.cs" />
    <Compile Include="Controllers\BasicSettingController.cs" />
    <Compile Include="Controllers\DeviceManagerController.cs" />
    <Compile Include="Controllers\ErpSyncMesController.cs" />
@@ -297,6 +298,7 @@
    <Compile Include="Controllers\SystemSettingController.cs" />
    <Compile Include="Controllers\ValuesController.cs" />
    <Compile Include="DDKanBanModel\ShopTopLeft.cs" />
    <Compile Include="DLL\BLL\AppDeviceManageBLL.cs" />
    <Compile Include="DLL\BLL\BasicSettingBLL.cs" />
    <Compile Include="DLL\BLL\DeviceManagerBLL.cs" />
    <Compile Include="DLL\BLL\ErpSyncMesBLL.cs" />
@@ -310,6 +312,7 @@
    <Compile Include="DLL\BLL\QualityManagementBLL.cs" />
    <Compile Include="DLL\BLL\SystemSettingBLL.cs" />
    <Compile Include="DLL\BLL\UserDataBLL.cs" />
    <Compile Include="DLL\DAL\AppDeviceManageDAL.cs" />
    <Compile Include="DLL\DAL\BasicSettingDAL.cs" />
    <Compile Include="DLL\DAL\DeviceManagerDAL.cs" />
    <Compile Include="DLL\DAL\ErpSyncMesDAL.cs" />
@@ -326,6 +329,7 @@
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="Models\AppDevicecCheck.cs" />
    <Compile Include="Models\ExcelErro.cs" />
    <Compile Include="Models\MaterialRout.cs" />
    <Compile Include="Models\ObjectData.cs" />
@@ -334,6 +338,7 @@
    <Compile Include="Models\RoleUserSubmit.cs" />
    <Compile Include="Models\RoutEdit.cs" />
    <Compile Include="Models\ScanStartReportData.cs" />
    <Compile Include="Models\StandEqp.cs" />
    <Compile Include="Models\StepCheck.cs" />
    <Compile Include="Models\StepDefect.cs" />
    <Compile Include="Models\StepEqp.cs" />
@@ -344,9 +349,11 @@
    <Compile Include="Models\User.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Tools\ChannelActionFilterAttribute.cs" />
    <Compile Include="Tools\DALSkillCondition.cs" />
    <Compile Include="Tools\DapperHelper.cs" />
    <Compile Include="Tools\DataOperator.cs" />
    <Compile Include="Tools\DBHelper.cs" />
    <Compile Include="Tools\DownLoad.cs" />
    <Compile Include="Tools\Encrypt.cs" />
    <Compile Include="Tools\ExcelList.cs" />
    <Compile Include="Tools\ExcelModelCheck.cs" />
@@ -485,6 +492,7 @@
  <ItemGroup>
    <Folder Include="App_Data\" />
    <Folder Include="File\excel\" />
    <Folder Include="File\newxls\" />
    <Folder Include="InExcel\" />
  </ItemGroup>
  <ItemGroup>
VueWebApi/bin/VueWebApi.pdb
Binary files differ
VueWebApi/bin/VueWebApi.xml
@@ -506,6 +506,28 @@
            </summary>
            <param name="documentPath">The physical path to XML document.</param>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.ScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
            </summary>
            <param name="eqpcode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.SelectScanDeviceQrCodeItem(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,选择扫码设备列表带出点检项
            </summary>
            <param name="eqpcode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.AppDeviceCheckSave(System.String,VueWebApi.Models.AppDevicecCheck)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€ã€æäº¤ä¿å­˜
            </summary>
            <param name="username">登录人员(点检人)</param>
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.OrganizationSearch(System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç»„织架构查询
@@ -865,7 +887,7 @@
            <param name="devicecode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€é¡¹åˆ—表查询
            </summary>
@@ -894,7 +916,7 @@
            <param name="checkitemcode">设备点检项目(部位)编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ä¿å…»é¡¹åˆ—表查询
            </summary>
@@ -923,7 +945,7 @@
            <param name="maiitemcode">设备保养项目(部位)编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€æ ‡å‡†åˆ—表查询
            </summary>
@@ -979,7 +1001,7 @@
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ä¿å…»æ ‡å‡†åˆ—表查询
            </summary>
@@ -1376,12 +1398,14 @@
            <param name="erpordercode">订单号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            MES工单查询
            </summary>
            <param name="mesorderstus">工单状态码</param>
            <param name="mesordercode">工单编号</param>
            <param name="sourceorder">源单单号</param>
            <param name="ordertype">单据类型</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">产品规格</param>
@@ -1564,10 +1588,11 @@
            <param name="obj">收料提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(VueWebApi.Models.ReportDefectHandle)">
        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(System.String,VueWebApi.Models.ReportDefectHandle)">
            <summary>
            ä¸è‰¯å¤„理,提交
            </summary>
            <param name="username">处理人员编码</param>
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
@@ -1982,6 +2007,47 @@
            <param name="checkitemcode">检验项目代码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•列表查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partapec">产品名称</param>
            <param name="stepname">产品名称</param>
            <param name="standname">产品名称</param>
            <param name="checktype">检验类型编码</param>
            <param name="checkresult">检验结果</param>
            <param name="page">页码</param>
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSubSearch(System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•列表查询
            </summary>
            <param name="id">主表id</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableOutExcel(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•导出
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partapec">产品名称</param>
            <param name="stepname">产品名称</param>
            <param name="standname">产品名称</param>
            <param name="checktype">检验类型编码</param>
            <param name="checkresult">检验结果</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç¼–码规则查询
@@ -2023,6 +2089,14 @@
            è¯·æ±‚接口之前渠道过滤
            </summary>
            <param name="actionContext"></param>
        </member>
        <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
            <summary>
            ä¸‹è½½excel
            </summary>
            <param name="path"></param>
            <param name="num"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DapperHelper.sqlConnection">
            <summary>
@@ -2314,6 +2388,61 @@
            <param name="parameters">参数数组</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.Download``1(System.Collections.Generic.IList{``0},System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
            <summary>
                ä¸‹è½½
            </summary>
            <typeparam name="T"></typeparam>
            <param name="data"></param>
            <param name="map">所需要的列</param>
            <param name="filenName">文件名字</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataSetToExcel(System.Data.DataSet,System.String)">
            <summary>
            Datas the set to excel.
            </summary>
            <param name="ds">The ds.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataTableToExcel(System.Data.DataTable,System.String)">
            <summary>
            Datas the set to excel.
            </summary>
            <param name="ds">The ds.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.GetValue(System.String,System.String)">
            <summary>
            Gets the value.
            </summary>
            <param name="cellValue">The cell value.</param>
            <param name="type">The type.</param>
            <returns>System.String.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataToExcel(System.Data.DataTable,System.String)">
            <summary>
            Datatable生成Excel表格并返回路径
            </summary>
            <param name="m_DataTable">Datatable</param>
            <param name="s_FileName">文件名</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataTree(System.Data.DataTable,System.String,System.Int32,System.String@)">
            <summary>
            å·¥èµ„报表Excel导出数据合并
            </summary>
            <param name="path"></param>
            <param name="table"></param>
            <param name="treeIndex"></param>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataLength(System.String)">
            <summary>
            èŽ·å–å­—ç¬¦ä¸²é•¿åº¦ï¼ˆä¸­æ–‡æŒ‰2个字节长度)
            </summary>
            <param name="stringWithEnglishAndChinese"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.ImportExcel.ExcelToTable(System.String)">
            <summary>
            Excel导入成Datable
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
@@ -506,6 +506,28 @@
            </summary>
            <param name="documentPath">The physical path to XML document.</param>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.ScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
            </summary>
            <param name="eqpcode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.SelectScanDeviceQrCodeItem(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,选择扫码设备列表带出点检项
            </summary>
            <param name="eqpcode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.AppDeviceCheckSave(System.String,VueWebApi.Models.AppDevicecCheck)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€ã€æäº¤ä¿å­˜
            </summary>
            <param name="username">登录人员(点检人)</param>
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.OrganizationSearch(System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç»„织架构查询
@@ -865,7 +887,7 @@
            <param name="devicecode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€é¡¹åˆ—表查询
            </summary>
@@ -894,7 +916,7 @@
            <param name="checkitemcode">设备点检项目(部位)编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ä¿å…»é¡¹åˆ—表查询
            </summary>
@@ -923,7 +945,7 @@
            <param name="maiitemcode">设备保养项目(部位)编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€æ ‡å‡†åˆ—表查询
            </summary>
@@ -979,7 +1001,7 @@
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ä¿å…»æ ‡å‡†åˆ—表查询
            </summary>
@@ -1376,12 +1398,14 @@
            <param name="erpordercode">订单号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            MES工单查询
            </summary>
            <param name="mesorderstus">工单状态码</param>
            <param name="mesordercode">工单编号</param>
            <param name="sourceorder">源单单号</param>
            <param name="ordertype">单据类型</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">产品规格</param>
@@ -1564,10 +1588,11 @@
            <param name="obj">收料提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(VueWebApi.Models.ReportDefectHandle)">
        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(System.String,VueWebApi.Models.ReportDefectHandle)">
            <summary>
            ä¸è‰¯å¤„理,提交
            </summary>
            <param name="username">处理人员编码</param>
            <param name="json">提交数据</param>
            <returns></returns>
        </member>
@@ -1982,6 +2007,47 @@
            <param name="checkitemcode">检验项目代码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•列表查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partapec">产品名称</param>
            <param name="stepname">产品名称</param>
            <param name="standname">产品名称</param>
            <param name="checktype">检验类型编码</param>
            <param name="checkresult">检验结果</param>
            <param name="page">页码</param>
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSubSearch(System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•列表查询
            </summary>
            <param name="id">主表id</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableOutExcel(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            å·¥åºæ£€éªŒè®°å½•导出
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partapec">产品名称</param>
            <param name="stepname">产品名称</param>
            <param name="standname">产品名称</param>
            <param name="checktype">检验类型编码</param>
            <param name="checkresult">检验结果</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç¼–码规则查询
@@ -2023,6 +2089,14 @@
            è¯·æ±‚接口之前渠道过滤
            </summary>
            <param name="actionContext"></param>
        </member>
        <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
            <summary>
            ä¸‹è½½excel
            </summary>
            <param name="path"></param>
            <param name="num"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DapperHelper.sqlConnection">
            <summary>
@@ -2314,6 +2388,61 @@
            <param name="parameters">参数数组</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.Download``1(System.Collections.Generic.IList{``0},System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
            <summary>
                ä¸‹è½½
            </summary>
            <typeparam name="T"></typeparam>
            <param name="data"></param>
            <param name="map">所需要的列</param>
            <param name="filenName">文件名字</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataSetToExcel(System.Data.DataSet,System.String)">
            <summary>
            Datas the set to excel.
            </summary>
            <param name="ds">The ds.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataTableToExcel(System.Data.DataTable,System.String)">
            <summary>
            Datas the set to excel.
            </summary>
            <param name="ds">The ds.</param>
            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.GetValue(System.String,System.String)">
            <summary>
            Gets the value.
            </summary>
            <param name="cellValue">The cell value.</param>
            <param name="type">The type.</param>
            <returns>System.String.</returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataToExcel(System.Data.DataTable,System.String)">
            <summary>
            Datatable生成Excel表格并返回路径
            </summary>
            <param name="m_DataTable">Datatable</param>
            <param name="s_FileName">文件名</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataTree(System.Data.DataTable,System.String,System.Int32,System.String@)">
            <summary>
            å·¥èµ„报表Excel导出数据合并
            </summary>
            <param name="path"></param>
            <param name="table"></param>
            <param name="treeIndex"></param>
        </member>
        <member name="M:VueWebApi.Tools.DownLoad.DataLength(System.String)">
            <summary>
            èŽ·å–å­—ç¬¦ä¸²é•¿åº¦ï¼ˆä¸­æ–‡æŒ‰2个字节长度)
            </summary>
            <param name="stringWithEnglishAndChinese"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.ImportExcel.ExcelToTable(System.String)">
            <summary>
            Excel导入成Datable
VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache
Binary files differ
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
b1c5bf276d54b9e7c26704c1bb657e6a3aea4166
381130c0169b46e9923444e6a74044fb28bd1180
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
@@ -265,7 +265,6 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.AssemblyReference.cache
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CoreCompileInputs.cache
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CopyComplete
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.dll
VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ