using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace WFormSynchronizeData_SMR { public partial class Form1 : Form { public DBHelper oCN = new DBHelper(); public Form1() { InitializeComponent(); } //读取数据 private void btnReadData_Click(object sender, EventArgs e) { Stopwatch timer = new Stopwatch(); timer.Start(); CustomWriteLog("1.计时器开始:"+timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); DataTable list = oCN.RunProcReturn("select top 150 * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HFlag=0 order by HCreateTime", "Sb_EquipMentCollection_SN").Tables[0]; //循环集合 for (int i = 0; i < list.Rows.Count; i++) { bool flag = false; string HResult = list.Rows[i]["HResult"].ToString(); string HBadCodeSN = list.Rows[i]["HBarCode"].ToString(); string HCreateTime = list.Rows[i]["HCreateTime"].ToString(); //开始事务 oCN.BeginTran(); CustomWriteLog("2.循环开始:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (HResult == "OK") { flag=HResultOK(list.Rows[i]); } else if (HResult == "NG") { flag = HResultNG(list.Rows[i]); } CustomWriteLog("2-1.循环结束:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (flag) { oCN.RunProc("update Sb_EquipMentCollection_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "' and HCreateTime='"+ HCreateTime + "'"); //结束事务 oCN.Commit(); } } CustomWriteLog("3.结束计时:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); timer.Stop();//结束计时 } public bool HResultOK(DataRow dic) { try { Stopwatch timer = new Stopwatch(); timer.Start(); CustomWriteLog("2.1.开始ok:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); bool flag = false; string HBadCodeSN = dic["HBarCode"].ToString(); HBadCodeSN = TM_ZH(HBadCodeSN); int num = SNHBardCodeList(HBadCodeSN); CustomWriteLog("2.2.条码生成:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (num == 0) { flag = getOutBillAdd(dic, HBadCodeSN, "OK"); } else if (num == 1) { //判断这个条码之前的状态是否为NG DataSet ds = oCN.RunProcReturn(@"select * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' and HCreateTime<'" + dic["HCreateTime"].ToString() + "' and HResult='NG'", "Sb_EquipMentCollection_SN"); //查询出站单是否包含条码 // DataSet ds1 = oCN.RunProcReturn(@"select a.HSourceID,a.HProcID,* from Sc_StationOutBillMain a WITH(NOLOCK) //inner join Sc_StationOutBillSub_SN sn WITH(NOLOCK) on a.HInterID=sn.HInterID //left join Gy_Source s WITH(NOLOCK) on a.HSourceID=s.HItemID //left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID //where p.HNumber='" + dic["HProcNumber"].ToString() + "' and sn.HBarCode='" + HBadCodeSN + "'", "Sc_StationOutBillSub_SN"); DataSet ds1 = oCN.RunProcReturn(@"select a.HProcID from Sc_StationOutBillMain a WITH(NOLOCK) inner join Sc_StationOutBillSub_SN sn WITH(NOLOCK) on a.HInterID=sn.HInterID left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID where p.HNumber='" + dic["HProcNumber"].ToString() + "' and sn.HBarCode='" + HBadCodeSN + "'", "Sc_StationOutBillSub_SN"); if (ds.Tables[0].Rows.Count > 0 && ds1.Tables[0].Rows.Count == 0) { flag = getOKOutBillAdd(dic, HBadCodeSN, "OK"); } else { if (ds1.Tables[0].Rows.Count > 0) { flag = true; //oCN.RollBack(); } else { flag = getOutBillAdd(dic, HBadCodeSN, "OK"); } } } else if (num == 2) { flag = false; } CustomWriteLog("2.5.结束计时:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); timer.Stop();//结束计时 return flag; } catch (Exception e) { oCN.RollBack(); string HBadCodeSN = dic["HBarCode"].ToString(); CustomWriteLog("条码:" + HBadCodeSN + ",错误原因:" + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return false; } } public bool HResultNG(DataRow dic) { try { bool flag = false; int num = 0; string HBadCodeSN = dic["HBarCode"].ToString(); HBadCodeSN = TM_ZH(HBadCodeSN); num = SNHBardCodeList(HBadCodeSN); if (num == 0 || num == 1) { flag = getOutBillAdd(dic, HBadCodeSN, "NG"); if (flag) { //新增不良汇报 flag = getBadBillAdd(dic); //反写条码状态 oCN.RunProc("update Gy_BarCodeBill set HStatus='不良',HRemark='" + dic["HType"].ToString() + "' where HBarCode='" + HBadCodeSN + "'"); } } else if (num == 2) { flag = false; } return flag; } catch (Exception e) { //回滚事务 oCN.RollBack(); string HBadCodeSN = dic["HBarCode"].ToString(); CustomWriteLog("条码:" + HBadCodeSN + ",错误原因:"+e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return false; } } //新增出站汇报单 public bool getOutBillAdd(DataRow dic, string HBadCodeSN, string HResult) { try { Stopwatch timer = new Stopwatch(); timer.Start(); CustomWriteLog("2.1.1.出站单新增开始:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //获取绑定流转卡 DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); string HProcExchBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString(); string HProcNumber = dic["HProcNumber"].ToString(); CustomWriteLog("2.1.2.绑定流转卡:"+ HProcNumber+"----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); ds = oCN.RunProcReturn("select * from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); long HSourceID = 0; if (ds.Tables[0].Rows.Count != 0) { HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID } CustomWriteLog("2.1.3.获取生产资源:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //查询职员 ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); long HEmpIDs = 0; string HEmpName = ""; if (ds.Tables[0].Rows.Count != 0) { HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID HEmpName = ds.Tables[0].Rows[0]["HName"].ToString(); } CustomWriteLog("2.1.4.查询职员信息:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); long HDeptID = 0; long HPRDOrgIDs = 0; string sReturn = ""; if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") { HDeptID = 389505; HPRDOrgIDs = 100199; } else { //ds = oCN.RunProcReturn("select * from Gy_Department where HNumber='" + dic["HDeptNumber"].ToString() + "' ", "Gy_Department"); //if (ds.Tables[0].Rows.Count != 0) //{ // HDeptID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产部门 //} HDeptID = 0; } CustomWriteLog("2.1.5.获取客户信息:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); ds = oCN.RunProcReturn(@"select a.HWorkShopID,b.HProcNo,b.HProcID,a.HMaterID,a.HQty,a.HInterID,HEntryID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo,b.HCenterID from Sc_ProcessExchangeBillMain a WITH(NOLOCK) inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID left join Gy_Process p WITH(NOLOCK) on b.HProcID=p.HItemID where a.HBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "'", "Sc_ProcessExchangeBillMain"); CustomWriteLog("2.1.6.查询流转卡信息:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); string sExeReturnInfo = ""; long HMainInterID = 0; string BillType = "3791"; string HBillSubType = "3791"; string HWorkShopID= ds.Tables[0].Rows[0]["HWorkShopID"].ToString(); int HBillStatus = 1; string HMaker = HEmpName;//制单人 string HMouldNum = "";//模穴号 int HYear = DateTime.Now.Year; double HPeriod = DateTime.Now.Month; string HRemark = "";//备注 string HSourceName = "";//生产资源名称 double HPieceQty = double.Parse(ds.Tables[0].Rows[0]["HQty"].ToString());//进站PCS数 double HWasterQty = 0;//报废数量 double HPlanPieceQty = 0;//进站PNL数 double HBadPNL = 0;//报废PNL数 long HICMOInterID = long.Parse(ds.Tables[0].Rows[0]["HICMOInterID"].ToString());//任务单ID long HICMOEntryID = long.Parse(ds.Tables[0].Rows[0]["HICMOEntryID"].ToString());//任务单ID string HICMOBillNo = ds.Tables[0].Rows[0]["HICMOBillNo"].ToString();//任务单 int HProcPlanInterID = 0; int HProcPlanEntryID = 0; string HProcPlanBillNo = ""; long HProcExchInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); long HProcExchEntryID = long.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()); long HMaterID = long.Parse(ds.Tables[0].Rows[0]["HMaterID"].ToString());//产品ID long HProcID = long.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString());//当前工序ID double HICMOQty = double.Parse(ds.Tables[0].Rows[0]["HQty"].ToString());//任务单数量 double HPlanQty = double.Parse(ds.Tables[0].Rows[0]["HQty"].ToString());//移交PNL数 DateTime HStationOutTime = DateTime.Now;//汇报时间 long HPayProcID = 0;//核算工序ID long HGroupID = 22;//班组ID 白班 long HEmpID = HEmpIDs;//操作员ID long HEmpID2 = HEmpIDs;////操作员2ID string HBarCode = HProcExchBillNo;//条形码 string HAddr = ""; string HBarCodeMaker = ""; long HSourceID2 = 0;//生产资源2ID long HSourceID3 = 0;//生产资源3ID long HSourceID4 = 0;//生产资源4ID long HSourceID5 = 0;//生产资源5ID long HSupID = 0; double HQty = 0;//合格数量 double HPrice = 0; double HMoney = 0; double HBadCount = 0;//不良数量 long HCenterID = long.Parse(ds.Tables[0].Rows[0]["HCenterID"].ToString());//工作中心ID string HProcNo = ds.Tables[0].Rows[0]["HProcNo"].ToString();//流水号 string HOrderProcNO = "";//订单跟踪号 string HSourceNameList = "";//设备清单 string HMainSourceBillType = "3790"; bool HLastSubProc = false;//转下工序 long HEmpID3 = 0;//操作员3ID long HEmpID4 = 0;//操作员4ID long HEmpID5 = 0;//操作员5ID double HDSQty = 0;//折弯刀数 double HChongQty = 0;//NCT冲次数 double HPriceRate = 0;//系数 double HWorkTimes = 0;//工时 long HQCCheckID = 0;//检验员ID long HPRDOrgID = HPRDOrgIDs;//组织ID double HmaterOutqty = 0;//白坯发布 double HProcPriceRate = 0;//工价系数 int HTemporaryAreaID = 0;//暂放区 long HInterID = 0; string HBillNo = ""; int HShiftsID = 0; CustomWriteLog("2.1.7给字段赋值 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); DataSet set= oCN.RunProcReturn("exec h_p_Gy_GetWorkShiftInfo " + HWorkShopID + "," + HCenterID, "h_p_Gy_GetWorkShiftInfo"); if (set.Tables[0].Rows.Count > 0) { HShiftsID = int.Parse(set.Tables[0].Rows[0]["HInterID"].ToString()); } CustomWriteLog("2.1.8获取班次信息 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //ds = oCN.RunProcReturn("exec h_p_Sc_SNBarcodeProcCtrl_S '" + HBadCodeSN + "'," + HProcID, "h_v_Gy_QualifiedRecordsList"); //if (ds.Tables[0].Rows.Count == 0) //{ // oCN.RollBack(); // CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + ",工序控制查无数据!", DateTime.Now.ToString("yyyy-MM-dd")); // return false; //} //else if (ds.Tables[0].Rows[0]["HBack"].ToString() == "2") //{ // oCN.RollBack(); // CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + "," + ds.Tables[0].Rows[0]["HBackRemark"].ToString() + "!", DateTime.Now.ToString("yyyy-MM-dd")); // return false; //} //判断当前流转卡的出站单 是否有数据 ds = oCN.RunProcReturn(@"select * from Sc_StationOutBillMain a WITH(NOLOCK) left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID where HProcExchBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "' and CONVERT(varchar(10),HDate,20) ='" + DateTime.Now.ToString("yyyy-MM-dd") + "'", "Sc_StationOutBillMain"); CustomWriteLog("2.1.9获取是否有出站单 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (ds.Tables[0].Rows.Count != 0) { HInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();//递入type得到的单据号 } if (ds.Tables[0].Rows.Count == 0) { HInterID = CreateBillID("3791", ref sExeReturnInfo);//递入type得到的单据ID HBillNo = CreateBillCode_Prod("3791", ref sExeReturnInfo, true);//递入type得到的单据号 long HMainSourceInterID = HInterID;//递入type得到的单据ID string HMainSourceBillNo = HBillNo;//递入type得到的单据号 oCN.RunProc("Insert Into Sc_StationOutBillMain " + "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate,HMouldNum" + ",HYear,HPeriod,HRemark,HSourceName,HPieceQty,HWasterQty,HPlanPieceQty,HBadPNL" + ",HICMOInterID,HICMOBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID" + ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationOutTime,HSourceID,HPayProcID" + ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate,HSourceID2,HSourceID3,HSourceID4,HSourceID5" + ",HSupID,HQty,HPrice,HMoney,HBadCount,HCenterID,HProcNo,HOrderProcNO,HSourceNameList" + ",HMainSourceInterID,HMainSourceBillNo,HMainSourceBillType,HLastSubProc" + ",HEmpID2,HEmpID3,HEmpID4,HEmpID5,HDSQty,HChongQty,HPriceRate,HWorkTimes,HQCCheckID,HMainInterID,HPRDOrgID" + ",HmaterOutqty,HProcPriceRate,HTemporaryAreaID,HShiftsID" + ") " + " values('" + BillType + "','" + HBillSubType + "'," + HInterID + ",'" + HBillNo + "'," + HBillStatus + ",getdate(),'" + HMaker + "',getdate(),'" + HMouldNum + "'" + "," + HYear + "," + HPeriod + ",'" + HRemark + "','" + HSourceName + "'," + HPieceQty + "," + HWasterQty + "," + HPlanPieceQty + "," + HBadPNL + "," + HICMOInterID + ",'" + HICMOBillNo + "'," + HProcPlanInterID + "," + HProcPlanEntryID + ",'" + HProcPlanBillNo + "'," + HProcExchInterID + "," + HProcExchEntryID + ",'" + HProcExchBillNo + "'," + HMaterID + "," + HProcID + "," + HICMOQty + "," + HPlanQty + ",getdate()," + HSourceID + "," + HPayProcID + "," + HGroupID + "," + HDeptID + "," + HEmpID + ",'" + HBarCode + "','" + HAddr + "','" + HBarCodeMaker + "',getdate()" + "," + HSourceID2 + "," + HSourceID3 + "," + HSourceID4 + "," + HSourceID5 + "," + HSupID + "," + HQty + "," + HPrice + "," + HMoney + "," + HBadCount + "," + HCenterID + "," + HProcNo + ",'" + HOrderProcNO + "'" + ",'" + HSourceNameList + "'" + "," + HMainSourceInterID + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'," + Convert.ToString(HLastSubProc ? 1 : 0) + "," + HEmpID2 + "," + HEmpID3 + "," + HEmpID4 + "," + HEmpID5 + "," + HDSQty + "," + HChongQty + "," + HPriceRate + "," + HWorkTimes + "," + HQCCheckID + "," + HMainInterID + "," + HPRDOrgID + "," + HmaterOutqty + "," + HProcPriceRate + "," + HTemporaryAreaID + ","+ HShiftsID + ") "); } CustomWriteLog("2.1.10 出站单新增 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (HResult == "OK") { CustomWriteLog("2.1.11 条码反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); ds = oCN.RunProcReturn("select * from Sc_StationOutBillSub_SN WITH(NOLOCK) where HInterID='" + HInterID + "' order by HEntryID desc", "Sc_StationOutBillSub_SN"); string HMakeTime = dic["HCreateTime"].ToString(); oCN.RunProc($@"insert into Sc_StationOutBillSub_SN(HInterID,HBillNo_bak,HEntryID,HBarCode,HBarCodeQty,HMakeTime,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney) values({ HInterID}, '{ HBillNo}', {(ds.Tables[0].Rows.Count == 0 ? 1 : int.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()) + 1)}, '{HBadCodeSN}', 1, '"+ HMakeTime + "', '', " + HProcExchInterID + "," + HProcExchEntryID + ", '" + HProcExchBillNo + "', '', 0, 0)"); CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcNumber + ",出站时间:" + HMakeTime, "TM" + DateTime.Now.ToString("yyyy-MM-dd")); //反写工序出站单的合格数量 oCN.RunProc("update Sc_StationOutBillMain set HQty+=1 where HInterID='" + HInterID + "'"); CustomWriteLog("2.1.12 条码反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); } else if (HResult == "NG") { CustomWriteLog("2.1.13 不合格反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); ds = oCN.RunProcReturn("select * from Sc_QualityReportBillSub WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_QualityReportBillSub"); if (ds.Tables[0].Rows.Count > 0) { string HBadDate = ds.Tables[0].Rows[0]["HMakeDate"].ToString(); ds = oCN.RunProcReturn("select * from Sc_SourceLineRepairBillMain WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_SourceLineRepairBillMain"); if (ds.Tables[0].Rows.Count > 0) { string HRepairDate = ds.Tables[0].Rows[0]["HMakeDate"].ToString(); if (DateTime.Parse(HBadDate) < DateTime.Parse(HRepairDate)) { //反写工序出站单的不良数量 oCN.RunProc("update Sc_StationOutBillMain set HBadCount+=1,HWasterQty_Work+=1 where HInterID='" + HInterID + "'"); } } } else { //反写工序出站单的不良数量 oCN.RunProc("update Sc_StationOutBillMain set HBadCount+=1,HWasterQty_Work+=1 where HInterID='" + HInterID + "'"); } CustomWriteLog("2.1.14 不合格反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); } else { oCN.RollBack(); CustomWriteLog("结果不为OK或NG!", DateTime.Now.ToString("yyyy-MM-dd")); return false; } // //查询出站数量是否超过流转卡数量 // ds = oCN.RunProcReturn($@"select (b.HQty -sum(isnull(ou.HQty,0))-sum(isnull(ou.HBadCount,0))) HQty from Sc_ProcessExchangeBillSub b WITH(NOLOCK) //left join Sc_StationOutBillMain ou WITH(NOLOCK) on b.HInterID=ou.HProcExchInterID and b.HEntryID=ou.HProcExchEntryID //where b.HInterID={HProcExchInterID} and b.HEntryID={HProcExchEntryID} //group by b.HInterID,b.HEntryID,b.HQty", "Sc_ProcessExchangeBill_Out"); // if (double.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0) // { // oCN.RollBack(); // CustomWriteLog("流转卡:"+ HProcExchBillNo + ",出站数量超过流转卡数量!", DateTime.Now.ToString("yyyy-MM-dd")); // return false; // } CustomWriteLog("2.1.15 反写结束 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //增加工序判断 if (HProcNumber == "013") { return true; } CustomWriteLog("2.1.16 工艺参数绑定 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); bool flag = false; flag = AddXt_XtRoutBill(HInterID, HBillNo, HBadCodeSN); if (!flag) { oCN.RollBack(); CustomWriteLog("系统参数保存失败,条码:" + HBadCodeSN, DateTime.Now.ToString("yyyy-MM-dd")); return false; } CustomWriteLog("2.1.17 工艺参数绑定结束 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //增加产线组装追溯单 DataSet dataSet = oCN.RunProcReturn("exec h_p_Gy_BarCodeBillBomList '" + HProcExchBillNo + "'," + HProcID, "h_p_Gy_BarCodeBillBomList"); CustomWriteLog("2.1.18 产线组装追溯单查询 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); if (dataSet.Tables[0].Rows.Count > 0) { CustomWriteLog("2.1.19 产线组装追溯单数量判断 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //判配件数量是否等于0 for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { double SYHQty = double.Parse(dataSet.Tables[0].Rows[i]["配件数量"].ToString()); string HMaterNamePJ = dataSet.Tables[0].Rows[i]["配件代码"].ToString(); string HMaterBarCode = dataSet.Tables[0].Rows[i]["HBarCode"].ToString(); if (SYHQty == 0) { oCN.RollBack(); CustomWriteLog("配件条码:"+ HMaterBarCode + ",配件代码:" + HMaterNamePJ + ",数量为0!", DateTime.Now.ToString("yyyy-MM-dd")); return false; } } CustomWriteLog("2.1.20 产线组装追溯单数量判断结束 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); //查询职员 ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); string HMakers = ""; if (ds.Tables[0].Rows.Count != 0) { HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID HMakers = ds.Tables[0].Rows[0]["HName"].ToString(); } CustomWriteLog("2.1.21 职员查询 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); Int64 HInterID1 = CreateBillID("3727", ref sExeReturnInfo); string HBillNo1 = CreateBillCode_Prod("3727", ref sExeReturnInfo, true); //保存生产组装单主表 string sql = $@"Insert Into Sc_AssemblyBillMain(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate ,HBillNo,HBillStatus,HMaker,HMakeDate,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo ,HICMOInterID,HICMOBillNo,HBarCode_P,HMaterID,HUnitID,HAssemblyStatus,HProdOrgID) values('{DateTime.Now.Year}','{DateTime.Now.Month}','3727','3727',{HInterID1},getdate() ,'{HBillNo1}','1','{HMakers}',getdate(),{HProcExchInterID},{HProcExchEntryID},'{HProcExchBillNo}' ,{HICMOInterID},'{HICMOBillNo}','{HBadCodeSN}',{HMaterID},0,'汇报',{HPRDOrgIDs})"; oCN.RunProc(sql); CustomWriteLog("2.1.22 保存主表 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { string HMaterIDs = dataSet.Tables[0].Rows[i]["HMaterID"].ToString(); string HBarCodes = dataSet.Tables[0].Rows[i]["HBarCode"].ToString(); //子表存储 string sq2 = $@"Insert Into Sc_AssemblyBillSub(HInterID,HBillNo_bak,HEntryID,HSourceInterID,HSourceEntryID,HSourceBillNo ,HSourceBillType,HMaterID,HSourceID,HEquipID,HUnitID,HQty ,HGroupID,HWorkerID,HScanDate,HBarCode,HBarCode_P,HSNNumber) values({HInterID1},'{HBillNo1}',{(i + 1)},0,0,'' ,'',{ HMaterIDs},0,0,0,1 ,0,0,getdate(),'{HBarCodes}','{HBadCodeSN}','') "; oCN.RunProc(sq2); } CustomWriteLog("2.1.23 保存子表 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); } CustomWriteLog("2.1.24计时器结束 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd")); timer.Stop();//结束计时 return true; } catch (Exception e) { oCN.RollBack(); CustomWriteLog(e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return false; } } //新增返修OK出站汇报单 public bool getOKOutBillAdd(DataRow dic, string HBadCodeSN, string HResult) { try { //获取绑定流转卡 DataSet ds = oCN.RunProcReturn(@"select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); string HProcExchBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString(); string HProcNumber = dic["HProcNumber"].ToString(); ds = oCN.RunProcReturn("select HItemID from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); long HSourceID = 0; if (ds.Tables[0].Rows.Count != 0) { HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID } //查询职员 ds = oCN.RunProcReturn("select HItemID from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); long HEmpIDs = 0; if (ds.Tables[0].Rows.Count != 0) { HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID } long HDeptID = 0; long HPRDOrgIDs = 0; string sReturn = ""; if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") { HDeptID = 389505; HPRDOrgIDs = 100199; } else { //ds = oCN.RunProcReturn("select * from Gy_Department where HNumber='" + dic["HDeptNumber"].ToString() + "' ", "Gy_Department"); //if (ds.Tables[0].Rows.Count != 0) //{ // HDeptID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产部门 //} HDeptID = 0; } ds = oCN.RunProcReturn(@"select b.HProcNo,b.HProcID,a.HMaterID,a.HQty,a.HInterID,HEntryID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo from Sc_ProcessExchangeBillMain a WITH(NOLOCK) inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID left join Gy_Process p WITH(NOLOCK) on b.HProcID=p.HItemID where a.HBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "'", "Sc_ProcessExchangeBillMain"); long HICMOInterID = long.Parse(ds.Tables[0].Rows[0]["HICMOInterID"].ToString());//任务单ID long HICMOEntryID = long.Parse(ds.Tables[0].Rows[0]["HICMOEntryID"].ToString());//任务单ID string HICMOBillNo = ds.Tables[0].Rows[0]["HICMOBillNo"].ToString();//任务单 long HProcExchInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); long HProcExchEntryID = long.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()); long HMaterID = long.Parse(ds.Tables[0].Rows[0]["HMaterID"].ToString());//产品ID long HProcID = long.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString());//当前工序ID long HInterID = 0; string HBillNo = ""; //ds = oCN.RunProcReturn("exec h_p_Sc_SNBarcodeProcCtrl_S '" + HBadCodeSN + "'," + HProcID, "h_v_Gy_QualifiedRecordsList"); //if (ds.Tables[0].Rows.Count == 0) //{ // oCN.RollBack(); // CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + ",工序控制查无数据!", DateTime.Now.ToString("yyyy-MM-dd")); // return false; //} //else if (ds.Tables[0].Rows[0]["HBack"].ToString() == "2") //{ // oCN.RollBack(); // CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + "," + ds.Tables[0].Rows[0]["HBackRemark"].ToString() + "!", DateTime.Now.ToString("yyyy-MM-dd")); // return false; //} ds = oCN.RunProcReturn("select HDate from Sc_AssemblyBillMain WITH(NOLOCK) where HMainSourceInterID=" + HProcExchInterID + " and HMainSourceEntryID=" + HProcExchEntryID, "Sc_AssemblyBillMain"); DateTime HDate=DateTime.Now; //当产品没有配件的时候 查询 不良记录 if (ds.Tables[0].Rows.Count == 0) { ds = oCN.RunProcReturn("select HMakeDate from Sc_QualityReportBillSub WITH(NOLOCK) where HProcExchInterID=" + HProcExchInterID + " and HProcExchEntryID=" + HProcExchEntryID+ " and HBarCode='" + HBadCodeSN + "'", "Sc_AssemblyBillMain"); HDate = DateTime.Parse(ds.Tables[0].Rows[0]["HMakeDate"].ToString()); } else { HDate = DateTime.Parse(ds.Tables[0].Rows[0]["HDate"].ToString()); } //查询是否有返修记录 ds = oCN.RunProcReturn(@"select a.HBarCode,a.HProcess,b.HSourceInterID,b.HSourceEntryID,b.HRepairResult from Sc_SourceLineRepairBillMain a WITH(NOLOCK) inner join Sc_SourceLineRepairBillSub b WITH(NOLOCK) on a.HInterID = b.HInterID where a.HBarCode = '" + HBadCodeSN + "' and a.HProcess ="+ HProcID + " and b.HSourceInterID ="+ HProcExchInterID + " " + "and b.HSourceEntryID="+ HProcExchEntryID + " and b.HRepairResult = 'OK'", "Sc_SourceLineRepairBillMain"); if (ds.Tables[0].Rows.Count == 0) { oCN.RollBack(); CustomWriteLog("条码:" + HBadCodeSN + ",无返修记录", DateTime.Now.ToString("yyyy-MM-dd")); return false; } //判断当前流转卡的出站单 是否有数据 ds = oCN.RunProcReturn(@"select HInterID,HBillNo from Sc_StationOutBillMain a WITH(NOLOCK) left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID where HProcExchBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "' and CONVERT(varchar(10),HDate,20) ='" + HDate.ToString("yyyy-MM-dd") + "'", "Sc_StationOutBillMain"); if (ds.Tables[0].Rows.Count != 0) { HInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();//递入type得到的单据号 } if (HResult == "OK") { ds = oCN.RunProcReturn("select HInterID,HEntryID from Sc_StationOutBillSub_SN WITH(NOLOCK) where HInterID='" + HInterID + "' order by HEntryID desc", "Sc_StationOutBillSub_SN"); string HMakeTime = dic["HCreateTime"].ToString(); oCN.RunProc($@"insert into Sc_StationOutBillSub_SN(HInterID,HBillNo_bak,HEntryID,HBarCode,HBarCodeQty,HMakeTime,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney) values({ HInterID}, '{ HBillNo}', {(ds.Tables[0].Rows.Count == 0 ? 1 : int.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()) + 1)}, '{HBadCodeSN}', 1, '" + HMakeTime + "', '', " + HProcExchInterID + "," + HProcExchEntryID + ", '" + HProcExchBillNo + "', '', 0, 0)"); CustomWriteLog("条码:" + HBadCodeSN + "工序:"+ HProcNumber + ",出站时间:" + HMakeTime, "TM" + DateTime.Now.ToString("yyyy-MM-dd")); //反写工序出站单的合格数量 //oCN.RunProc("update Sc_StationOutBillMain set HQty+=1,HBadCount-=1 where HInterID='" + HInterID + "'"); oCN.RunProc("update Sc_StationOutBillMain set HQty+=1 where HInterID='" + HInterID + "'"); //反写条码状态 oCN.RunProc("update Gy_BarCodeBill set HStatus='' where HBarCode='" + HBadCodeSN + "'"); } else { oCN.RollBack(); CustomWriteLog("结果不为OK!", DateTime.Now.ToString("yyyy-MM-dd")); return false; } return true; } catch (Exception e) { oCN.RollBack(); CustomWriteLog(e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return false; } } //保存系统参数到出站单 public bool AddXt_XtRoutBill(long HInterID, string HBillNo,string HBadCodeSN) { string sql = ""; try { DataSet ds = oCN.RunProcReturn(@"select a.HProcExchInterID,a.HProcExchEntryID,a.HProcExchBillNo,a.HProcID,p.HNumber from Sc_StationOutBillMain a WITH(NOLOCK) left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID where HInterID=" + HInterID + " and HBillNo='" + HBillNo + "'", "Sc_StationOutBillMain"); string HProcExchInterID = ds.Tables[0].Rows[0]["HProcExchInterID"].ToString(); string HProcExchEntryID = ds.Tables[0].Rows[0]["HProcExchEntryID"].ToString(); string HProcExchBillNo = ds.Tables[0].Rows[0]["HProcExchBillNo"].ToString(); string HProcID = ds.Tables[0].Rows[0]["HProcID"].ToString(); string HProcNum = ds.Tables[0].Rows[0]["HNumber"].ToString(); //注:因为 组装 拍照 时间间隔比较短 所以目前只明确组装工序才可以保存工艺参数 之后如果有其他工序的话 需要增加工序字段 if (HProcID == "88"|| HProcNum=="005") { ds = oCN.RunProcReturn(@"select s.HItemID HMouldID,t.HItemID HTechParamID,HCount,HCreateTime,a.HResult from Sb_EquipMentCollectionTechParam_SN a WITH(NOLOCK) inner join Gy_Source s WITH(NOLOCK) on a.HSourceCode=s.HNumber inner join Gy_TechnologyParameter t WITH(NOLOCK) on a.HType=t.HName where a.HFlag=0 and a.HBarCode='" + HBadCodeSN + "'", "Sb_EquipMentCollectionTechParam_SN"); //注:当前只有一道工序有参数 如果有多道工序的话 需要增加 工序的过滤 if (ds.Tables[0].Rows.Count != 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string HMouldID = ds.Tables[0].Rows[i]["HMouldID"].ToString(); string HTechParamID = ds.Tables[0].Rows[i]["HTechParamID"].ToString(); string HCount = ds.Tables[0].Rows[i]["HCount"].ToString(); string HGetTime = ds.Tables[0].Rows[i]["HCreateTime"].ToString(); string HResult = ds.Tables[0].Rows[i]["HResult"].ToString(); DataSet dataSet = oCN.RunProcReturn("select * from Sc_StationOutBillSub_TechParam WITH(NOLOCK) where HInterID=" + HInterID + " and HBillNo_bak='" + HBillNo + "'", "Sc_StationOutBillSub_TechParam"); sql = "insert into Sc_StationOutBillSub_TechParam(HInterID,HBillNo_bak,HEntryID ,HSourceInterID,HSourceEntryID,HSourceBillNo,HTechParamID,HRelValue,HGetTime,HBarCode,HMouldID,HRemark)" + $"values({HInterID},'{HBillNo}',{(dataSet.Tables[0].Rows.Count + 1)},{HProcExchInterID},{HProcExchEntryID},'{HProcExchBillNo}',{HTechParamID},{HCount},'{HGetTime}','{HBadCodeSN}',{HMouldID},'{HResult}')"; oCN.RunProc(sql); } oCN.RunProc("update Sb_EquipMentCollectionTechParam_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "'"); } } return true; } catch (Exception e) { oCN.RollBack(); CustomWriteLog("工艺参数保存:" + sql + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return false; } } //条码解析 public int SNHBardCodeList(string HBadCodeSN) { try { DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); //判断条码是否存在条码档案 if (ds.Tables[0].Rows.Count > 0) { string HSourceBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString(); DataSet dataTable = oCN.RunProcReturn(@"select * from Sc_ProcessExchangeBillMain where HBillNo='" + HSourceBillNo + "'", "Sc_ProcessExchangeBillMain"); //判断条码的源单 流转卡是否被删除 if (dataTable.Tables[0].Rows.Count == 0) { //如果源单已经删除 则条码也删除重新生成 oCN.RunProc("delete from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'"); //重新查询条码档案 进入新增方法 ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); } } //判断条码是否在数据库里 if (ds.Tables[0].Rows.Count == 0) { //判断长度是否为29位 无尘车间 if (HBadCodeSN.Length == 29) { string str1 = HBadCodeSN.Substring(18, 8); ds = oCN.RunProcReturn("select * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain"); //判断是否能找到对应的流转卡 if (ds.Tables[0].Rows.Count > 0) { string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); get_HBardBillSave(HBadCodeSN, HProcExchBillNo); } else { str1 = HBadCodeSN.Substring(23, 3); ds = oCN.RunProcReturn("select * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain"); //判断是否能找到对应的流转卡 if (ds.Tables[0].Rows.Count > 0) { string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); get_HBardBillSave(HBadCodeSN, HProcExchBillNo); } else { oCN.RollBack(); CustomWriteLog("条码:" + HBadCodeSN + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd")); return 2; } } } //判断长度是否为50位 15车间 else if (HBadCodeSN.Length == 50) { string str1 = HBadCodeSN.Substring(42, 8); ds = oCN.RunProcReturn("select * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain"); //判断是否能找到对应的流转卡 if (ds.Tables[0].Rows.Count > 0) { string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); get_HBardBillSave(HBadCodeSN, HProcExchBillNo); } else { oCN.RollBack(); CustomWriteLog("条码:" + HBadCodeSN + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd")); return 2; } } else { oCN.RollBack(); CustomWriteLog("条码:" + HBadCodeSN + ",长度不等于29位!", DateTime.Now.ToString("yyyy-MM-dd")); return 2; } } else { return 1; } return 0; } catch (Exception e) { oCN.RollBack(); CustomWriteLog("条码:" + HBadCodeSN + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return 2; } } //新增条码数据 public void get_HBardBillSave(string HBarCode, string HProcExchBillNo) { try { //查询流转卡数据 DataSet dataSet = oCN.RunProcReturn(@"select a.HPRDORGID, m.HModel 物料规格,m.HName 名物料称,a.HBillNo,a.HInterID,a.HMaterID,m.HNumber 物料代码,o.HNumber 组织代码,a.HUnitID,u.HNumber 单位代码 from Sc_ProcessExchangeBillMain a WITH(NOLOCK) left join Gy_Material m WITH(NOLOCK) on a.HMaterID=m.HItemID left join Xt_ORGANIZATIONS o WITH(NOLOCK) on a.HPRDORGID=o.HItemID left join Gy_Unit u WITH(NOLOCK) on a.HUnitID=u.HItemID where HBillNo='" + HProcExchBillNo + "'", "Sc_ProcessExchangeBillMain"); //判断流转卡不能为空 if (HBarCode.Trim() == "") { oCN.RollBack(); CustomWriteLog("条码:" + HBarCode + ",流转卡不能为空!", DateTime.Now.ToString("yyyy-MM-dd")); } //日期获取方式 string sDate = DateTime.Now.ToString(); string HWei = "0"; //尾数 string HBarCodeType = "唯一条码"; Int64 HMaterID = int.Parse(dataSet.Tables[0].Rows[0]["HMaterID"].ToString()); Int64 HAuxPropID = 0; Int64 HUnitID = int.Parse(dataSet.Tables[0].Rows[0]["HUnitID"].ToString()); double HQty2 = 1; string HBatchNo2 = ""; Int64 HSupID = 0; Int64 HGroupID = 0; int HPrintQty = 0; Int64 HSourceInterID = int.Parse(dataSet.Tables[0].Rows[0]["HInterID"].ToString()); Int64 HSourceEntryID = 1; string HSourceBillNo = dataSet.Tables[0].Rows[0]["HBillNo"].ToString(); string HSourceBillType = "3772"; Int64 HBarcodeNo = 0; //托号 Int64 HBarcodeQtys = 0; //总托数 Int64 HDeptID = 0; Int64 HWhID = 0; Int64 HSPID = 0; string HRemark = ""; string HMaterName = dataSet.Tables[0].Rows[0]["名物料称"].ToString(); string HMaterModel = dataSet.Tables[0].Rows[0]["物料规格"].ToString(); string HPinfan = ""; string HMTONo = ""; Int64 HCusID = 0; string HCusType = ""; DateTime HEndDate = DateTime.Now; string HWorkLineName = ""; string HSeOrderBillNo = ""; string HInnerBillNo = ""; bool HGiveAwayFlag = false; Int64 HEntryID = 1; string sExeReturnInfo = ""; Int64 HInterID = CreateBillID_Prod("85", ref sExeReturnInfo); int HOrgID = int.Parse(dataSet.Tables[0].Rows[0]["HPRDORGID"].ToString()); string HCoilNO2 = ""; string HFurnaceNO2 = ""; string HFactory2 = ""; decimal HAuxQty2 = 0; string HheatNO2 = ""; oCN.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" + ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" + ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " + ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " + ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " + ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HEntryID " + ",HGiveAwayFlag " + ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo" + ",HProduceDate,HExpiryDate " + ") values (" + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString() + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString() + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HWei + "'" + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'" + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + sDate + "'" + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HSeOrderBillNo + "'," + HInterID.ToString() + "," + HEntryID.ToString() + "" + ", " + BoolToString(HGiveAwayFlag) + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "','','')"); } catch (Exception e) { oCN.RollBack(); CustomWriteLog("条码:" + HBarCode + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); } } //条码补充 public string TM_ZH(string HBadCodeSN) { try { //HBadCodeSN = "P1" + HBadCodeSN; //HBadCodeSN = HBadCodeSN.Substring(0, 13) + ":" + HBadCodeSN.Substring(13, 15); return HBadCodeSN; } catch (Exception e) { CustomWriteLog("条码:" + HBadCodeSN + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); return ""; } } //定时读取数据 private void timer1_Tick(object sender, EventArgs e) { DataTable list = oCN.RunProcReturn("select top 100 * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HFlag=0 order by HCreateTime asc", "Sb_EquipMentCollection_SN").Tables[0]; //循环集合 for (int i = 0; i < list.Rows.Count; i++) { bool flag = false; string HResult = list.Rows[i]["HResult"].ToString(); string HBadCodeSN = list.Rows[i]["HBarCode"].ToString(); string HCreateTime = list.Rows[i]["HCreateTime"].ToString(); //HBadCodeSN = "P1099081-00-E:SDU324292189300"; //HResult = "OK"; //开始事务 oCN.BeginTran(); if (HResult == "OK") { flag = HResultOK(list.Rows[i]); } else if (HResult == "NG") { flag = HResultNG(list.Rows[i]); } if (flag) { oCN.RunProc("update Sb_EquipMentCollection_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "' and HCreateTime='" + HCreateTime + "'"); //结束事务 oCN.Commit(); } } } //新增不良汇报单 public bool getBadBillAdd(DataRow dic) { try { //查询职员 DataSet ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); long HEmpIDs = 0; string HMakers = ""; if (ds.Tables[0].Rows.Count != 0) { HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID HMakers = ds.Tables[0].Rows[0]["HName"].ToString(); } long HDeptID = 0;//车间 string sReturn = ""; if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") { HDeptID = 389505; } else { //ds = oCN.RunProcReturn("select * from Gy_Department where HNumber='" + dic["HDeptNumber"].ToString() + "' ", "Gy_Department"); //if (ds.Tables[0].Rows.Count != 0) //{ // HDeptID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产部门 //} HDeptID = 0; } string HProcExchInterID = "0"; string HProcExchEntryID = "0"; string HProcExchBillNo = ""; long HMaterID = 0; long HProcID = 0; long HUnitID = 0; long HICMOInterID = 0; long HICMOEntryID = 0; string HICMOBillNo = ""; ds = oCN.RunProcReturn(@"select b.HProcID, HMaterID,HUnitID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo,HBillNo,a.HInterID,b.HEntryID,a.HBillNo from Sc_ProcessExchangeBillMain a WITH(NOLOCK) inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID left join Gy_Process p WITH(NOLOCK) on b.HProcID=p.HItemID where HBillNo=(select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + dic["HBarCode"].ToString() + "') and p.HNumber='" + dic["HProcNumber"].ToString() + "' ", "Sc_ProcessExchangeBillMain"); if (ds.Tables[0].Rows.Count != 0) { HMaterID = int.Parse(ds.Tables[0].Rows[0]["HMaterID"].ToString()); HUnitID = int.Parse(ds.Tables[0].Rows[0]["HUnitID"].ToString()); HICMOInterID = int.Parse(ds.Tables[0].Rows[0]["HICMOInterID"].ToString()); HICMOEntryID = int.Parse(ds.Tables[0].Rows[0]["HICMOEntryID"].ToString()); HICMOBillNo = ds.Tables[0].Rows[0]["HICMOBillNo"].ToString(); HProcExchInterID = ds.Tables[0].Rows[0]["HInterID"].ToString(); HProcExchEntryID = ds.Tables[0].Rows[0]["HEntryID"].ToString(); HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); HProcID = int.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString()); } ds = oCN.RunProcReturn("select HItemID from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); long HSourceID = 0; if (ds.Tables[0].Rows.Count != 0) { HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID } string sExeReturnInfo = ""; long HInterID = CreateBillID("3717", ref sExeReturnInfo);//递入type得到的单据ID string HBillNo = CreateBillCode_Prod("3717", ref sExeReturnInfo, true);//递入type得到的单据号 DateTime HDate = DateTime.Parse(dic["HCreateTime"].ToString());//日期 string HRemark = "";//备注 long HEmpID = HEmpIDs;//质检员 long HGroupID = 22;//班组ID 白班 string HMaker = HMakers;//制单人 long HMainSourceInterID = HICMOInterID; long HMainSourceEntryID = HICMOEntryID; string HMainSourceBillNo = HICMOBillNo; //主表 oCN.RunProc(@"Insert Into Sc_QualityReportBillMain (HBillType,HBillSubType,HBillStatus,HInterID,HBillNo,HDate ,HYear,HPeriod,HRemark,HMaker,HMakeDate ,HEmpID,HGroupID,HDeptID,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo) values('3717','3717',1," + HInterID + ",'" + HBillNo + "','" + HDate + "'" + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + HRemark + "','" + HMaker + "',getdate()" + ",'" + HEmpID + "'," + HGroupID + "," + HDeptID + "," + HMainSourceInterID + "," + HMainSourceEntryID + ",'" + HMainSourceBillNo + "') "); string HBarCode = dic["HBarCode"].ToString(); string HMakeDate = dic["HCreateTime"].ToString(); string HResult = dic["HResult"].ToString(); oCN.RunProc($@"Insert into Sc_QualityReportBillSub (HInterID,HENTRYID,HBillNo_bak,HEmpID,HBarCode,HBadReasonID,HAddr,HMaker,HMakeDate ,HMaterID,HUnitID,HRemark,HSourceID,HICMOInterID,HICMOEntryID,HICMOBillNo,HReportType ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney ,HQty,HResult,HProcExchInterID,HProcExchEntryID,HProcExchBillNo,HProcID) values({HInterID},1,'{HBillNo}',{HEmpID},'{HBarCode}',219,'','{HMaker}','{HMakeDate}' ,{HMaterID},{ HUnitID},'',{HSourceID},{ HICMOInterID},{ HICMOEntryID},'{HICMOBillNo}',0 ,0,0,'','',0,0 ,1,'{HResult}',{ HProcExchInterID},{ HProcExchEntryID},'{ HProcExchBillNo}'," + HProcID + ")"); return true; } catch (Exception e) { oCN.RollBack(); CustomWriteLog("报错原因:" + e.Message + "!", DateTime.Now.ToString("yyyy-MM-dd")); return false; } } #region 基础方法 //查询系统参数 public string GetSingleSystemParameter(string sKey, ref string sReturn) { try { //查询主表 DataSet DsSub; //循环 DsSub = oCN.RunProcReturn("Select HValue from Xt_SystemParameter with(nolock) Where HKey='" + sKey + "' ", "Xt_SystemParameter"); if (DsSub == null || DsSub.Tables[0].Rows.Count == 0) { sReturn = "找不到该参数!"; return ""; } else { return isStrNull(DsSub.Tables[0].Rows[0]["HValue"]); } } catch (Exception e) { sReturn = e.Message; throw (e); } } public static Int64 CreateBillID_Prod(string BillCode, ref string sReturn) { try { string BillType = ""; DataSet Ds; DBHelper oCn = new DBHelper(); Int64 lID; Ds = oCn.RunProcReturn("exec h_p_Xt_GetMaxBillID '" + BillCode + "'", "h_p_Xt_GetMaxBillID"); if (Ds == null || Ds.Tables[0].Rows.Count == 0) { lID = -1; } else { lID = isLong(Ds.Tables[0].Rows[0]["HBillNo"]); } oCn.CnClose(); oCn.CnDispose(); oCn = null; Ds = null; return lID; } catch (Exception e) { return -2; } } //判断是否是INT64 public static Int64 isLong(object message) { try { return Convert.ToInt64(message); } catch (Exception e) { return 0; } } //布尔转为字符 public static string BoolToString(object b) { try { if (Convert.ToBoolean(b)) return "1"; else return "0"; } catch (Exception e) { return "0"; } } public static Int64 CreateBillID(string BillCode, ref string sReturn) { string BillType = ""; DataSet Ds; DBHelper oCn = new DBHelper(); Int64 lID; Ds = oCn.RunProcReturn("select * from Gy_BillNumber with (nolock) where BillCode='" + BillCode.Trim() + "'", "Gy_BillNumber"); if (Ds.Tables[0].Rows.Count != 0) { lID = isLong(Ds.Tables[0].Rows[0]["IDNow"].ToString()); BillType = Ds.Tables[0].Rows[0]["BillType"].ToString().Trim(); } else { lID = 0; } //同类型单据 自增1 if (BillType.Trim() != "") { oCn.RunProc("update Gy_BillNumber set IDNow=IDNow+1 where BillType='" + BillType.Trim() + "'"); } oCn.CnClose(); oCn.CnDispose(); oCn = null; Ds = null; return lID; } //得到最大单据号 //得到最大单据号 存储过程 public static string CreateBillCode_Prod(string BillCode, ref string sReturn, bool Add) { try { string BillType = ""; DataSet Ds; DBHelper oCn = new DBHelper(); string sBIllNO; Ds = oCn.RunProcReturn("exec h_p_Xt_GetMaxBillNo '" + BillCode + "'", "h_p_Xt_GetMaxBillNo"); if (Ds == null || Ds.Tables[0].Rows.Count == 0) { sBIllNO = "ERROR"; } else { sBIllNO = isStrNull(Ds.Tables[0].Rows[0]["HBillNo"]); } oCn.CnClose(); oCn.CnDispose(); oCn = null; Ds = null; return sBIllNO; } catch (Exception e) { return "ERROR"; } } //判断是否NULL public static string isStrNull(object message) { try { if (message == null) { return ""; } else { return message.ToString().Trim(); } } catch (Exception e) { return ""; } } private static readonly object lockObj = new object(); //写日志 public static void CustomWriteLog(object obj, string FileName, string filePath = "Vlog", bool isAppend = true) { try { lock (lockObj) { filePath = $@"{filePath}\{FileName}.txt"; filePath = AppDomain.CurrentDomain.BaseDirectory + filePath; if (!System.IO.Directory.Exists(Path.GetDirectoryName(filePath))) { System.IO.Directory.CreateDirectory(Path.GetDirectoryName(filePath)); } bool fileExists = System.IO.File.Exists(filePath); //不存在 则创建该文件 if (!fileExists) { System.IO.File.Create(filePath).Close(); } using (StreamWriter writer = new StreamWriter(filePath, isAppend)) { //存在的时候才写一行 if (fileExists && isAppend) { writer.WriteLine(); } var content = obj is string ? obj : JsonConvert.SerializeObject(obj); writer.WriteLine($"{DateTime.Now} {content}"); } } } catch (Exception ex) { } } #endregion private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确定要关闭吗?", "确认", MessageBoxButtons.YesNo) == DialogResult.No) { e.Cancel = true; } } } }