1.质量管理-->工序检验项目接口
2.质量管理-->工序质检方案接口
3.质量管理-->工序检验接口
4.质量管理-->工序检验记录接口
已修改3个文件
1418 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/QualityManagementController.cs 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/QualityManagementBLL.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/QualityManagementDAL.cs 1037 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/QualityManagementController.cs
@@ -74,7 +74,287 @@
        [HttpPost]
        public JsonResult DeleteDedect(string defectcode)
        {
            mes = QualityManagementBLL.DeleteDedect(defectcode);
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = QualityManagementBLL.DeleteDedect(defectcode,us);
            return Json(mes);
        }
        #endregion
        #region[工序检验项目列表查询]
        /// <summary>
        /// 工序检验项目列表查询
        /// </summary>
        /// <param name="itemcode">检验项目编码</param>
        /// <param name="itemname">检验项目名称</param>
        /// <param name="itemdescr">检验项目描述</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "StepCheckItemSearch")]
        [HttpGet]
        public JsonResult StepCheckItemSearch(string itemcode = null, string itemname = null, string itemdescr = 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.StepCheckItemSearch(itemcode, itemname, itemdescr, startNum, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[工序检验项目新增、编辑提交]
        /// <summary>
        /// 工序检验项目新增、编辑提交
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "AddUpdateStepCheckItem")]
        [HttpPost]
        public JsonResult AddUpdateStepCheckItem([FromBody] JObject obj)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            string checkitemcode = obj["checkitemcode"].ToString();    //工序检验项目代码
            string checkitemname = obj["checkitemname"].ToString(); //工序检验项目名称
            string checkitemdescr = obj["checkitemdescr"].ToString(); //工序检验项目描述
            string opertype = obj["OperType"].ToString();  //操作类型
            mes = QualityManagementBLL.AddUpdateStepCheckItem(checkitemcode, checkitemname, checkitemdescr, opertype, us);
            return Json(mes);
        }
        #endregion
        #region[工序检验项目删除]
        /// <summary>
        /// 工序检验项目删除
        /// </summary>
        /// <param name="checkitemcode">检验项目代码</param>
        /// <returns></returns>
        [Route(template: "DeleteStepCheckItem")]
        [HttpPost]
        public JsonResult DeleteStepCheckItem(string checkitemcode)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = QualityManagementBLL.DeleteStepCheckItem(checkitemcode, us);
            return Json(mes);
        }
        #endregion
        #region[工序质检方案列表查询]
        /// <summary>
        /// 工序质检方案列表查询
        /// </summary>
        /// <param name="qualityinsptcode">质检方案编码</param>
        /// <param name="qualityinsptname">质检方案名称</param>
        /// <param name="status">有效状态</param>
        /// <param name="checktype">质检类型</param>
        /// <param name="sampltype">抽样方式</param>
        /// <param name="suitobject">适用对象</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "QualityInspectionSearch")]
        [HttpGet]
        public JsonResult QualityInspectionSearch(string qualityinsptcode = null, string qualityinsptname = null, string status = null, string checktype = null, string sampltype = null, string suitobject = 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.QualityInspectionSearch(qualityinsptcode, qualityinsptname, status, checktype, sampltype, suitobject, startNum, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[工序质检方案查看编辑]
        /// <summary>
        /// 工序质检方案查看编辑
        /// </summary>
        /// <param name="qualityinsptcode">质检方案编码</param>
        /// <returns></returns>
        [Route(template: "QualityInspectionSeeEdit")]
        [HttpGet]
        public JsonResult QualityInspectionSeeEdit(string qualityinsptcode)
        {
            mes = QualityManagementBLL.QualityInspectionSeeEdit(qualityinsptcode);
            return Json(mes);
        }
        #endregion
        #region[工序质检方案新增/编辑提交]
        /// <summary>
        /// 工序质检方案新增/编辑提交
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "QualityInspectionAddEditSave")]
        [HttpPost]
        public JsonResult QualityInspectionAddEditSave([FromBody] JObject obj)
        {
            string qualityinsptcode = obj["qualityinsptcode"].ToString(); //质检方案编码
            string qualityinsptname = obj["qualityinsptname"].ToString(); //质检方案名称
            string status = obj["status"].ToString(); //有效状态
            string checktype = obj["checktype"].ToString(); //检验类型
            string sampmethod = obj["sampmethod"].ToString(); //抽检方式
            string sampscare = obj["sampscare"].ToString(); //固定抽检(样本数)   比例抽检(百分比)
            string suitobject = obj["suitobject"].ToString(); //适用对象
            string suitpart = obj["suitpart"].ToString();  //适用物料(编码)或者物料类型(编码)
            string descr = obj["descr"].ToString(); //检验方案描述
            string stepcode = obj["stepcode"].ToString(); //工序编码(首检、巡检、完工检验)
            string checkitem = obj["checkitem"].ToString(); //质检列表
            string type = obj["type"].ToString(); //操作类型
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = QualityManagementBLL.QualityInspectionAddEditSave(qualityinsptcode, qualityinsptname, status, checktype, sampmethod, sampscare, suitobject, suitpart, descr, stepcode, checkitem, type, us);
            return Json(mes);
        }
        #endregion
        #region[工序质检方案删除]
        /// <summary>
        /// 工序质检方案删除
        /// </summary>
        /// <param name="qualityinsptcode">质检方案编码</param>
        /// <returns></returns>
        [Route(template: "QualityInspectionDelete")]
        [HttpPost]
        public JsonResult QualityInspectionDelete(string qualityinsptcode)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = QualityManagementBLL.QualityInspectionDelete(qualityinsptcode, us);
            return Json(mes);
        }
        #endregion
        #region[工序检验扫码获取任务信息]
        /// <summary>
        /// 工序检验扫码获取任务信息
        /// </summary>
        /// <param name="orderstepqrcode">扫描工序二维码信息</param>
        /// <param name="checktype">检验方式FirstCheck(首检) PatroCheck(巡检)  EndCheck(完工检)</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepCheckSearch")]
        [HttpGet]
        public JsonResult MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
        {
            mes = QualityManagementBLL.MesOrderStepCheckSearch(orderstepqrcode, checktype);
            return Json(mes);
        }
        #endregion
        #region[工序检验根据选择的检验方案查找检验项目]
        /// <summary>
        /// 入厂检验,工序检验根据选择的检验方案查找检验项目
        /// </summary>
        /// <param name="checkstandcode">检验方案编码</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepCheckItemList")]
        [HttpGet]
        public JsonResult MesOrderStepCheckItemList(string checkstandcode)
        {
            mes = QualityManagementBLL.MesOrderStepCheckItemList(checkstandcode);
            return Json(mes);
        }
        #endregion
        #region[工序检验,提交]
        /// <summary>
        /// 工序检验,提交
        /// </summary>
        /// <returns></returns>
        [Route(template: "SaveMesOrderStepCheckItem")]
        [HttpPost]
        public JsonResult SaveMesOrderStepCheckItem([FromBody] JObject obj)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            string wocode = obj["wocode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string checkstandcode = obj["checkstandcode"].ToString(); //质检方案编码
            string check_type = obj["check_type"].ToString(); //检验方式FirstCheck(首检) PatroCheck(巡检)  EndCheck(完工检)
            string sampmethod = obj["sampmethod"].ToString(); //抽检方式:固定抽检(FIXED) 比例抽检(SCARE)
            string qualitystatus = obj["qualitystatus"].ToString(); //质量状态(合格、不合格)
            string labqty = obj["good_qty"].ToString(); //工序任务合格数量
            string sampleqty = obj["sampleqty"].ToString(); //样本数量
            string goodqty = obj["goodqty"].ToString(); //合格数量
            string ngqty = obj["ngqty"].ToString();//不合格数量
            string checkitemcont = obj["checkitemcont"].ToString(); //检验项目数据
            mes = QualityManagementBLL.SaveMesOrderStepCheckItem(wocode, partcode, stepcode, checkstandcode, check_type, sampmethod, qualitystatus, labqty, sampleqty, goodqty, ngqty, checkitemcont, us);
            return Json(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="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "StepCheckTableSearch")]
        [HttpGet]
        public JsonResult 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 Json(mes);
        }
        #endregion
        #region[工序检验记录列表明细查询]
        /// <summary>
        /// 工序检验记录列表查询
        /// </summary>
        /// <param name="id">主表id</param>
        /// <returns></returns>
        [Route(template: "StepCheckTableSubSearch")]
        [HttpGet]
        public JsonResult StepCheckTableSubSearch(string id)
        {
            mes = QualityManagementBLL.StepCheckTableSubSearch(id);
            return Json(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 JsonResult 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 Json(mes);
        }
        #endregion
VueWebCoreApi/DLL/BLL/QualityManagementBLL.cs
@@ -25,9 +25,104 @@
        #endregion
        #region[质量管理,缺陷定义删除]
        public static ToMessage DeleteDedect(string defectcode)
        public static ToMessage DeleteDedect(string defectcode, User us)
        {
            return QualityManagementDAL.DeleteDedect(defectcode);
            return QualityManagementDAL.DeleteDedect(defectcode,us);
        }
        #endregion
        #region[工序检验项目列表查询]
        public static ToMessage StepCheckItemSearch(string itemcode, string itemname, string itemdescr, int startNum, int endNum, string prop, string order)
        {
            return QualityManagementDAL.StepCheckItemSearch(itemcode, itemname, itemdescr, startNum, endNum, prop, order);
        }
        #endregion
        #region[工序检验项目新增、编辑提交]
        public static ToMessage AddUpdateStepCheckItem(string checkitemcode, string checkitemname, string checkitemdescr, string opertype, User us)
        {
            return QualityManagementDAL.AddUpdateStepCheckItem(checkitemcode, checkitemname, checkitemdescr, opertype, us);
        }
        #endregion
        #region[工序检验项目删除]
        public static ToMessage DeleteStepCheckItem(string checkitemcode, User us)
        {
            return QualityManagementDAL.DeleteStepCheckItem(checkitemcode,us);
        }
        #endregion
        #region[工序质检方案列表查询]
        public static ToMessage QualityInspectionSearch(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampltype, string suitobject, int startNum, int endNum, string prop, string order)
        {
            return QualityManagementDAL.QualityInspectionSearch(qualityinsptcode, qualityinsptname, status, checktype, sampltype, suitobject, startNum, endNum, prop, order);
        }
        #endregion
        #region[工序质检方案查看编辑]
        public static ToMessage QualityInspectionSeeEdit(string qualityinsptcode)
        {
            return QualityManagementDAL.QualityInspectionSeeEdit(qualityinsptcode);
        }
        #endregion
        #region[工序质检方案新增/编辑提交]
        public static ToMessage QualityInspectionAddEditSave(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampmethod, string sampscare, string suitobject, string suitpart, string descr, string stepcode, string checkitem, string type, User us)
        {
            return QualityManagementDAL.QualityInspectionAddEditSave(qualityinsptcode, qualityinsptname, status, checktype, sampmethod, sampscare, suitobject, suitpart, descr, stepcode, checkitem, type, us);
        }
        #endregion
        #region[工序质检方案删除]
        public static ToMessage QualityInspectionDelete(string qualityinsptcode, User us)
        {
            return QualityManagementDAL.QualityInspectionDelete(qualityinsptcode, us);
        }
        #endregion
        #region[工序检验扫码获取任务信息]
        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
        {
            return QualityManagementDAL.MesOrderStepCheckSearch(orderstepqrcode, checktype);
        }
        #endregion
        #region[工序检验根据选择的检验方案查找检验项目]
        public static ToMessage MesOrderStepCheckItemList(string checkstandcode)
        {
            return QualityManagementDAL.MesOrderStepCheckItemList(checkstandcode);
        }
        #endregion
        #region[工序检验,提交]
        public static ToMessage SaveMesOrderStepCheckItem(string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, User us)
        {
            return QualityManagementDAL.SaveMesOrderStepCheckItem(wocode, partcode, stepcode, checkstandcode, check_type, sampmethod, qualitystatus, labqty, sampleqty, goodqty, ngqty, checkitemcont, us);
        }
        #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
    }
VueWebCoreApi/DLL/DAL/QualityManagementDAL.cs
@@ -1,4 +1,5 @@
using Dapper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
@@ -95,6 +96,8 @@
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "新增", "缺陷编码:" + defectcode + "缺陷名称:" + defectname, us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "缺陷定义新增成功!";
@@ -126,6 +129,8 @@
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "修改", "缺陷编码:" + defectcode + "缺陷名称:" + defectname, us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "缺陷定义修改成功!";
@@ -152,24 +157,24 @@
        #endregion
        #region[质量管理,缺陷定义删除]
        public static ToMessage DeleteDedect(string defectcode)
        public static ToMessage DeleteDedect(string defectcode, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //sql = @"select * from  CSR_WorkRecord_Defect  where defect_code=@defectcode";
                //dynamicParams.Add("@defectcode", defectcode);
                //var data = DapperHelper.selectdata(sql, dynamicParams);
                //if (data.Rows.Count > 0)
                //{
                //    mes.code = "300";
                //    mes.count = 0;
                //    mes.Message = "当前缺陷项已生成报工缺陷记录,不允许删除!";
                //    mes.data = null;
                //    return mes;
                //}
                sql = @"select * from  CSR_WorkRecord_Defect  where defect_code=@defectcode";
                dynamicParams.Add("@defectcode", defectcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前缺陷项已生成报工缺陷记录,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                sql = @"delete TDefect  where code=@defectcode";
                list.Add(new { str = sql, parm = new { defectcode = defectcode } });
@@ -177,6 +182,8 @@
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "删除", "缺陷编码:" + defectcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "缺陷删除成功!";
@@ -200,5 +207,1011 @@
            return mes;
        }
        #endregion
        #region[工序检验项目列表查询]
        public static ToMessage StepCheckItemSearch(string itemcode, string itemname, string itemdescr, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (itemcode != "" && itemcode != null)
                {
                    search += "and A.code like '%'+@itemcode+'%' ";
                    dynamicParams.Add("@itemcode", itemcode);
                }
                if (itemname != "" && itemname != null)
                {
                    search += "and A.name like '%'+@itemname+'%' ";
                    dynamicParams.Add("@itemname", itemname);
                }
                if (itemdescr != "" && itemdescr != null)
                {
                    search += "and A.descr like '%'+@itemdescr+'%' ";
                    dynamicParams.Add("@itemdescr", itemdescr);
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.code,A.name,A.descr,U.username as lm_user,A.lm_date  from TStepCheckItem A
                            left join TUser U on A.lm_user=U.usercode
                            where 1=1 " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验项目新增、编辑提交]
        public static ToMessage AddUpdateStepCheckItem(string checkitemcode, string checkitemname, string checkitemdescr, string opertype, User us)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
            try
            {
                if (opertype == "Add")
                {
                    //写入缺陷定义定义表
                    sql = @"insert into TStepCheckItem(code,name,descr,lm_user,lm_date)
                                values(@checkitemcode,@checkitemname,@checkitemdescr,@username,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            checkitemcode = checkitemcode,
                            checkitemname = checkitemname,
                            checkitemdescr = checkitemdescr,
                            username = us.usercode,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "新增", "工序检验项目:" + checkitemcode, us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "工序检验项目新增成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "工序检验项目新增失败!";
                        mes.data = null;
                    }
                }
                if (opertype == "Update")
                {
                    sql = @"update TStepCheckItem set name=@checkitemname,descr=@checkitemdescr,lm_user=@username,lm_date=@CreateDate where code=@checkitemcode";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            checkitemcode = checkitemcode,
                            checkitemname = checkitemname,
                            checkitemdescr = checkitemdescr,
                            username = us.usercode,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "修改", "工序检验项目:" + checkitemcode, us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "工序检验项目修改成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "工序检验项目修改失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验项目删除]
        public static ToMessage DeleteStepCheckItem(string checkitemcode, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select * from  TStepCheckRecordSub  where checkitem_code=@checkitemcode";
                dynamicParams.Add("@checkitemcode", checkitemcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前检验项项已生成检验记录,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                sql = @"delete TStepCheckItem   where code=@checkitemcode";
                list.Add(new { str = sql, parm = new { checkitemcode = checkitemcode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "删除", "工序检验项目:" + checkitemcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "工序检验删除成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工序检验删除失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序质检方案列表查询]
        public static ToMessage QualityInspectionSearch(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampltype, string suitobject, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (qualityinsptcode != "" && qualityinsptcode != null)
                {
                    search += "and AA.code like '%'+@qualityinsptcode+'%' ";
                    dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
                }
                if (qualityinsptname != "" && qualityinsptname != null)
                {
                    search += "and AA.name like '%'+@qualityinsptname+'%' ";
                    dynamicParams.Add("@qualityinsptname", qualityinsptname);
                }
                if (status != "" && status != null)
                {
                    search += "and AA.status=@status ";
                    dynamicParams.Add("@status", status);
                }
                if (checktype != "" && checktype != null)
                {
                    search += "and AA.checktype=@checktype ";
                    dynamicParams.Add("@checktype", checktype);
                }
                if (sampltype != "" && sampltype != null)
                {
                    search += "and AA.sampmethod=@sampltype ";
                    dynamicParams.Add("@sampltype", sampltype);
                }
                if (suitobject != "" && suitobject != null)
                {
                    search += "and AA.suitobject=@suitobject ";
                    dynamicParams.Add("@suitobject", suitobject);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select *  from(
                            select A.code,A.name,A.status,A.checktype,A.sampmethod,A.sampscare,A.suitobject,A.stepcode,S.stepname,A.descr,A.suitpart,A.lm_date,U.username,
                            case when A.suitobject='P' then
                            STUFF(( SELECT ';' + partname
                            FROM TMateriel_Info
                            where   PATINDEX('%;' + RTRIM(TMateriel_Info.partcode) + ';%',';' + A.suitpart + ';')>0
                            FOR XML PATH('')), 1, 1,'')
                            when A.suitobject='PY'
                            then
                            STUFF(( SELECT ';' + name
                            FROM T_Dict
                            where   PATINDEX('%;' + RTRIM(T_Dict.code) + ';%',';' + A.suitpart + ';')>0
                            FOR XML PATH('')), 1, 1,'')
                            end as suitpartname
                            from TStepCheckStandard A
                            left join TUser U on  A.lm_user=U.usercode
                            left join TStep S on A.stepcode=S.stepcode
                            ) as AA
                            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 QualityInspectionSeeEdit(string qualityinsptcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select A.stepcheckitem_seq,A.stepcheckitem_code,B.name as stepcheckitem_name,A.required,
                        A.numberjudge,A.unit,A.decimalnum,A.standvalue,A.uppervalue,A.lowervalue,A.stepcheckitem_desc
                        from TStepCheckStandardSub A
                        inner join TStepCheckItem B on A.stepcheckitem_code=B.code
                        where A.stepstaned_code=@qualityinsptcode";
                dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
                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 QualityInspectionAddEditSave(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampmethod, string sampscare, string suitobject, string suitpart, string descr, string stepcode, string checkitem, string type, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                //获取质检列表检验项目数据
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitem);
                list.Clear();
                switch (type)
                {
                    case "Add": //新增
                        //写入质检方案主表
                        sql = @"insert into  TStepCheckStandard(code,name,status,checktype,sampmethod,sampscare,suitobject,suitpart,stepcode,descr,lm_user,lm_date)
                                values(@code,@name,@status,@checktype,@sampmethod,@sampscare,@suitobject,@suitpart,@stepcode,@descr,@lm_user,@lm_date)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                code = qualityinsptcode,
                                name = qualityinsptname,
                                status = status,
                                checktype = checktype,
                                sampmethod = sampmethod,
                                sampscare = sampscare,
                                suitobject = suitobject,
                                suitpart = suitpart,
                                stepcode = stepcode,
                                descr = descr,
                                lm_user = us.usercode,
                                lm_date = date
                            }
                        });
                        //写入质检方案子表
                        for (int i = 0; i < arra.Count; i++)
                        {
                            sql = @"insert into  TStepCheckStandardSub(stepstaned_code,stepcheckitem_seq,stepcheckitem_code,required,numberjudge,unit,decimalnum,standvalue,uppervalue,lowervalue,stepcheckitem_desc,lm_user,lm_date)
                                values(@stepstaned_code,@stepcheckitem_seq,@stepcheckitem_code,@required,@numberjudge,@unit,@decimalnum,@standvalue,@uppervalue,@lowervalue,@stepcheckitem_desc,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    stepstaned_code = qualityinsptcode,
                                    stepcheckitem_seq = Convert.ToInt32(arra[i]["stepcheckitem_seq"].ToString()),
                                    stepcheckitem_code = arra[i]["stepcheckitem_code"].ToString(),
                                    required = arra[i]["required"].ToString(),
                                    numberjudge = arra[i]["numberjudge"].ToString(),
                                    unit = arra[i]["unit"].ToString(),
                                    decimalnum = arra[i]["decimalnum"].ToString(),
                                    standvalue = arra[i]["standvalue"].ToString(),
                                    uppervalue = arra[i]["uppervalue"].ToString(),
                                    lowervalue = arra[i]["lowervalue"].ToString(),
                                    stepcheckitem_desc = arra[i]["stepcheckitem_desc"].ToString(),
                                    lm_user = us.usercode,
                                    lm_date = date
                                }
                            });
                        }
                        break;
                    case "Update"://修改
                        //判断是否生成检验记录(入厂检验(InCheck)  出厂检验(OutCheck)  FirstCheck(首检) PatroCheck(巡检)  EndCheck(完工检))
                        sql = @"select *  from TStepCheckRecord where checkstaned_code=@qualityinsptcode and check_type=@checktype";
                        dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
                        dynamicParams.Add("@checktype", checktype);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        if (data.Rows.Count > 0)
                        {
                            mes.code = "300";
                            mes.count = 0;
                            mes.Message = "修改失败,当前质检方案已生成对应检验记录!";
                            mes.data = null;
                            return mes;
                        }
                        //删除质检方案子表
                        sql = @"delete from TStepCheckStandardSub where stepstaned_code=@code";
                        list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
                        //修改质检方案主表
                        sql = @"update TStepCheckStandard set name=@name,status=@status,checktype=@checktype,sampmethod=@sampmethod,sampscare=@sampscare,
                                suitobject=@suitobject,suitpart=@suitpart,stepcode=@stepcode,descr=@descr
                                where code=@code";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                code = qualityinsptcode,
                                name = qualityinsptname,
                                status = status,
                                checktype = checktype,
                                sampmethod = sampmethod,
                                sampscare = sampscare,
                                suitobject = suitobject,
                                suitpart = suitpart,
                                stepcode = stepcode,
                                descr = descr,
                            }
                        });
                        //新增质检方案子表
                        for (int i = 0; i < arra.Count; i++)
                        {
                            sql = @"insert into  TStepCheckStandardSub(stepstaned_code,stepcheckitem_seq,stepcheckitem_code,required,numberjudge,unit,decimalnum,standvalue,uppervalue,lowervalue,stepcheckitem_desc,lm_user,lm_date)
                                values(@stepstaned_code,@stepcheckitem_seq,@stepcheckitem_code,@required,@numberjudge,@unit,@decimalnum,@standvalue,@uppervalue,@lowervalue,@stepcheckitem_desc,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    stepstaned_code = qualityinsptcode,
                                    stepcheckitem_seq = Convert.ToInt32(arra[i]["stepcheckitem_seq"].ToString()),
                                    stepcheckitem_code = arra[i]["stepcheckitem_code"].ToString(),
                                    required = arra[i]["required"].ToString(),
                                    numberjudge = arra[i]["numberjudge"].ToString(),
                                    unit = arra[i]["unit"].ToString(),
                                    decimalnum = arra[i]["decimalnum"].ToString(),
                                    standvalue = arra[i]["standvalue"].ToString(),
                                    uppervalue = arra[i]["uppervalue"].ToString(),
                                    lowervalue = arra[i]["lowervalue"].ToString(),
                                    stepcheckitem_desc = arra[i]["stepcheckitem_desc"].ToString(),
                                    lm_user = us.usercode,
                                    lm_date = date
                                }
                            });
                        }
                        break;
                    default:
                        break;
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    switch (type)
                    {
                        case "Add": //新增
                            //写入操作记录表
                            LogHelper.DbOperateLog(us.usercode, "新增", "工序质检方案:" + qualityinsptcode, us.usertype);
                            break;
                        case "Update": //修改
                            //写入操作记录表
                            LogHelper.DbOperateLog(us.usercode, "修改", "工序质检方案:" + qualityinsptcode, us.usertype);
                            break;
                        default:
                            break;
                    }
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序质检方案删除]
        public static ToMessage QualityInspectionDelete(string qualityinsptcode, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断是否生成检验记录(入厂检验(InCheck)  出厂检验(OutCheck)  FirstCheck(首检) PatroCheck(巡检)  EndCheck(完工检))
                sql = @"select *  from TStepCheckRecord where checkstaned_code=@qualityinsptcode";
                dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "删除失败,当前质检方案已生成对应检验记录!";
                    mes.data = null;
                    return mes;
                }
                //删除质检方案主表
                sql = @"delete TStepCheckStandard  where code=@code";
                list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
                //删除质检方案子表
                sql = @"delete TStepCheckStandardSub  where stepstaned_code=@code";
                list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "删除", "质检方案:" + qualityinsptcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "质检方案删除成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "质检方案删除失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验扫码获取任务信息]
        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
        {
            var sql = "";
            string ordercode = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            Dictionary<string, object> list = new Dictionary<string, object>();
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "请扫描工序条码!";
                        mes.data = null;
                        return mes;
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    //通过扫描二维码信息查找任务信息
                    sql = @"select A.wo_code,A.good_qty,M.partcode,M.partname,M.partspec,M.stocktype_code,S.stepcode,S.stepname
                            from TK_Wrk_Step A
                            inner join TK_Wrk_Man P on A.wo_code=P.wo_code
                            left join TMateriel_Info M on P.materiel_code=M.partcode
                            left join TStep S on A.step_code=S.stepcode
                            where A.wo_code=@wo_code and A.step_code=@stepcode";
                    dynamicParams.Add("@wo_code", ordercode);
                    dynamicParams.Add("@stepcode", stepcode);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        if (decimal.Parse(data.Rows[0]["good_qty"].ToString()) > 0)
                        {
                            //获取绑定的质检方案、抽样方式、样本数
                            sql = @"select code as checkstandcode,name as checkstandname,sampmethod,sampscare
                            from TStepCheckStandard
                            where (PATINDEX('%,' + RTRIM(@partcode) + ',%',',' + suitpart + ',')>0 or PATINDEX('%,' + RTRIM(@stocktype_code) + ',%',',' + suitpart + ',')>0)
                            and checktype=@checktype and stepcode=@stepcode ";
                            dynamicParams.Add("@partcode", data.Rows[0]["partcode"].ToString());//物料编码
                            dynamicParams.Add("@stepcode", stepcode);//工序编码
                            dynamicParams.Add("@stocktype_code", data.Rows[0]["stocktype_code"].ToString());//存货类型编码
                            dynamicParams.Add("@checktype", checktype);//检验类型
                            var data1 = DapperHelper.selectdata(sql, dynamicParams);
                            if (data1.Rows.Count > 0)
                            {
                                list.Add("labcont", data);
                                list.Add("chekstand", data1);
                                mes.code = "200";
                                mes.count = 0;
                                mes.Message = "查询成功!";
                                mes.data = list;
                            }
                            else
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "当前产品【" + data.Rows[0]["partname"].ToString() + "】,对应工序【" + data.Rows[0]["stepname"].ToString() + "】,未指定质检方案!";
                                mes.data = null;
                                return mes;
                            }
                        }
                        else
                        {
                            mes.code = "300";
                            mes.count = 0;
                            mes.Message = "当前工序任务无报工产出!";
                            mes.data = null;
                            return mes;
                        }
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "生产任务不存在!";
                        mes.data = null;
                        return mes;
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验根据选择的检验方案查找检验项目]
        public static ToMessage MesOrderStepCheckItemList(string checkstandcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //质检方案编码获取检验项
                sql = @"select A.stepcheckitem_seq, B.code,B.name,A.required,A.numberjudge,A.unit,A.decimalnum,
                        A.standvalue,A.uppervalue,A.lowervalue,A.stepcheckitem_desc
                        from TStepCheckStandardSub A
                        left join TStepCheckItem B on A.stepcheckitem_code=B.code
                        where A.stepstaned_code=@checkstandcode
                        order by A.stepcheckitem_seq";
                dynamicParams.Add("@checkstandcode", checkstandcode);//质检方案编码
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前质检方案无检验项!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验,提交]
        public static ToMessage SaveMesOrderStepCheckItem(string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, User us)
        {
            var sql = "";
            string checktypename = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string datetime = DateTime.Now.ToString(); //获取系统时间
                //获取检验项目信息
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitemcont);
                list.Clear();
                //写入检验记录主表
                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date)
                                values(@wo_code,@partcode,@step_code,@checkstaned_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)";
                switch (check_type)
                {
                    case "FirstCheck":
                        checktypename = "首检";
                        break;
                    case "PatroCheck":
                        checktypename = "巡检";
                        break;
                    case "EndCheck":
                        checktypename = "完工检验";
                        break;
                    default:
                        break;
                }
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        wo_code = wocode,
                        partcode = partcode,
                        step_code = stepcode,
                        checkstaned_code = checkstandcode,
                        check_user = us.usercode,
                        check_type = check_type,
                        check_typename = checktypename,
                        sampmethod = sampmethod,
                        check_result = qualitystatus,
                        check_qty = decimal.Parse(sampleqty),
                        good_qty = decimal.Parse(goodqty),
                        ng_qty = decimal.Parse(ngqty),
                        lm_user = us.usercode,
                        lm_date = datetime
                    }
                });
                //写入检验记录子表
                for (int j = 0; j < arra.Count; j++)
                {
                    sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date)
                                values(CONVERT(INT,IDENT_CURRENT('TStepCheckRecord')),@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            checknum = arra[j]["checknum"].ToString(),
                            checkiem_seq = arra[j]["checkiem_seq"].ToString(),
                            checkitem_code = arra[j]["checkitem_code"].ToString(),
                            checkitem_name = arra[j]["checkitem_name"].ToString(),
                            checkitem_descr = arra[j]["checkitem_descr"].ToString(),
                            check_value = arra[j]["check_value"].ToString(),
                            check_result = arra[j]["check_result"].ToString(),
                            lm_user = us.usercode,
                            lm_date = datetime
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验记录列表查询]
        public static ToMessage 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 '%'+@partcode+'%' ";
                    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);
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数(首检、巡检、完工检验)
                var sql = @"select A.id,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.check_user=U.usercode
                            where A.check_type in('FirstCheck','PatroCheck','EndCheck') " + 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 = @"h_p_IFCLD_WuLiuCheckSubSelect";
                dynamicParams.Add("@checkid", id);
                DataTable dt = DapperHelper.selectProcedure(sql, dynamicParams);
                if (dt.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "查询成功!";
                    mes.data = dt;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无检验明细数据!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工序检验记录导出]
        public static ToMessage 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);
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.wo_code
                            ELSE ''END AS '工单号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partcode
                            ELSE ''END AS '产品编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partname
                            ELSE ''END AS '产品名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partspec
                            ELSE ''END AS '规格型号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN S.stepname
                            ELSE ''END AS '工序名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.checkstaned_code
                            ELSE ''END AS '标准编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN T.name
                            ELSE ''END AS '标准名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN U.username
                            ELSE ''END AS '检验人员',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_typename
                            ELSE ''END AS '检验类型',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_result
                            ELSE ''END AS '检验结果',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_descr
                            ELSE ''END AS '检验描述',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_qty
                            END AS '样本数量',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.lm_date
                            END AS '检验时间',
                            B.checknum as 检验件次,B.checkitem_seq as '检验项目序号',B.checkitem_code '检验项目编码',B.checkitem_name '检验项目名称',B.checkitem_descr '检验项目描述',B.check_result '检验项目结果',
                            C.standvalue as '标准值',C.uppervalue as '上限值',C.lowervalue as '下限值',B.check_value as '实测值'
                            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 TStepCheckStandardSub C on A.checkstaned_code=C.stepstaned_code and B.checkitem_code=C.stepcheckitem_code
                            left join TUser U on A.check_user=U.usercode
                            where A.check_type in('FirstCheck','PatroCheck','EndCheck') " + 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
    }
}