using Dapper; using Newtonsoft.Json.Linq; 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 AppQualityManagementDAL { public static DataTable dt; //定义全局变量dt public static bool res; //定义全局变量dt public static ToMessage mes = new ToMessage(); //定义全局返回信息对象 public static string strProcName = ""; //定义全局sql变量 public static List listStr = new List(); //定义全局参数集合 public static SqlParameter[] parameters; //定义全局SqlParameter参数数组 #region[入厂检验,扫描采购到货生成标签] public static ToMessage InFactoryCheckScanLabCode(string labcode) { string sql = ""; var dynamicParams = new DynamicParameters(); Dictionary list = new Dictionary(); try { //判断条码是否有效(采购到货功能编码:2060) sql = @"select * from T_BarCodeBill where hbarcode=@labcode and rightcode=@rightcode and hbarcodestatus='Y'"; dynamicParams.Add("@labcode", labcode); dynamicParams.Add("@rightcode", "2060"); var data0 = DapperHelper.selectdata(sql, dynamicParams); if (data0.Rows.Count <= 0) { mes.code = "300"; mes.count = 0; mes.Message = "不是有效的标签条码!"; mes.data = null; return mes; } //判断条码是否检验 sql = @"select * from TStepCheckRecord where hbarcode=@labcode and check_type='InCheck'"; dynamicParams.Add("@labcode", labcode); var data = DapperHelper.selectdata(sql, dynamicParams); if (data0.Rows.Count > 0) { mes.code = "300"; mes.count = 0; mes.Message = "此标签条码已检验!"; mes.data = null; return mes; } //获取标签信息 sql = @"select A.hbillno,A.hmaterialcode as partcode,M.partname,M.partspec,A.hbarcode,M.stocktype_code,A.hqty, A.hcustomercode,C.name as hcustomername,A.hbatchno,A.qualitystatus from T_BarCodeBill A left join TMateriel_Info M on A.hmaterialcode=M.partcode left join TCustomer C on A.hcustomercode=C.code where A.hbarcode=@labcode and A.hbarcodestatus='Y'"; dynamicParams.Add("@labcode", labcode); var data1 = DapperHelper.selectdata(sql, dynamicParams); if (data1.Rows.Count > 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='InCheck'"; dynamicParams.Add("@partcode", data1.Rows[0]["partcode"].ToString());//物料编码 dynamicParams.Add("@stocktype_code", data1.Rows[0]["stocktype_code"].ToString());//存货类型编码 var data2 = DapperHelper.selectdata(sql, dynamicParams); list.Add("labcont", data1); list.Add("chekstand", data2); mes.code = "200"; mes.count = 0; mes.Message = "查询成功!"; mes.data = list; } else { mes.code = "300"; 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 InFactoryCheckItem(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 InFactoryCheckSave(string hbillno, string labcode, string checkstandcode, string check_type, string sampmethod, string partcode, string customercode, string batchno, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string issyncbatch, string checkitemcont, string username) { var sql = ""; List list = new List(); List obj = new List(); var dynamicParams = new DynamicParameters(); try { string datetime = DateTime.Now.ToString(); //获取系统时间 //获取检验项目信息 JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitemcont); list.Clear(); if (issyncbatch == "Y") //同步相同批次 { //查找相同批次条码(功能编码、单据号、单据类型、条码类型、物料编码、批次号、条码状态) sql = @"select hbarcode,hqty from T_BarCodeBill where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype and hbarcodetype=@hbarcodetype and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus"; dynamicParams.Add("@rightcode", "2060"); dynamicParams.Add("@hbillno", hbillno); dynamicParams.Add("@hbilltype", "1103"); dynamicParams.Add("@hbarcodetype", "P"); dynamicParams.Add("@hmaterialcode", partcode); dynamicParams.Add("@hbatchno", batchno); dynamicParams.Add("@hbarcodestatus", "Y"); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { for (int i = 0; i < data.Rows.Count; i++) { ObjectData tbj = new ObjectData(); tbj.code = data.Rows[i]["hbarcode"].ToString(); tbj.name = data.Rows[i]["hqty"].ToString(); obj.Add(tbj); } } else { ObjectData tbj = new ObjectData(); tbj.code = labcode; tbj.name = labqty; obj.Add(tbj); } } else { ObjectData tbj = new ObjectData(); tbj.code = labcode; tbj.name = labqty; obj.Add(tbj); } //循环标签个数 for (int i = 1; i <= obj.Count; i++) { //写入检验记录主表 sql = @"insert into TStepCheckRecord(hbarcode,wo_code,partcode,checkstaned_code,customer_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date) values(@hbarcode,@wo_code,@partcode,@checkstaned_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)"; list.Add(new { str = sql, parm = new { hbarcode = obj[i].code, wo_code = hbillno, partcode = partcode, checkstaned_code = checkstandcode, customer_code=customercode, check_user = username, check_type = check_type, check_typename = "入厂检验", sampmethod = sampmethod, check_result = qualitystatus, check_qty = decimal.Parse(sampleqty), good_qty = decimal.Parse(goodqty), ng_qty = decimal.Parse(ngqty), lm_user = username, lm_date = datetime } }); //获取主表最大ID sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+@num,1) as id"; dynamicParams.Add("@num", i); var dt = DapperHelper.selectdata(sql, dynamicParams); //写入检验记录子表 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(@m_id,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_result,@lm_user,@lm_date)"; list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), checknum = arra[i]["checknum"].ToString(), checkiem_seq = arra[i]["checkiem_seq"].ToString(), checkitem_code = arra[i]["checkitem_code"].ToString(), checkitem_name = arra[i]["checkitem_name"].ToString(), checkitem_descr = arra[i]["checkitem_descr"].ToString(), check_value = arra[i]["check_value"].ToString(), check_result = arra[i]["check_result"].ToString(), lm_user = username, lm_date = datetime } }); } } //回写条码档案表标签质检状态 sql = @"update T_BarCodeBill set qualitystatus=@qualitystatus where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype and hbarcodetype=@hbarcodetype and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus"; list.Add(new { str = sql, parm = new { qualitystatus= qualitystatus, rightcode = "2060", hbillno = hbillno, hbilltype = "1103", hbarcodetype = "P", hmaterialcode = partcode, hbatchno = batchno, hbarcodestatus = "Y" } }); 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 } }