using DBUtility; using gregn6Lib; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.VisualBasic; namespace WarM.条码打印 { public partial class Gy_PackBarCodeBill_automaticallyByPLC : Form { public Gy_PackBarCodeBill_automaticallyByPLC() { InitializeComponent(); } //工具变量 SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); public DBUtility.ClsPub.Enum_BillStatus BillStatus; //打印相关变量 GridppReport Report; public DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl(); public string UpdatePrintQtyCtl = ""; //条码打印次数更新 //自动组托标记 int isStartListen = 0; //生成托盘条码的变量 int LSHlen = 6; //流水号长度 int LSH = 0; //流水号 string LSH2 = ""; //流水号转换成字符 string TM = ""; //条码 string sTMNumber = ""; //条码自定义前缀 string sDate = ""; //日期 string sYear = ""; //年 string sYear2 = ""; //年 string sPeriod = ""; //月 string sDay = ""; //日 int HQty = 1; //数量 string HBarCodeType = ""; //条码类型 string[] sSQLMul = new string[2]; //用于存储生成托盘条码的sql语句 //组托所需的变量 public Int64 HInterID = 0; //内码 public string HBillNo; //本单单号 public string HBillType = "3783"; //单据类型 public string HBarCode_Pack; //托条码 public const string ModRightName = "CE"; public const string ModRightNamePackUnion = ModRightName + "_PackUnion"; // public Int64 HOrgID = -1; public string HOrgNumber = ""; //定义 public bool ExtMainBill = false; public const int HBarCodeCol = 4; // public string ModName = "85"; public string ModCaption = "托盘条码生成"; public bool BillChange; // public bool grdStatus; public int selectRow = 0; //记录当前组托的条码的源单ID、子ID,用于保证当前托中所有子条码为同一个工单生成 public int HSourceInterID_ICMO = 0; public int HSourceEntryID_ICMO = 0; private void Gy_PackBarCodeBill_automaticallyByPLC_Load(object sender, EventArgs e) { //加载组织信息 Sub_AddOrdList(); } private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_View) { //this.Sub_ShowBill(); } else { this.Sub_AddBill(); } } //新增单据 private void Sub_AddBill() { this.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew; this.Sub_ClearBill();//清空界面 } //清空界面 public void Sub_ClearBill() { ////表体清空 //grdMain.Rows.Clear(); //grdSub.Rows.Clear(); //设置条码类型 下拉列表 cmbHBarCodeType.Items.Clear(); cmbHBarCodeType.Items.Add("托盘条码"); //设置组织 下拉列表 Sub_AddOrdList(); //初始化控件 DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp); //设置组织 下拉列表 并设置值 DataSet Ds1 = oCn.RunProcReturn("select * from Xt_ORGANIZATIONS with(nolock) where HItemID=" + ClsPub.HOrgID, "Xt_ORGANIZATIONS", ref DBUtility.ClsPub.sExeReturnInfo); if (Ds1.Tables[0].Rows.Count != 0) { cmbHOrgID.Text = DBUtility.ClsPub.isStrNull(Ds1.Tables[0].Rows[0]["HName"]); } //设置打印机 下拉列表 PrintDocument fPrintDocument = new PrintDocument(); string defaultPrinter = fPrintDocument.PrinterSettings.PrinterName; comboBox_PrinterParams.Items.Clear(); for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++) { string tmp = PrinterSettings.InstalledPrinters[i]; if (tmp == defaultPrinter) { //tmp = tmp + "(默认)"; } comboBox_PrinterParams.Items.Add(tmp); } //设置产线 下拉列表 DataSet DsSource = oCn.RunProcReturn("select * from Gy_Source ", "Gy_Source"); comboBox_SourceNameParams.Items.Add(""); if (DsSource != null) { comboBox_SourceNameParams.Items.Clear(); comboBox_SourceNameParams.Items.Add(""); for (int i = 0; i < DsSource.Tables[0].Rows.Count; i++) { comboBox_SourceNameParams.Items.Add(DsSource.Tables[0].Rows[i]["HName"]); } } //读取配置文件设置配置 readParams(); //设置托盘条码 条码编号 setPackBarCodeBillData(); ////设置工单信息 //textBox_SourceName.Text = comboBox_SourceNameParams.Text; ////设置制单信息 //txtHMaker.Text = ClsPub.CurUserName; //txtHMakeDate.Text = ""; //txtHChecker.Text = ""; //txtHCheckDate.Text = ""; //txtHCloseMan.Text = ""; //txtHCloseDate.Text = ""; //txtHDeleteMan.Text = ""; //txtHDeleteDate.Text = ""; //txtHUpDater.Text = ""; //txtHUpDateDate.Text = ""; ////设置子表 //initGrid(); //grdList.DataSource = null; //grdBillBarCodeList.DataSource = null; //tabControl1.SelectedIndex = 3; DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name + "grdMain"); DBUtility.Xt_BaseBillFun.initGridList(grdSub, this.Name + "grdSub"); getDisplay_GrdMain(); if (grdMain.Rows.Count > 0 && grdMain.Rows[0].Cells[4].Value!=null) { getPackQty(grdMain.Rows[0].Cells[4].Value.ToString()); } } #region 设置生成托盘条码的数据,并更新表头的托盘条码的条码编号 //设置生成托盘条码的数据,并更新表头的托盘条码的条码编号 private void setPackBarCodeBillData() { //初始化数据 LSH = 0; //流水号 LSH2 = ""; //流水号转换成字符 TM = ""; //条码 sTMNumber = ""; //条码自定义前缀 sDate = ""; //日期 sYear = ""; //年 sYear2 = ""; //年 sPeriod = ""; //月 sDay = ""; //日 HQty = 1; //数量 HBarCodeType = ""; //条码类型 sSQLMul = new string[2]; //用于存储生成托盘条码的sql语句 HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text); //条码类型 //获取组织信息 HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text); HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text); //获取当前产线 long HSourceID = 0; string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "'"; DataSet ds = oCn.RunProcReturn(sql, "Gy_Source"); if (ds != null && ds.Tables[0].Rows.Count > 0) { HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString()); } //获取缓存列表中 当前产线 托盘条码 编号最大的 数据 sql = "select top(1) a.* from Sc_PackUnionBill_Temp as a inner join Gy_BarCodeBill as b on a.HBarCode = b.HBarCode where b.HSourceID = " + HSourceID + " and a.HStockorgID = " + HOrgID + " order by a.HBarCode_Pack desc"; ds = oCn.RunProcReturn(sql, "Sc_PackUnionBill_Temp"); if (ds != null && ds.Tables[0].Rows.Count > 0) //若缓存列表中 当前产线 存在 组托记录,则判断该托盘条码在条码档案中是否存在,存在则已经提交,不存在则未提交。 { string HBarCode_Pack = ds.Tables[0].Rows[0]["HBarCode_Pack"].ToString(); long HBillID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"].ToString()); string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); sql = "select * from Gy_BarCodeBill where HBarCode = '" + HBarCode_Pack + "' and HStockOrgID = " + HOrgID; ds = oCn.RunProcReturn(sql, "Gy_BarCodeBill"); if(ds!=null && ds.Tables[0].Rows.Count > 0) //组托已经提交,重新生成 托盘条码和单据ID、单据号 { //获取条码编号 //获取年 月 日 sDate = dtpHDate.Value.ToShortDateString(); sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2); sYear2 = ClsPub.isDate(sDate).Year.ToString(); sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString(); sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2); sDay = "0" + ClsPub.isDate(sDate).Day.ToString(); sDay = sDay.Substring(sDay.Length - 2, 2); //获取 条码前缀 = 'TP' + 组织代码 + 年 + 月 + 日 sTMNumber = "TP" + HOrgNumber + sYear + sPeriod + sDay; //获取流水号 DataSet Ds = getDataSetBySQL("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo", ref DBUtility.ClsPub.sExeReturnInfo);//获取最大流水号 LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]); LSH = LSH + 1; LSH2 = LSH.ToString(); while (LSH2.Length < LSHlen) //如果流水号小于6位数前面补0 { LSH2 = "0" + LSH2; } //条码编号 = 条码前缀 + 流水号 TM = sTMNumber + LSH2; //刷新最大流水号 sql = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " "; oCn.RunProc(sql); textBox_HPackBarCode.Text = TM; while (true) { textBox_sBillID.Text = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo).ToString(); DataSet getID = oCn.RunProcReturn("select * from Sc_PackUnionBill_Temp where HInterID =" + DBUtility.ClsPub.isLong(textBox_sBillID.Text), "Sc_PackUnionBill_Temp"); if (getID != null && getID.Tables[0].Rows.Count == 0) { break; } } textBox_sBillNo.Text = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); } else ////组托未提交,托盘条码为最晚未组托的 { textBox_HPackBarCode.Text = HBarCode_Pack; textBox_sBillID.Text = HBillID.ToString(); textBox_sBillNo.Text = HBillNo; } } else { //获取条码编号 //获取年 月 日 sDate = dtpHDate.Value.ToShortDateString(); sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2); sYear2 = ClsPub.isDate(sDate).Year.ToString(); sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString(); sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2); sDay = "0" + ClsPub.isDate(sDate).Day.ToString(); sDay = sDay.Substring(sDay.Length - 2, 2); //获取 条码前缀 = 'TP' + 组织代码 + 年 + 月 + 日 sTMNumber = "TP" + HOrgNumber + sYear + sPeriod + sDay; //获取流水号 DataSet Ds = getDataSetBySQL("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo", ref DBUtility.ClsPub.sExeReturnInfo);//获取最大流水号 LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]); LSH = LSH + 1; LSH2 = LSH.ToString(); while (LSH2.Length < LSHlen) //如果流水号小于6位数前面补0 { LSH2 = "0" + LSH2; } //条码编号 = 条码前缀 + 流水号 TM = sTMNumber + LSH2; //刷新最大流水号 sql = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " "; oCn.RunProc(sql); textBox_HPackBarCode.Text = TM; while (true) { textBox_sBillID.Text = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo).ToString(); DataSet getID = oCn.RunProcReturn("select * from Sc_PackUnionBill_Temp where HInterID =" + DBUtility.ClsPub.isLong(textBox_sBillID.Text), "Sc_PackUnionBill_Temp"); if (getID != null && getID.Tables[0].Rows.Count == 0) { break; } } textBox_sBillNo.Text = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); } } //获取最大流水号 public DataSet getDataSetBySQL(string sSQL, string sTable, ref string sErrMsg) { SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); try { DataSet ds = oCn.RunProcReturn(sSQL, sTable); return ds; } catch (Exception e) { sErrMsg = "查询失败!" + e.Message; return null; } } #endregion #region 组托 //未满托生成 按钮 点击事件 private void button_produceByHand_Click(object sender, EventArgs e) { try { if (HQty == 0) { MessageBox.Show("请扫码子条码!"); return; } this.Sub_SaveBill(); //组托成功后,清空组托数量与源单信息 set_clearPackQtyAndSourceInfo(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } //自动组托 private void button_startListen_Click(object sender, EventArgs e) { //if (DBUtility.ClsPub.isLong(textBox_PackQty.Text) == 0) //{ // MessageBox.Show("请设置托条码的最小包装数!"); // return; //} isStartListen = 1; cmbHOrgID.Enabled = false; dtpHDate.Enabled = false; cmbHBarCodeType.Enabled = false; textBox_PackQty.Enabled = false; button_startListen.Enabled = false; button_stopListen.Enabled = true; button_produceByHand.Enabled = false; comboBox_PrinterParams.Enabled = false; textBox_PrintModelParams.Enabled = false; comboBox_SourceNameParams.Enabled = false; button_saveParams.Enabled = false; textBox_HBarCode.Focus(); } //停止组托 private void button_stopListen_Click(object sender, EventArgs e) { isStartListen = 0; cmbHOrgID.Enabled = true; dtpHDate.Enabled = true; cmbHBarCodeType.Enabled = false; textBox_PackQty.Enabled = true; button_startListen.Enabled = true; button_stopListen.Enabled = false; button_produceByHand.Enabled = true; comboBox_PrinterParams.Enabled = true; textBox_PrintModelParams.Enabled = true; comboBox_SourceNameParams.Enabled = true; button_saveParams.Enabled = true; } //自动组托 private void autoProducePackBarCode() { if(isStartListen == 1) { try { if (HQty == DBUtility.ClsPub.isDoule(textBox_PackQty.Text)) { this.Sub_SaveBill(); //设置打印模板,打印 grdSub.Rows[0].Cells[0].Value = "*"; Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + textBox_PrintModelParams.Text + ".grf"); //here . Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord); Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd); if (comboBox_PrinterParams.Text != "") { Report.Printer.PrinterName = comboBox_PrinterParams.Text.Replace("(默认)", ""); } Report.Print(false); //组托成功后,清空组托数量与源单信息 set_clearPackQtyAndSourceInfo(); } }catch(Exception ex) { MessageBox.Show(ex.Message); } } } #region 生成托盘条码 //生成托盘条码 private bool Sub_SaveBill() { try { //获取组织信息 HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text); HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text); if (HOrgID == -1) { throw new Exception("选择组织有错误!"); } if (!Sub_AllowSave())//单据完整性判断 { throw new Exception("单据完整性判断失败!"); } SaveBarCode(); return true; }catch(Exception ex) { string sql = "exec h_p_WMS_PackBarCodeBill_dealDataWhenError '" + textBox_HPackBarCode + "'"; oCn.RunProc(sql); throw new Exception(ex.Message); } } //单据完整性判断 未完成 private bool Sub_AllowSave() { ////必输项目是否为空 //if (ClsPub.isInt(txtHQty.Text) <= 0) //{ // MessageBox.Show("数量必须为大于 0 的整数!"); // return false; //} return true; } //获取生成托盘条码的相关sql语句 private void SaveBarCode() { try { long HSourceID = 0; string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "' "; DataSet ds = oCn.RunProcReturn(sql,"Gy_Source"); if(ds!=null && ds.Tables[0].Rows.Count > 0) { HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString()); } sSQLMul = new string[2]; sSQLMul[0] = "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,HJiaYe " + ",HPressModel,HCusModel,HMaterialModel,HColor,HBarCodeDate " + ",HLogo,HPackageSize,HMaterialJQty,HMaterialMQty,HCustomBatchNo " + ",HSTOCKORGID,HOWNERID,HBeginDate,HSeOrderBillNo,HGBBarCode " + ",POOrderBillNo,HInterID,HInitSourceEntryID,HBarCode_Pack " + ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo " + ",HCustomQty1,HLayerNumber,HCusBarCode,HBarCodeStatus,HSourceID " + ") values (" + "'" + TM + "','" + HBarCodeType + "',0,0,1" + ",'',0,0,'" + ClsPub.CurUserName + "',getdate(),0,1" + ",0,0,'','',''" + "," + HQty.ToString() + ",1,0,0,0,''" + ",0,'','','',''" + ",'','','','','" + sDate + "'" + ",'','',0,0,''" + "," + HOrgID.ToString() + "," + HOrgID.ToString() + ",'','',''" + ",''," + HInterID.ToString() + ",0,'" + TM + "'" + ",'','','',0,''" + ",0,0,'',''," + HSourceID + ")"; sSQLMul[1] = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " "; //判断当前托盘条码是否已经通过临时组托在条码档案中生成了,若已经生成了则不需要在插入 ds = oCn.RunProcReturn("select * from Gy_BarCodeBill where HBarCode = '" + textBox_HPackBarCode.Text + "' and HSTOCKORGID = " + HOrgID, "Gy_BarCodeBill"); if (ds != null && ds.Tables[0].Rows.Count > 0) { sSQLMul[0] = ""; } oCn.BeginTran(); if (getRunProcByMul_Back(sSQLMul, ref DBUtility.ClsPub.sExeReturnInfo)) { //MessageBox.Show("条码生成完毕!"); string sql_getInfo = "exec h_p_WMS_PackBarCodeBill_Auto_getInfo '" + textBox_HPackBarCode.Text + "'"; oCn.RunProc(sql_getInfo); getDisplay_grdSub(); setPackBarCodeBillData(); getDisplay_GrdMain(); oCn.Commit(); } else { //MessageBox.Show("条码生成失败!" + DBUtility.ClsPub.sExeReturnInfo); oCn.RollBack(); } //oCn.Commit(); } catch (Exception e) { oCn.RollBack(); throw new Exception(e.Message); } } //执行生成托盘条码相关的sql语句 public bool getRunProcByMul_Back(string[] sSQL, ref string sErrMsg) { SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); try { oCn.BeginTran(); if (sSQL.Length > 0) { for (int i = 0; i < 1; i++) { if (sSQL[i].Length > 0) { oCn.RunProc(sSQL[i]); } } //上传组托信息到服务器 send(); oCn.Commit(); } else { oCn.Commit(); sErrMsg = "没有数据!"; throw new Exception(sErrMsg); } //oCn.Commit(); return true; } catch (Exception e) { oCn.RollBack(); sErrMsg = e.Message; throw new Exception(sErrMsg); } } #endregion #region 上传功能控件 //上传按钮 private void send() { string err = ""; //if (!CheckModRight(ModRightNamePackUnion, DBUtility.ClsPub.CurUserName, ref err)) //{ // MessageBox.Show(err); // return; //} //if (MessageBox.Show("确定要上传?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel) //{ // return; //} try { LoadData(); }catch(Exception ex) { throw new Exception(ex.Message); } } //判断用户权限 public bool CheckModRight(string ModRightName, string sUserName, ref string sErrMsg) { //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); if (oSystemParameter.ShowBill(ref sErrMsg) == false) { sErrMsg = "获取系统参数失败! " + sErrMsg; return false; } //判断权限 if (!DBUtility.ClsPub.Security_Log(ModRightName, 1, false, sUserName)) { sErrMsg = "您没有权限,请与管理员联系!"; return false; } return true; } //上传到服务器 private void LoadData() { string err = ""; //判断是否数据完整 if (AllowLoadData() == false) { throw new Exception("数据完整性判断失败!"); } try { long sInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text); string sBillNo = textBox_sBillNo.Text.Trim(); string sHBarCode_Pack = textBox_HPackBarCode.Text.Trim(); string sMaker = DBUtility.ClsPub.CurUserName; long HOWNERID = DBUtility.ClsPub.HORGANIZATIONSID; if (set_SavePackUnionBill_Add(sInterID, HBillType, sBillNo, sHBarCode_Pack, sMaker, HOWNERID, ref err)) { //MessageBox.Show("生成生产组托单成功!单据号为:" + textBox_sBillNo.Text); BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew; } else { string error = "生成失败!原因:" + err; throw new Exception(error); } } catch (Exception e) { string error = "单据号:" + textBox_sBillID.Text + ",单据ID:" + textBox_sBillID.Text + ";上传失败!" + e.Message; throw new Exception(error); } } //上传前判断 private bool AllowLoadData() { if (DBUtility.ClsPub.isLong(textBox_sBillID.Text) == 0) { MessageBox.Show("错误的单据内码!"); return false; } if (textBox_sBillNo.Text.Trim() == "") { MessageBox.Show("错误的单据号!"); return false; } return true; } #region 上传生成生产组托单 public bool set_SavePackUnionBill_Add(Int64 HInterID, string HBillType, string HBillNo, string HBarCode_Pack, string HMaker, Int64 HStockOrgID, ref string sErrMsg) { SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); oCn.BeginTran(); try { DataSet ds = oCn.RunProcReturn("exec h_p_Sc_PackUnionBill_Insert_New " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HBarCode_Pack + "','" + HMaker + "'," + HStockOrgID.ToString(), "h_p_Sc_PackUnionBill_Insert_New"); if (ds == null || ds.Tables[0].Rows.Count == 0) { oCn.RollBack(); sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";上传失败!"; throw new Exception(sErrMsg); } else { if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 1) { oCn.RollBack(); sErrMsg = "上传失败,单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]); throw new Exception(sErrMsg); } else { oCn.Commit(); //sErrMsg = "生成生产组托单成功!单据号为:" + HBillNo; return true; } } } catch (Exception e) { oCn.RollBack(); sErrMsg = "生成生产组托单失败!" + e.Message; throw new Exception(sErrMsg); } } #endregion #endregion #endregion #region 扫描子条码 //扫描条码 private void textBox_HBarCode_KeyPress(object sender, KeyPressEventArgs e) { try { if (e.KeyChar == (char)Keys.Return) { //防错判断 if(!judgeIsSameSourceBill(textBox_HBarCode.Text.Trim())) { textBox_HBarCode.Text = ""; return; } SetBarCode_Webs(); textBox_HBarCode.Text = ""; textBox_HBarCode.Focus(); autoProducePackBarCode(); if (grdMain.Rows.Count ==1 ) { getPackQty(grdMain.Rows[0].Cells[4].Value.ToString()); } } } catch (Exception e2) { textBox_HBarCode.Text = ""; textBox_HBarCode.Focus(); MessageBox.Show(e2.Message); } } //将条码信息写入条码出入库临时表 private void SetBarCode_Webs() { string err = ""; try { long sInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text); string sBillNo = textBox_sBillNo.Text.Trim(); string sHBarCode = textBox_HBarCode.Text.Trim(); string sHBarCode_Pack = textBox_HPackBarCode.Text.Trim(); string sMaker = DBUtility.ClsPub.CurUserName; long HOWNERID = DBUtility.ClsPub.HORGANIZATIONSID; if (get_BarCode_PackUnionBill(sHBarCode, sInterID, HBillType, sBillNo, sHBarCode_Pack, sMaker, HOWNERID, ref err)) { getDisplay_GrdMain(); } else { throw new Exception(err); } } catch (Exception e) { string sError = "扫描子条码,写入临时表信息失败!" + e.Message + err; throw new Exception(sError); } } //生产组托单模块 扫描托条码对应单个条码 public bool get_BarCode_PackUnionBill(string HBarCode, Int64 HInterID, string HBillType, string HBillNo, string HBarCode_Pack, string HMaker, Int64 HStockOrgID, ref string sErrMsg) { //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); if (oSystemParameter.ShowBillByOrgID(HStockOrgID, ref sErrMsg) == false) { sErrMsg = "获取系统参数失败! " + sErrMsg; return false; } string sSourceBillTypeCtl = "Y"; //未入库条码进行组托时,进行同源单类型控制(Y为控制) string sSourceBillNoCtl = "Y"; //未入库条码进行组托时,进行同源单控制(Y为控制) sSourceBillTypeCtl = oSystemParameter.omodel.Sc_PackUnionBill_SourceBillTypeCtl; sSourceBillNoCtl = oSystemParameter.omodel.Sc_PackUnionBill_SourceBillNoCtl; SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("exec h_p_WMS_AddBarCode_PackUnionBill '" + HBarCode + "'," + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HBarCode_Pack + "','" + sSourceBillTypeCtl + "','" + sSourceBillNoCtl + "','" + HMaker + "'," + HOrgID.ToString(), "h_p_WMS_AddBarCode_PackUnionBill"); if (ds == null || ds.Tables[0].Rows.Count == 0) { sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";扫描条码判断失败!"; return false; } else { if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 0) { return true; } else { sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]); return false; } } } #endregion #region 返回组托列表信息 //获取grdMain数据 private void getDisplay_GrdMain() { string err = ""; try { DataSet oDs; if (Convert.ToInt64(textBox_sBillID.Text) == 0) { MessageBox.Show("错误的单据id"); return; } oDs = GetBillEntry_Tmp_Pack(Convert.ToInt64(textBox_sBillID.Text), textBox_sBillNo.Text.Trim(), HBillType, ref err); if (oDs == null) { MessageBox.Show(err); return; } grdMain.DataSource = oDs.Tables[0].DefaultView; HQty = oDs.Tables[0].Rows.Count; textBox_currentQty.Text = HQty.ToString(); } catch (Exception e) { MessageBox.Show("获取表体信息失败!" + e.Message + err); } } //返回组托列表信息 public DataSet GetBillEntry_Tmp_Pack(Int64 HInterID, string HBillNo, string HBillType, ref string sErrMsg) { string HPackBarCode = textBox_HPackBarCode.Text; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DataSet DS = oCn.RunProcReturn("exec h_p_WMS_BillEntryTmp_Pack_SWELLAuto " + HInterID.ToString() + ",'" + HBillType + "','" + HPackBarCode + "'", "h_p_WMS_BillEntryTmp_Pack"); return DS; } #endregion #region 返回 需要打印的 托盘条码 private void getDisplay_grdSub() { string err = ""; try { DataSet oDs; //string sql = "select * from h_v_IF_BarCodeBillList where 条码编号 = '" + textBox_HPackBarCode.Text + "' and HStockOrgID = " + HOrgID; string sql = "select * from h_v_IF_BarCodeBillList where 条码编号 = '" + textBox_HPackBarCode.Text + "'"; oDs = oCn.RunProcReturn(sql, "Gy_BarCodeBill"); if (oDs == null) { MessageBox.Show("获取表体信息失败"); return; } grdSub.DataSource = oDs.Tables[0].DefaultView; } catch (Exception e) { MessageBox.Show("获取表体信息失败!" + e.Message + err); } } #endregion #region 配置信息 //保存按钮 点击事件 private void button_saveParams_Click(object sender, EventArgs e) { saveParams(); } #region 配置信息写入与读取 //写入配置参数 private void saveParams() { //判断文件是否存在 if (!File.Exists(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt")) { FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件 StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(textBox_IPParams.Text);//开始写入值 sw.WriteLine(textBox_PortParams.Text); sw.WriteLine(comboBox_SourceNameParams.Text); sw.WriteLine(comboBox_PrinterParams.Text.Replace("(默认)", "")); sw.WriteLine(textBox_PrintModelParams.Text); sw.Close(); fs1.Close(); } else { FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件 StreamWriter sw = new StreamWriter(fs1); sw.WriteLine(textBox_IPParams.Text);//开始写入值 sw.WriteLine(textBox_PortParams.Text); sw.WriteLine(comboBox_SourceNameParams.Text); sw.WriteLine(comboBox_PrinterParams.Text); sw.WriteLine(textBox_PrintModelParams.Text); sw.Close(); fs1.Close(); } MessageBox.Show("保存成功!"); } //读取配置文件 private void readParams() { if (File.Exists(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt")) { //读取文件值并显示到窗体 FileStream fs = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Open, FileAccess.ReadWrite); StreamReader sr = new StreamReader(fs); string line = sr.ReadLine(); int curLine = 0; while (line != null) { if (++curLine == 1) { textBox_IPParams.Text = line; } else if (curLine == 2) { textBox_PortParams.Text = line; } else if (curLine == 3) { for (int i = 0; i < comboBox_SourceNameParams.Items.Count; i++) { if (comboBox_SourceNameParams.Items[i].ToString() == line) { comboBox_SourceNameParams.Text = line; } } if (comboBox_SourceNameParams.Text == "") { comboBox_SourceNameParams.Items.Add(line); comboBox_SourceNameParams.Text = line; } } else if (curLine == 4) { for (int i = 0; i < comboBox_PrinterParams.Items.Count; i++) { if (comboBox_PrinterParams.Items[i].ToString() == line) { comboBox_PrinterParams.Text = line; } } } else if (curLine == 5) { textBox_PrintModelParams.Text = line; } else { } line = sr.ReadLine(); } sr.Close(); fs.Close(); } } #endregion #endregion #region 通用方法 //根据组织名获取组织ID public Int64 get_ORGANIZATIONSIDByName(string HDataCenterName) { try { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("select HItemID from h_v_CLD_ORGANIZATIONSList where Hname='" + HDataCenterName + "'", "h_v_CLD_ORGANIZATIONSList"); if (ds == null || ds.Tables[0].Rows.Count == 0) { return -1; } else { return DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"]); } } catch (Exception e) { return -1; } } //根据组织名获取组织代码 public string get_ORGANIZATIONSNOByName(string HDataCenterName) { try { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("select HNumber from h_v_CLD_ORGANIZATIONSList where Hname='" + HDataCenterName + "'", "h_v_CLD_ORGANIZATIONSList"); if (ds == null || ds.Tables[0].Rows.Count == 0) { return ""; } else { return DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HNumber"]); } } catch (Exception e) { return ""; } } //加载组织信息 private void Sub_AddOrdList() { DataSet ds; DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View(); ds = oClsGy_ORGANIZATIONS_View.GetList(); if (ds == null || ds.Tables[0].Rows.Count == 0) { MessageBox.Show("获取组织失败"); return; } cmbHOrgID.Items.Clear(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { cmbHOrgID.Items.Add(DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[i]["HName"])); } } #endregion #region 打印相关 //打印结束后回填条码打印次数 private void ReportPrintEnd() { if (UpdatePrintQtyCtl == "Y") { oBar.Set_UpdatePrintQty_SD(HInterID); } } //填入单据表头信息 private void ReportBeforePostRecord()// { try { //Report.FieldByName("物料代码").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterNumber2Col].Value); //Report.FieldByName("物料名称").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterName2Col].Value); //Report.FieldByName("规格型号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterModel2Col].Value); ////Report.FieldByName("自定义规格").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HModel2Col].Value); //Report.FieldByName("条码编号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HTMCol].Value); //Report.FieldByName("数量").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HQty2Col].Value); //Report.FieldByName("源单单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSourceBillNoCol].Value); //Report.FieldByName("销售订单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSeOrderBillNo2Col].Value); //Report.FieldByName("生产车间").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HDeptName2Col].Value); //Report.FieldByName("备注").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HRemark2Col].Value); } catch (Exception e) { MessageBox.Show("打印失败!表头:" + e.Message); } } //填入单据表体信息 private void ReportFetchRecordByDataTable() { try { DataTable ds = new DataTable(); BLL.Utility.FillRecordToReport_Sel(Report, grdSub, ds, Fun_GetCol("选择")); } catch (Exception e) { MessageBox.Show("打印失败!表体:" + e.Message); } } private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdSub); } #endregion #region 工具栏 点击事件 //退出 private void tc_Click(object sender, EventArgs e) { this.Close(); } //删除 子条码记录 private void toolStripButton_Delete_Click(object sender, EventArgs e) { deleteGrdMainNote(); if (grdMain.Rows.Count== 0) { set_clearPackQtyAndSourceInfo(); } } #endregion #region 删除功能控件 //删除按钮 private void deleteGrdMainNote() { if (grdMain.SelectedRows != null && grdMain.SelectedRows.Count==1) { //if (MessageBox.Show("确定要删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel) //{ // return; //} //if (MessageBox.Show("删除后将不可恢复,确定要继续操作?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel) //{ // return; //} string pwd = Interaction.InputBox("请输入密码", "删除确认!", "", 100, 100); //点击取消 if(pwd == "") { return; } if(pwd != "123456") { MessageBox.Show("密码错误!"); return; } Delete(); } else { MessageBox.Show("请选择一行记录,进行删除!"); return; } } //删除表体记录 /// /// 删除表体记录 /// private void Delete() { string err = ""; long HInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text); string HBarCode = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[0].Cells[HBarCodeCol].Value); //删除出入库临时表记录 if (set_DelPackUnionBill_Temp_Pack(HInterID, HBarCode, HBillType, ref err)) { MessageBox.Show("删除成功!"); getDisplay_GrdMain(); } else { MessageBox.Show("删除子条码记录失败!" + err); return; } } //删除缓存列表中条码的记录 public bool set_DelPackUnionBill_Temp_Pack(Int64 HInterID, string HBarCode, string HBillType, ref string sErrMsg) { SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); try { oCn.RunProc("Delete from Sc_PackUnionBill_Temp where HInterID=" + HInterID.ToString() + " and HBillType='" + HBillType + "' and HBarCode='" + HBarCode + "' and HPieceQty=1", ref DBUtility.ClsPub.sExeReturnInfo); return true; } catch (Exception e) { sErrMsg = "删除组托记录失败!" + e.Message; return false; } } #endregion #region 临时组托 #region 临时组托 按钮点击事件 private void button_produceTemp_Click(object sender, EventArgs e) { if (HQty == 0) { MessageBox.Show("请扫码子条码!"); return; } this.produceTemp(); //设置打印模板,打印 grdSub.Rows[0].Cells[0].Value = "*"; Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + textBox_PrintModelParams.Text + "_Temp" + ".grf"); //here . Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord); Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd); if (comboBox_PrinterParams.Text != "") { Report.Printer.PrinterName = comboBox_PrinterParams.Text.Replace("(默认)", ""); } Report.Print(false); //组托成功后,清空组托数量与源单信息 set_clearPackQtyAndSourceInfo(); } #endregion #region 临时组托 private void produceTemp() { //判断条码档案中是否已经存在该托条码,若存在,则不需要再创建。重新加载界面即可。 DataSet ds_getPackBarCode; string sql_getPackBarCode = "select * from Gy_BarCodeBill where HBarCode = '" + textBox_HPackBarCode.Text + "'"; ds_getPackBarCode = oCn.RunProcReturn(sql_getPackBarCode, "Gy_BarCodeBill"); if (ds_getPackBarCode != null && ds_getPackBarCode.Tables[0].Rows.Count > 0) { //重新加载界面 getDisplay_grdSub(); setPackBarCodeBillData(); getDisplay_GrdMain(); return; } //获取组织信息 HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text); HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text); //验证组织 if (HOrgID == -1) { MessageBox.Show("选择组织有错误!"); return; } //单据完整性判断 if (!Sub_AllowSave()) { return; } //获取当前产线及产线内码 long HSourceID = 0; string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "' "; DataSet ds = oCn.RunProcReturn(sql, "Gy_Source"); if (ds != null && ds.Tables[0].Rows.Count > 0) { HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString()); } //拼接临时组托时,托条码的生成语句 sSQLMul = new string[2]; sSQLMul[0] = "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,HJiaYe " + ",HPressModel,HCusModel,HMaterialModel,HColor,HBarCodeDate " + ",HLogo,HPackageSize,HMaterialJQty,HMaterialMQty,HCustomBatchNo " + ",HSTOCKORGID,HOWNERID,HBeginDate,HSeOrderBillNo,HGBBarCode " + ",POOrderBillNo,HInterID,HInitSourceEntryID,HBarCode_Pack " + ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo " + ",HCustomQty1,HLayerNumber,HCusBarCode,HBarCodeStatus,HSourceID " + ") values (" + "'" + textBox_HPackBarCode.Text + "','" + HBarCodeType + "',0,0,1" + ",'',0,0,'" + ClsPub.CurUserName + "',getdate(),0,1" + ",0,0,'','',''" + "," + HQty.ToString() + ",1,0,0,0,''" + ",0,'','','',''" + ",'','','','','" + sDate + "'" + ",'','',0,0,''" + "," + HOrgID.ToString() + "," + HOrgID.ToString() + ",'','',''" + ",''," + HInterID.ToString() + ",0,'" + textBox_HPackBarCode.Text + "'" + ",'','','',0,''" + ",0,0,'',''," + HSourceID + ")"; //拼接 更新 托条码流水号 的sql语句 sSQLMul[1] = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " "; if (sSQLMul.Length > 0) { //执行托条码的生成语句与托条码流水号的更新语句 for (int i = 0; i < 1; i++) { oCn.RunProc(sSQLMul[i]); } //重新加载界面 getDisplay_grdSub(); setPackBarCodeBillData(); getDisplay_GrdMain(); } else { MessageBox.Show("没有数据!"); return; } } #endregion #region 托条码 扫码 private void textBox_HPackBarCode__KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { //获取扫描的托条码 string HPackBarCode = textBox_HPackBarCode.Text; //条码类型 HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text); //获取组织信息 HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text); HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text); //声明用于数据库查询的变量 string sql = ""; DataSet ds; //判断 托条码是否已经生成组托单 sql = "select * from Sc_PackUnionBillMain where HBarCode_Pack = '" + HPackBarCode + "'"; ds = oCn.RunProcReturn(sql, "Sc_PackUnionBillMain"); if (ds != null && ds.Tables[0].Rows.Count > 0) { MessageBox.Show("托条码[" + HPackBarCode + "]已经组托!"); return; } //获取当前产线 long HSourceID = 0; sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "'"; ds = oCn.RunProcReturn(sql, "Gy_Source"); if (ds != null && ds.Tables[0].Rows.Count > 0) { HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString()); } //获取缓存列表中 托条码 对应的 组托记录 sql = "select top(1) a.* from Sc_PackUnionBill_Temp as a inner join Gy_BarCodeBill as b on a.HBarCode = b.HBarCode where a.HBarCode_Pack = '" + HPackBarCode + "' and b.HSourceID = " + HSourceID + " and a.HStockorgID = " + HOrgID; //sql = "select top(1) a.* from Sc_PackUnionBill_Temp as a where a.HBarCode_Pack = '" + HPackBarCode + "' and a.HStockorgID = " + HOrgID; ds = oCn.RunProcReturn(sql, "Sc_PackUnionBill_Temp"); if (ds == null || ds.Tables[0].Rows.Count == 0) { MessageBox.Show("缓存列表中未查询到该托条码与子条码的组托记录!"); return; } else { string HBarCode_Pack = ds.Tables[0].Rows[0]["HBarCode_Pack"].ToString(); long HBillID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"].ToString()); string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); textBox_HPackBarCode.Text = HBarCode_Pack; textBox_sBillID.Text = HBillID.ToString(); textBox_sBillNo.Text = HBillNo; getDisplay_GrdMain(); if (grdMain.Rows.Count > 0 && grdMain.Rows[0].Cells[4].Value != null) { getPackQty(grdMain.Rows[0].Cells[4].Value.ToString()); } } } } #endregion #endregion #region 根据条码编号,获取条码中物料所对应的组托数量,同时记录源单主ID、子ID private void getPackQty(string HBarCode) { string sql = "select * from h_v_IF_BarCodeBillList_getPackQty where 条码编号 = '" + HBarCode + "'"; DataSet ds_getPackQty = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList_getPackQty"); if (ds_getPackQty == null || ds_getPackQty.Tables[0].Rows.Count <= 0) { HSourceInterID_ICMO = 0; HSourceEntryID_ICMO = 0; textBox_PackQty.Text = ""; return; } HSourceInterID_ICMO = int.Parse(ds_getPackQty.Tables[0].Rows[0]["HSourceInterID"].ToString()); HSourceEntryID_ICMO = int.Parse(ds_getPackQty.Tables[0].Rows[0]["HSourceEntryID"].ToString()); textBox_PackQty.Text = Double.Parse(ds_getPackQty.Tables[0].Rows[0]["组托数量"].ToString()).ToString(); } #endregion #region 判断当前扫描的条码是否与已经扫描过的条码为同一工单生成的 private bool judgeIsSameSourceBill(string HBarCode) { if (grdMain.Rows.Count == 0) { return true; } else { string sql = "select * from h_v_IF_BarCodeBillList_getPackQty where 条码编号 = '" + HBarCode + "'"; DataSet ds_getPackQty = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList_getPackQty"); if (ds_getPackQty == null || ds_getPackQty.Tables[0].Rows.Count <= 0) { MessageBox.Show("当前条码不存在!"); return false; } else { int HSourceInterID_ICMO_Bak = int.Parse(ds_getPackQty.Tables[0].Rows[0]["HSourceInterID"].ToString()); int HSourceEntryID_ICMO_Bak = int.Parse(ds_getPackQty.Tables[0].Rows[0]["HSourceEntryID"].ToString()); if (HSourceInterID_ICMO != HSourceInterID_ICMO_Bak || HSourceEntryID_ICMO != HSourceEntryID_ICMO_Bak) { MessageBox.Show("当前扫描的条码与之前所扫描的条码工单不一致!"); return false; } else { return true; } } } } #endregion #region 清空 组托数量 与记录的源单主ID、子ID private void set_clearPackQtyAndSourceInfo() { textBox_PackQty.Text = ""; HSourceInterID_ICMO = 0; HSourceEntryID_ICMO = 0; } #endregion } }