using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MISPRO; using GThinking.N_MISPRO.Data; using GThinking.N_MODEL.Page; using GThinking.N_WORKFLOW; using GThinking.N_MODEL.Dialog; using GThinking.N_PUBLIC; using GThinking.N_MISPRO.Utility; using GThinking.N_CONTROL; using System.IO; using System.Data.OleDb; using System.Data.Common; using GThinking.N_MISPROAS; using System.Collections.Generic; using GThinking.N_MISPRO.TableCache; namespace GThinking.N_XLXSBJ { public partial class JGCZBDR : SingleCardBase { JGCZBDRB entity = new JGCZBDRB(); protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860020; this.UMName = "线缆销售报价结构尺重表"; base.CurMaster = Master; base.CurEntity = entity; this.PageHeight = 200; this.PageWidth = 420; Master.EnableAttachBtn = false; Master.EnableCancelBtn = false; Master.EnableCopyBtn = false; Master.EnableDeleteBtn = false; Master.EnableEditBtn = false; Master.EnableInsertBtn = false; Master.EnablePrintBtn = false; Master.EnableRefreshBtn = false; Master.EnableSaveBtn = false; Server.ScriptTimeout = 3600; fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath; if (AppRuntime.BitType == AppBitType.Bit32) fupdPost.Filter = "XLS"; else // AppBitType.Bit64 fupdPost.Filter = "XLS,XLSX"; base.InitPage(); Server.ScriptTimeout = 3600; if (!IsPostBack) { cbxDRNR.ClearItems(); if (CheckModuleInsert("102573000")) { cbxDRNR.Items.Add(new ListItem("报价产品(Km)=型号|规格|标准|电压等级|颜色|物料编码|外径|最小弯曲倍数|导体结构信息|定制项目|材料用量(Kg)", "YL_Km")); cbxDRNR.Items.Add(new ListItem("报价产品(M)=型号|规格|标准|电压等级|颜色|物料编码|外径|最小弯曲倍数|导体结构信息|定制项目|材料用量(Kg)", "YL_M")); lblSM.Text = "外径|最小弯曲倍数|导体结构信息|定制项目栏目可选"; lblSM.Visible = true; } else if (CheckModule("101421012")) { cbxDRNR.Items.Add(new ListItem("报价产品(Km)=型号|规格|标准|电压等级|颜色|物料编码|外径|最小弯曲倍数|导体结构信息|材料用量(Kg)", "YL_Km")); cbxDRNR.Items.Add(new ListItem("报价产品(M)=型号|规格|标准|电压等级|颜色|物料编码|外径|最小弯曲倍数|导体结构信息|材料用量(Kg)", "YL_M")); lblSM.Visible = true; } else { cbxDRNR.Items.Add(new ListItem("报价产品(Km)=型号|规格|标准|电压等级|材料用量(Kg)", "YL_Km")); cbxDRNR.Items.Add(new ListItem("报价产品(M)=型号|规格|标准|电压等级|材料用量(Kg)", "YL_M")); lblSM.Visible = false; } //2019/8/29 LF去除以下两选项 //cbxDRNR.Items.Add(new ListItem("报价产品(Km)=型号|规格|标准|电压等级|材料用量(Kg)|损耗系数(%)", "YLSH_Km")); //cbxDRNR.Items.Add(new ListItem("报价产品( M)=型号|规格|标准|电压等级|材料用量(Kg)|损耗系数(%)", "YLSH_M")); if (PageParam.GetRTrimString("CZBJLDW").Equals("1")) cbxDRNR.SelectedValue = "YL_Km"; else cbxDRNR.SelectedValue = "YL_M"; chkSheet.Checked = false; cbxSheetList.Enabled = false; } } #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { if (fupdPost.FileName.Equals("")) { ShowMessage("请选择需要导入的文件!"); return; } else { if (!txtLastPath.Value.Trim().Equals("")) { if ((fupdPost.FilePath != txtLastPath.Value) && !cbxSheetList.SelectedValue.Trim().Equals("")) { ShowMessage("导入文件已发生变化,请重新指定导入页面!"); chkSheet_CheckedChanged(null, null); return; } } } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); string sJGCZBID = PageParam.GetRTrimString("JGCZBID"); if (PageParam.GetRTrimString("JGCZBID").Equals("")) { Confirm.Register("IsQD", "当前未选择结构尺重表,是否自动生成尺重表?"); Confirm.ShowBtnText = TConfirm.cBtnText.Yes_No; if (Confirm.GetValue("IsQD").Trim().Equals("")) { Confirm.Ask("IsQD"); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("N")) { //表示进行了提示并选择了取消,直接返回或其他处理 Confirm.Clear(); return; } else if (Confirm.GetValue("IsQD").Trim().Equals("Y")) { //表示进行了提示并选择了确认 Confirm.Clear(); sJGCZBID = GetNewID(); sSQL.Clear(); sSQL.Add(@" insert into XLJGCZBML(XLJGCZBML_JGCZBID,XLJGCZBML_JGCZBBBID,XLJGCZBML_JGCZBMC,XLJGCZBML_XLBZBN,XLJGCZBML_DYDJBN, XLJGCZBML_WHRID,XLJGCZBML_WHR,XLJGCZBML_WHSJ,XLJGCZBML_GGHLX,XLJGCZBML_XLXHBN,XLJGCZBML_CPMLID, XLJGCZBML_CZBJLDW,XLJGCZBML_CZBLX,XLJGCZBML_FZR,XLJGCZBML_XLGGDW ) values(:pJGCZBID,'1.0',:pJGCZBMC,'Y','Y',:pWHRID,:pWHR,:pWHSJ,'1','Y','ZZ','1','B' ,:pWHR,'mm2' )"); sSQL.ParamByName("pJGCZBID").Value=sJGCZBID; sSQL.ParamByName("pJGCZBMC").Value = sJGCZBID + "|由系统自动生成"; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); } } //获取的导入类型 string sParamValue = PageParam.GetRTrimString("DRLX"); string sBJCLList = ""; //构造尺重表使用到的报价材料 //lstBJCL允许存储重复的报价材料名称 //使用下标存储对应的材料清单列 List lstBJCL = new List(); lstBJCL.Clear(); try { dberp.BeginTrans(); //CLQDL- BJCLMC -BJCLMCACT Dictionary dicCLMC = new Dictionary(); if (sParamValue.Equals("CLQDL")) { for (int i = 1; i <= 80; i++) { string sCLQDL = "第" + i.ToString().PadLeft(2, '0') + "列"; dicCLMC.Add(sCLQDL, sCLQDL); } } else if (sParamValue.Equals("BJCLMC")) { sSQL.Clear(); sSQL.Add("select XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC"); sSQL.Add(" from XLXSBJCL"); sSQL.Add(" where 1=1 and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' "); sSQL.Add(" order by isnull(XLXSBJCL_TYBZ,'N'),XLXSBJCL_BJCLID"); DataSet dsCL = dberp.OpenDataSet(sSQL); if (dsCL.Tables[0].Rows.Count > 80) { for (int i = 0; i < 80; i++) { string sCLQDL = "第" + Convert.ToString(i + 1).PadLeft(2, '0') + "列"; dicCLMC.Add(sCLQDL, dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim()); } } else { for (int i = 0; i < dsCL.Tables[0].Rows.Count; i++) { string sCLQDL = "第" + Convert.ToString(i + 1).PadLeft(2, '0') + "列"; dicCLMC.Add(sCLQDL, dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim()); } } } else if (sParamValue.Equals("BJCLMCACT")) { sSQL.Clear(); sSQL.Add("select XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC"); sSQL.Add(" from XLXSBJCL"); sSQL.Add(" where 1=1 and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' "); sSQL.Add(" order by isnull(XLXSBJCL_TYBZ,'N'),XLXSBJCL_BJCLID"); DataSet dsCL = dberp.OpenDataSet(sSQL); if (dsCL.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsCL.Tables[0].Rows.Count; i++) { if (!dicCLMC.ContainsKey(dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim())) { dicCLMC.Add(dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim(), dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim()); } } } } string sDRSJ = DateTime.Now.ToString(); if (cbxSheetList.SelectedValue.Trim().Equals("")) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, false, ""); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, "", ref aDataExcel); InsertXLXHID(dberp, sSQL, aDataExcel); XLCPWH( dberp, sSQL, ref aDataExcel); InsertBJCL(dberp, sSQL, aDataExcel, sParamValue, ref dicCLMC); ExcelColumnValid(aDataExcel, dicCLMC, sParamValue, ref lstBJCL, ref sBJCLList); ValidDRNR(sJGCZBID, aDataExcel);//引入涵盖范围的约束 string sFileName = fupdPost.FileName; string sSheetName = GetDefaultSheetName(fupdPost.FilePath); ExecDRSQL(dberp, sSQL, aDataExcel, dicCLMC, sJGCZBID, sDRSJ, sParamValue, lstBJCL, sBJCLList, sFileName, sSheetName); } else { string[] sSheetList = cbxSheetList.SelectedValue.Split(','); for (int i = 0; i < sSheetList.Length; i++) { DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, false, sSheetList[i]); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, sSheetList[i], ref aDataExcel); InsertXLXHID(dberp, sSQL, aDataExcel); XLCPWH(dberp, sSQL, ref aDataExcel); InsertBJCL(dberp, sSQL, aDataExcel, sParamValue,ref dicCLMC); ExcelColumnValid(aDataExcel, dicCLMC, sParamValue, ref lstBJCL, ref sBJCLList); ValidDRNR(sJGCZBID, aDataExcel);//引入涵盖范围的约束 string sFileName = fupdPost.FileName; string sSheetName = sSheetList[i]; ExecDRSQL(dberp, sSQL, aDataExcel, dicCLMC, sJGCZBID, sDRSJ, sParamValue, lstBJCL, sBJCLList, sFileName, sSheetName); } } dberp.CommitTrans(); DialogOperationScript dos = new DialogOperationScript(this); dos.SetOwnerControlValue(PageParam.GetRTrimString("txtCallBackDRSJCID"), sDRSJ); dos.SetOwnerControlValue(PageParam.GetRTrimString("txtCallBackFlagCID"), sParamValue); if (PageParam.ContainsKey("txtCallBackJGCZBIDCID")) dos.SetOwnerControlValue(PageParam.GetRTrimString("txtCallBackJGCZBIDCID"), sJGCZBID); dos.CloseSelf(); dos.Execute(); } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); return; } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } protected void chkSheet_CheckedChanged(object sender, EventArgs e) { if (chkSheet.Checked) { if (fupdPost.FileName.Equals("")) { ShowMessage("请选择需要导入的文件!"); chkSheet.Checked = false; return; } cbxSheetList.Enabled = true; cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; string connStr = GetConnString(fupdPost.FilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); if (sheetNames.Rows[0].Table.Rows.Count == 1) { string sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); cbxSheetList.SelectedValue = sSheetName; } else { bool bAutoSel = false;//需要自动选中sheet页 if (fupdPost.FileName.Equals(PageParam.GetRTrimString("EXCEL"))) bAutoSel = true; for (int i = 0; i < sheetNames.Rows[0].Table.Rows.Count; i++) { string sSheetName = sheetNames.Rows[0].Table.Rows[i]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); cbxSheetList.Items.Add(new ListItem(sSheetName, sSheetName)); if (bAutoSel) { if (sSheetName.Equals(PageParam.GetRTrimString("SHEET").Replace('.','#'))) cbxSheetList.SelectedValue = sSheetName; } } } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } txtLastPath.Value = fupdPost.FilePath; FormAreaUpdate(); } else { cbxSheetList.ClearItems(); cbxSheetList.SelectedValue = ""; cbxSheetList.Enabled = false; FormAreaUpdate(); } } // 根据32/64位运行时返回不同的连接字符串。 private string GetConnString(string sPath) { string conn; if (AppRuntime.BitType == AppBitType.Bit32) { conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; //conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + @";Extended Properties=""Excel 8.0;IMEX=1;ImportMixedTypes=Text"""; } else // AppBitType.Bit64 { conn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + sPath + ";" + "Extended Properties=Excel 8.0;"; } return conn; } #endregion #region 自定义事件 private void ExecDRSQL(TDatabase dberp, TSQL sSQL, DataSet ds, Dictionary dicCLMC, string sJGCZBID, string sDRSJ, string sParamValue, List lstBJCL, string sBJCLList, string sFileName, string sSheetName) { Mac.MacLog.TraceFormat("开始导入尺重表,工号:{0},时间:{1},行数:{2}", tSession.UserId, DateTime.Now, ds.Tables[0].Rows.Count); //导入时间<-->版本号 string sJGCZBBBID = PageParam.GetRTrimString("JGCZBBBID"); if (sJGCZBBBID.Equals("")) sJGCZBBBID = "1.0"; sSQL.Clear(); sSQL.Add("delete from XLJGCZBLM where XLJGCZBLM_JGCZBID=:pJGCZBID"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add("delete from XLJGCZBNR where XLJGCZBNR_JGCZBID=:pJGCZBID"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add("delete from XLXHJGCZBML where XLXHJGCZBML_JGCZBID=:pJGCZBID and XLXHJGCZBML_JGCZBXH>0"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add("delete from XLXHJGCZBNR where XLXHJGCZBNR_JGCZBID=:pJGCZBID"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("清空已导入数据,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); #region 更新XLJGCZBML sSQL.Clear(); sSQL.Add("update XLJGCZBML set "); sSQL.Add("XLJGCZBML_EXCEL=:pEXCEL,"); sSQL.Add("XLJGCZBML_SHEET=:pSHEET,"); sSQL.Add("XLJGCZBML_LMHHS=1,"); sSQL.Add("XLJGCZBML_LMHHZ=1,"); sSQL.Add("XLJGCZBML_NRHHS=2,"); sSQL.Add("XLJGCZBML_NRHHZ=:pNRHHZ,"); sSQL.Add("XLJGCZBML_DRSJ=:pDRSJ"); sSQL.Add(" where XLJGCZBML_JGCZBID=:pJGCZBID"); sSQL.ParamByName("pEXCEL").Value = sFileName; sSQL.ParamByName("pSHEET").Value = sSheetName; sSQL.ParamByName("pNRHHZ").Value = ds.Tables[0].Rows.Count; sSQL.ParamByName("pDRSJ").Value = sDRSJ; sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("更新XLJGCZBML,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); #endregion #region 插入型号、规格、标准、电压等级栏目 //2005语法不支持value(),() sSQL.Clear(); sSQL.Add("insert into XLJGCZBLM("); sSQL.Add("XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_CZBLMMC,"); sSQL.Add("XLJGCZBLM_HLMLX,XLJGCZBLM_ZDLMLX,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,"); sSQL.Add("XLJGCZBLM_WHRID,XLJGCZBLM_WHR,XLJGCZBLM_WHSJ) "); sSQL.Add("values "); sSQL.Add(string.Format("('{0}','{1}','{2}','{3}','{4}','{5}',null,null,'{6}','{7}','{8}') ", sJGCZBID, sJGCZBBBID, "01", "型号", "Z", "2", tSession.UserId, tSession.UserName, DateTime.Now)); dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入型号栏目,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); sSQL.Clear(); sSQL.Add("insert into XLJGCZBLM("); sSQL.Add("XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_CZBLMMC,"); sSQL.Add("XLJGCZBLM_HLMLX,XLJGCZBLM_ZDLMLX,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,"); sSQL.Add("XLJGCZBLM_WHRID,XLJGCZBLM_WHR,XLJGCZBLM_WHSJ) "); sSQL.Add("values "); sSQL.Add(string.Format("('{0}','{1}','{2}','{3}','{4}','{5}',null,null,'{6}','{7}','{8}') ", sJGCZBID, sJGCZBBBID, "02", "规格", "Z", "3", tSession.UserId, tSession.UserName, DateTime.Now)); dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入规格栏目,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); sSQL.Clear(); sSQL.Add("insert into XLJGCZBLM("); sSQL.Add("XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_CZBLMMC,"); sSQL.Add("XLJGCZBLM_HLMLX,XLJGCZBLM_ZDLMLX,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,"); sSQL.Add("XLJGCZBLM_WHRID,XLJGCZBLM_WHR,XLJGCZBLM_WHSJ) "); sSQL.Add("values "); sSQL.Add(string.Format("('{0}','{1}','{2}','{3}','{4}','{5}',null,null,'{6}','{7}','{8}') ", sJGCZBID, sJGCZBBBID, "03", "标准", "Z", "0", tSession.UserId, tSession.UserName, DateTime.Now)); dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入标准栏目,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); sSQL.Clear(); sSQL.Add("insert into XLJGCZBLM("); sSQL.Add("XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_CZBLMMC,"); sSQL.Add("XLJGCZBLM_HLMLX,XLJGCZBLM_ZDLMLX,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,"); sSQL.Add("XLJGCZBLM_WHRID,XLJGCZBLM_WHR,XLJGCZBLM_WHSJ) "); sSQL.Add("values "); sSQL.Add(string.Format("('{0}','{1}','{2}','{3}','{4}','{5}',null,null,'{6}','{7}','{8}') ", sJGCZBID, sJGCZBBBID, "04", "电压等级", "Z", "1", tSession.UserId, tSession.UserName, DateTime.Now)); dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入电压等级栏目,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); #endregion #region 插入材料用量栏目 sSQL.Clear(); sSQL.Add("select XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC"); sSQL.Add(" from XLXSBJCL "); sSQL.Add(" where 1=1 and isnull(XLXSBJCL_TYBZ,'N') <> 'Y' "); //当可以导入部分报价材料时,结构尺重表的尺重表栏目应当根据报价材料,以报价材料编码顺序生成, if (sParamValue.Equals("BJCLMCACT")) { sSQL.Add(" and " + CMISproDataBase.GetWhereEqual("XLXSBJCL_BJCLID", sBJCLList)); } sSQL.Add(" order by isnull(XLXSBJCL_TYBZ,'N'),XLXSBJCL_BJCLID"); DataSet dsCL = dberp.OpenDataSet(sSQL); Mac.MacLog.TraceFormat("插入材料用量栏目-查询,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); if (dsCL.Tables[0].Rows.Count > 0) { sSQL.Clear(); sSQL.Add("insert into XLJGCZBLM("); sSQL.Add("XLJGCZBLM_JGCZBID,XLJGCZBLM_JGCZBBBID,XLJGCZBLM_CZBLMBH,XLJGCZBLM_CZBLMMC,"); sSQL.Add("XLJGCZBLM_HLMLX,XLJGCZBLM_ZDLMLX,XLJGCZBLM_CLQDL,XLJGCZBLM_BJCLID,"); sSQL.Add("XLJGCZBLM_WHRID,XLJGCZBLM_WHR,XLJGCZBLM_WHSJ) "); sSQL.Add("values ( "); sSQL.Add(":XLJGCZBLM_JGCZBID,:XLJGCZBLM_JGCZBBBID,:XLJGCZBLM_CZBLMBH,:XLJGCZBLM_CZBLMMC,"); sSQL.Add(":XLJGCZBLM_HLMLX,:XLJGCZBLM_ZDLMLX,:XLJGCZBLM_CLQDL,:XLJGCZBLM_BJCLID,"); sSQL.Add(":XLJGCZBLM_WHRID,:XLJGCZBLM_WHR,:XLJGCZBLM_WHSJ "); sSQL.Add(") "); if (sParamValue.Equals("BJCLMCACT")) { for (int i = 0; i < dsCL.Tables[0].Rows.Count; i++) { //使用下标比遍历 for (int ai = 0; ai < lstBJCL.Count; ai++) { if (dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim().Equals(lstBJCL[ai])) { sSQL.Params.Clear(); sSQL.ParamByName("XLJGCZBLM_JGCZBID").Value = sJGCZBID; sSQL.ParamByName("XLJGCZBLM_JGCZBBBID").Value = sJGCZBBBID; sSQL.ParamByName("XLJGCZBLM_CZBLMBH").Value = (ai + 5).ToString().Trim().PadLeft(2, '0'); sSQL.ParamByName("XLJGCZBLM_CZBLMMC").Value = dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim(); sSQL.ParamByName("XLJGCZBLM_HLMLX").Value = "Z"; sSQL.ParamByName("XLJGCZBLM_ZDLMLX").Value = "4"; sSQL.ParamByName("XLJGCZBLM_CLQDL").Value = "第" + (ai + 1).ToString().Trim().PadLeft(2, '0') + "列"; sSQL.ParamByName("XLJGCZBLM_BJCLID").Value = dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim(); sSQL.ParamByName("XLJGCZBLM_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLJGCZBLM_WHR").Value = tSession.UserName; sSQL.ParamByName("XLJGCZBLM_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); } } } } else { for (int i = 0; i < dsCL.Tables[0].Rows.Count; i++) { if (i < 80) { sSQL.Params.Clear(); sSQL.ParamByName("XLJGCZBLM_JGCZBID").Value = sJGCZBID; sSQL.ParamByName("XLJGCZBLM_JGCZBBBID").Value = sJGCZBBBID; sSQL.ParamByName("XLJGCZBLM_CZBLMBH").Value = Convert.ToString(i + 1 + 4).PadLeft(2, '0'); sSQL.ParamByName("XLJGCZBLM_CZBLMMC").Value = dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLMC"].ToString().Trim(); sSQL.ParamByName("XLJGCZBLM_HLMLX").Value = "Z"; sSQL.ParamByName("XLJGCZBLM_ZDLMLX").Value = "4"; sSQL.ParamByName("XLJGCZBLM_CLQDL").Value = "第" + Convert.ToString(i + 1).PadLeft(2, '0') + "列"; sSQL.ParamByName("XLJGCZBLM_BJCLID").Value = dsCL.Tables[0].Rows[i]["XLXSBJCL_BJCLID"].ToString().Trim(); sSQL.ParamByName("XLJGCZBLM_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLJGCZBLM_WHR").Value = tSession.UserName; sSQL.ParamByName("XLJGCZBLM_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); } } } Mac.MacLog.TraceFormat("插入材料用量栏目-完成,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); } #endregion #region 读取sheet内容、自第二行始逐行插入XLJGCZBNR Dictionary dicCLQDL = new Dictionary(); int iCLCol = 4; int iDRHH = 2;//去除第1行栏目行,导入行号默认从2开始 string sXLXHID = ""; string sXLGGID = ""; string sXLBZID = ""; string sDYDJ = ""; double dSL = 0.0; string sSL = ""; string sDefaultXLBZID = XLBJDUtils.GetDefaultXLBZID(); string sColumnName = ""; string NR = ""; //形成标准集合 Dictionary dicDRMXBZ = new Dictionary(); dicDRMXBZ.Clear(); sSQL.Clear(); sSQL.Add("select XLBZ_XLBZID,XLBZ_XLBZLXMC from XLBZ where 1 = 1 "); DataSet dsXLBZ = dberp.OpenDataSet(sSQL); if (dsXLBZ.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsXLBZ.Tables[0].Rows.Count; i++) { dicDRMXBZ.Add(dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZID"].ToString().Trim(), dsXLBZ.Tables[0].Rows[i]["XLBZ_XLBZLXMC"].ToString().Trim()); } } //导入时保持excel形式 if (sParamValue.Equals("BJCLMCACT")) { foreach (DataRow Row in ds.Tables[0].Rows) { //数据集第一行为栏目行,跳过 if (Row.Equals(ds.Tables[0].Rows[0])) continue; sXLXHID = sGetCellTest(Row, 0); if (sXLXHID.Length > 60) sXLXHID = "ERROR:内容超长,最多60个字符"; sXLGGID = sGetCellTest(Row, 1); if (sXLGGID.Length > 60) sXLGGID = "ERROR:内容超长,最多60个字符"; sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2), sDefaultXLBZID, dicDRMXBZ); if (sXLBZID.Length > 60) sXLBZID = "ERROR:内容超长,最多60个字符"; sDYDJ = sGetCellTest(Row, 3).Replace('K', 'k').Replace('v', 'V'); if (sDYDJ.Equals("")) sDYDJ = " "; if (sDYDJ.Length > 60) sDYDJ = "ERROR:内容超长,最多60个字符"; //导入XLJGCZBNR sSQL.Clear(); sSQL.Add(" insert into XLJGCZBNR(XLJGCZBNR_LMNR01,XLJGCZBNR_LMNR02,XLJGCZBNR_LMNR03,XLJGCZBNR_LMNR04, "); sSQL.Add(" XLJGCZBNR_WHRID,XLJGCZBNR_WHR,XLJGCZBNR_WHSJ, "); //根据lstBJCL记录数生成内容0X for (int iIndexLM = 1; iIndexLM <= lstBJCL.Count; iIndexLM++) { //得到名称 sColumnName = ds.Tables[0].Rows[0][iIndexLM + 3].ToString().Trim(); //从1开始,只加4 NR = (iIndexLM + 4).ToString().Trim().PadLeft(2, '0'); sSQL.Add(string.Format("XLJGCZBNR_LMNR{0},", NR)); } sSQL.Add("XLJGCZBNR_JGCZBID, XLJGCZBNR_JGCZBBBID, XLJGCZBNR_DRHH) "); sSQL.Add(" values(:pXLXHID,:pXLGGID,:pXLBZID,:pDYDJID,"); sSQL.Add(":pWHRID,:pWHR,:pWHSJ,"); //单行中循环列-从数量列开始 //dicCLMC存储所有的 名称-ID //dicBJCLID存储栏目行使用到的 ID-材料清单列 - 按照报价材料名称排序 for (int iIndexLM = 1; iIndexLM <= lstBJCL.Count; iIndexLM++) { //得到名称 sColumnName = ds.Tables[0].Rows[0][iIndexLM + 3].ToString().Trim(); dSL = CMISproConvert.StrToFloat(sGetCellTest(Row, iIndexLM + 3), 0); NR = (iIndexLM + 4).ToString().Trim().PadLeft(2, '0'); /* * 保持原Excel形式,此处不进行转换。 if (cbxDRNR.SelectedValue.Trim().Equals("YL_Km") && GetOption(100860002, "BJU003").Equals("M")) { dSL = dSL / 1000; } if (cbxDRNR.SelectedValue.Trim().Equals("YL_M") && GetOption(100860002, "BJU003").Equals("Km")) { dSL = dSL * 1000; } */ sSQL.Add(string.Format(":XLJGCZBNR_LMNR{0},", NR)); sSL = dSL.ToString().Trim(); if (iIndexLM == 5) { if (sSL.Length > 60) sSL = "ERROR:内容超长,最多60个字符"; } else { if (sSL.Length > 30) sSL = "ERROR:内容超长,最多30个字符"; } sSQL.ParamByName(string.Format("XLJGCZBNR_LMNR{0}", NR)).Value = sSL; } sSQL.Add(" :XLJGCZBNR_JGCZBID, :XLJGCZBNR_JGCZBBBID, :XLJGCZBNR_DRHH)"); sSQL.ParamByName("pXLXHID").Value = sXLXHID; sSQL.ParamByName("pXLGGID").Value = sXLGGID; sSQL.ParamByName("pXLBZID").Value = sXLBZID; sSQL.ParamByName("pDYDJID").Value = sDYDJ; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; sSQL.ParamByName("XLJGCZBNR_JGCZBID").Value = sJGCZBID; sSQL.ParamByName("XLJGCZBNR_JGCZBBBID").Value = sJGCZBBBID; sSQL.ParamByName("XLJGCZBNR_DRHH").Value = iDRHH; string ss = sSQL.Text; dberp.ExecSQL(sSQL); iDRHH++; } } // else { foreach (string sCLQDL in dicCLMC.Keys) { dicCLQDL.Add(iCLCol, sCLQDL); iCLCol = iCLCol + 1; } foreach (DataRow Row in ds.Tables[0].Rows) { //数据集第一行为栏目行,跳过 if (Row.Equals(ds.Tables[0].Rows[0])) continue; sXLXHID = sGetCellTest(Row, 0); if (sXLXHID.Length > 60) sXLXHID = "ERROR:内容超长,最多60个字符"; sXLGGID = sGetCellTest(Row, 1); if (sXLGGID.Length > 60) sXLGGID = "ERROR:内容超长,最多60个字符"; sXLBZID = XLBJDUtils.GetBZXLZBZID(sGetCellTest(Row, 2), sDefaultXLBZID, dicDRMXBZ); if (sXLBZID.Length > 60) sXLBZID = "ERROR:内容超长,最多60个字符"; sDYDJ = sGetCellTest(Row, 3).Replace('K', 'k').Replace('v', 'V'); if (sDYDJ.Equals("")) sDYDJ = " "; if (sDYDJ.Length > 60) sDYDJ = "ERROR:内容超长,最多60个字符"; //导入XLJGCZBNR sSQL.Clear(); sSQL.Add(" insert into XLJGCZBNR(XLJGCZBNR_LMNR01,XLJGCZBNR_LMNR02,XLJGCZBNR_LMNR03,XLJGCZBNR_LMNR04, "); sSQL.Add(" XLJGCZBNR_WHRID,XLJGCZBNR_WHR,XLJGCZBNR_WHSJ, "); int iIndexLM = 5; foreach (int iColumnIndex in dicCLQDL.Keys) { string sCLQDL = dicCLQDL[iColumnIndex]; sSQL.Add(string.Format("XLJGCZBNR_LMNR{0},", iIndexLM.ToString().PadLeft(2, '0'))); iIndexLM++; } sSQL.Add("XLJGCZBNR_JGCZBID, XLJGCZBNR_JGCZBBBID, XLJGCZBNR_DRHH) "); sSQL.Add(" values(:pXLXHID,:pXLGGID,:pXLBZID,:pDYDJID,"); sSQL.Add(":pWHRID,:pWHR,:pWHSJ,"); iIndexLM = 5; foreach (int iColumnIndex in dicCLQDL.Keys) { string sCLQDL = dicCLQDL[iColumnIndex]; dSL = CMISproConvert.StrToFloat(sGetCellTest(Row, iColumnIndex), 0); /* * 保持原Excel形式,此处不进行转换。 if (cbxDRNR.SelectedValue.Trim().Equals("YL_Km") && GetOption(100860002, "BJU003").Equals("M")) { dSL = dSL / 1000; } if (cbxDRNR.SelectedValue.Trim().Equals("YL_M") && GetOption(100860002, "BJU003").Equals("Km")) { dSL = dSL * 1000; } */ sSQL.Add(string.Format(":XLJGCZBNR_LMNR{0},", iIndexLM.ToString().PadLeft(2, '0'))); sSL = dSL.ToString().Trim(); if (iIndexLM == 5) { if (sSL.Length > 60) sSL = "ERROR:内容超长,最多60个字符"; } else { if (sSL.Length > 30) sSL = "ERROR:内容超长,最多30个字符"; } sSQL.ParamByName(string.Format("XLJGCZBNR_LMNR{0}", iIndexLM.ToString().PadLeft(2, '0'))).Value = sSL; iIndexLM++; } sSQL.Add(" :XLJGCZBNR_JGCZBID, :XLJGCZBNR_JGCZBBBID, :XLJGCZBNR_DRHH)"); sSQL.ParamByName("pXLXHID").Value = sXLXHID; sSQL.ParamByName("pXLGGID").Value = sXLGGID; sSQL.ParamByName("pXLBZID").Value = sXLBZID; sSQL.ParamByName("pDYDJID").Value = sDYDJ; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; sSQL.ParamByName("XLJGCZBNR_JGCZBID").Value = sJGCZBID; sSQL.ParamByName("XLJGCZBNR_JGCZBBBID").Value = sJGCZBBBID; sSQL.ParamByName("XLJGCZBNR_DRHH").Value = iDRHH; dberp.ExecSQL(sSQL); iDRHH++; } } Mac.MacLog.TraceFormat("插入XLJGCZBNR,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); sSQL.Clear(); sSQL.Add("insert into XLXHJGCZBML(XLXHJGCZBML_JGCZBID,XLXHJGCZBML_JGCZBXH,XLXHJGCZBML_XLXHID,XLXHJGCZBML_DYDJID,XLXHJGCZBML_XLBZID,"); sSQL.Add(" XLXHJGCZBML_XLBZBH,XLXHJGCZBML_XYCXJS,XLXHJGCZBML_WHRID,XLXHJGCZBML_WHR,XLXHJGCZBML_WHSJ)"); sSQL.Add(" select JGCZBID,"); sSQL.Add(" row_number() over(partition by JGCZBID order by XLXHID,DYDJID,XLBZID) as JGCZBXH,"); sSQL.Add(" XLXHID,DYDJID,XLBZID,"); sSQL.Add(" ' ',' ',:pWHRID,:pWHR,:pWHSJ"); sSQL.Add(" from (select distinct XLJGCZBNR_JGCZBID as JGCZBID,XLJGCZBNR_LMNR01 as XLXHID,"); sSQL.Add(" XLJGCZBNR_LMNR04 as DYDJID,XLJGCZBNR_LMNR03 as XLBZID"); sSQL.Add(" from XLJGCZBNR"); sSQL.Add(" where XLJGCZBNR_JGCZBID=:pJGCZBID and XLJGCZBNR_JGCZBBBID=:pJGCZBBBID"); sSQL.Add(" ) a "); sSQL.Add(" left join XLJGCZBML on XLJGCZBML_JGCZBID=JGCZBID"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入XLXHJGCZBML,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); sSQL.Clear(); sSQL.Add("insert into XLXHJGCZBNR(XLXHJGCZBNR_JGCZBID,XLXHJGCZBNR_JGCZBBBID,XLXHJGCZBNR_JGCZBXH,XLXHJGCZBNR_DRHH,XLXHJGCZBNR_XLGGID,XLXHJGCZBNR_CLFLAG)"); sSQL.Add(" select XLJGCZBNR_JGCZBID,XLJGCZBNR_JGCZBBBID,XLXHJGCZBML_JGCZBXH,XLJGCZBNR_DRHH,XLJGCZBNR_LMNR02,'未处理'"); sSQL.Add(" from XLJGCZBNR"); sSQL.Add(" left join XLXHJGCZBML on XLXHJGCZBML_JGCZBID=XLJGCZBNR_JGCZBID and XLXHJGCZBML_XLXHID=XLJGCZBNR_LMNR01 and XLXHJGCZBML_DYDJID=XLJGCZBNR_LMNR04 and XLXHJGCZBML_XLBZID=XLJGCZBNR_LMNR03"); sSQL.Add(" where XLJGCZBNR_JGCZBID=:pJGCZBID and XLJGCZBNR_JGCZBBBID=:pJGCZBBBID"); sSQL.ParamByName("pJGCZBID").Value = sJGCZBID; sSQL.ParamByName("pJGCZBBBID").Value = sJGCZBBBID; dberp.ExecSQL(sSQL); Mac.MacLog.TraceFormat("插入XLXHJGCZBNR,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); #endregion Mac.MacLog.TraceFormat("导入尺重表完成,工号:{0},时间:{1}", tSession.UserId, DateTime.Now); } private void ExcelColumnValid(DataSet ds, Dictionary dicCLMC, string sDRLX, ref List lstBJCL, ref string sBJCLList) { // int iKey = 1; sBJCLList = ""; string sErrmsg = ""; lstBJCL.Clear(); if (sDRLX.Equals("BJCLMCACT")) { //直接根据获取的ds判定列 if (ds.Tables[0].Rows.Count > 0)//内容第一行为标题行 { if (ds.Tables[0].Columns.Count > 84) { sErrmsg = string.Format("当前报价材料列已达{0}列,程序最多支持80列!", ds.Tables[0].Columns.Count.ToString().Trim()); throw new Exception(sErrmsg); } if (!ds.Tables[0].Rows[0][0].ToString().Trim().Equals("型号")) { throw new Exception(string.Format("(1)列标题错误,该列应为(型号)")); } if (!ds.Tables[0].Rows[0][1].ToString().Trim().Equals("规格")) { throw new Exception(string.Format("(2)列标题错误,该列应为(规格)")); } if (!ds.Tables[0].Rows[0][2].ToString().Trim().Equals("标准")) { throw new Exception(string.Format("(3)列标题错误,该列应为(标准)")); } if (!ds.Tables[0].Rows[0][3].ToString().Trim().Equals("电压等级")) { throw new Exception(string.Format("(4)列标题错误,该列应为(电压等级)")); } for (int i = 4; i < ds.Tables[0].Columns.Count; i++) { if (!dicCLMC.ContainsKey(ds.Tables[0].Rows[0][i].ToString().Trim()))//读取出来的列名,会将.号改为#号,加上原来列名中可能含有#号 { sErrmsg = string.Format("({0})列标题错误,该列标题({1})在报价材料名称中不存在,请检查字母大小写,特殊字符等是否对应!", (i + 1).ToString().Trim(), ds.Tables[0].Rows[0][i].ToString().Trim()); throw new Exception(sErrmsg); } else { //存储对应关系 lstBJCL.Add(dicCLMC[ds.Tables[0].Rows[0][i].ToString().Trim()]); sBJCLList = sBJCLList + dicCLMC[ds.Tables[0].Rows[0][i].ToString().Trim()] + ","; } } sBJCLList = sBJCLList.TrimEnd(','); } } //CLQDL BJCLMC else { Dictionary ColumnNames = new Dictionary(); ColumnNames.Add("0", "型号"); ColumnNames.Add("1", "规格"); ColumnNames.Add("2", "标准"); ColumnNames.Add("3", "电压等级"); iKey = 4; foreach (string sCLQDL in dicCLMC.Keys) { ColumnNames.Add(iKey.ToString(), dicCLMC[sCLQDL]); iKey++; } for (int i = 0; i < ColumnNames.Count; i++) { if (ds.Tables[0].Columns.Count - 1 < i) { throw new Exception(string.Format("缺少({0})列!", ColumnNames[i.ToString()])); } else { if (ds.Tables[0].Rows.Count > 0)//内容第一行为标题行 { if (!ds.Tables[0].Rows[0][i].ToString().Trim().Equals(ColumnNames[i.ToString()]))//读取出来的列名,会将.号改为#号,加上原来列名中可能含有#号 { throw new Exception(string.Format("({0})列标题错误,该列应为({1})", ds.Tables[0].Rows[0][i].ToString().Trim(), ColumnNames[i.ToString()])); } } } } } } //引入涵盖范围的约束 private void ValidDRNR(string sJGCZBID, DataSet ds) { TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("select XLXHJGCZBML_XLXHID,XLXHJGCZBML_DYDJID,XLXHJGCZBML_XLBZID"); sql.Add(" from XLXHJGCZBML"); sql.Add(" where XLXHJGCZBML_JGCZBID=:pJGCZBID and XLXHJGCZBML_JGCZBXH<0"); sql.Add(" and (isnull(XLXHJGCZBML_XLXHID,' ')<>' ' or isnull(XLXHJGCZBML_DYDJID,' ')<>' ' or isnull(XLXHJGCZBML_XLBZID,' ')<>' ')"); sql.Add(" order by XLXHJGCZBML_JGCZBXH"); sql.ParamByName("pJGCZBID").Value = sJGCZBID; DataSet dsXHML = dberp.OpenDataSet(sql); if (dsXHML.Tables[0].Rows.Count > 0) { int iDRHH = 2;//去除第1行栏目行,导入行号默认从2开始 string sDYDJ = ""; string sXLXHID = ""; string sXLBZID = ""; string sDRHHList = ""; foreach (DataRow Row in ds.Tables[0].Rows) { //数据集第一行为栏目行,跳过 if (Row.Equals(ds.Tables[0].Rows[0])) continue; sXLXHID = sGetCellTest(Row, 0); sXLBZID = sGetCellTest(Row, 2); sDYDJ = sGetCellTest(Row, 3).Replace('K', 'k').Replace('v', 'V'); bool bValid = false;//涵盖范围限制是否校验通过 for (int i = 0; i < dsXHML.Tables[0].Rows.Count; i++) { string tmpXLXHID = dsXHML.Tables[0].Rows[i]["XLXHJGCZBML_XLXHID"].ToString().Trim(); string tmpDYDJID = dsXHML.Tables[0].Rows[i]["XLXHJGCZBML_DYDJID"].ToString().Trim(); string tmpXLBZID = dsXHML.Tables[0].Rows[i]["XLXHJGCZBML_XLBZID"].ToString().Trim(); if (tmpXLXHID.Equals("") || (!tmpXLXHID.Equals("") && tmpXLXHID.Equals(sXLXHID)) ) { if (tmpDYDJID.Equals("") || (!tmpDYDJID.Equals("") && tmpDYDJID.Equals(sDYDJ)) ) { if (tmpXLBZID.Equals("") || (!tmpXLBZID.Equals("") && tmpXLBZID.Equals(sXLBZID)) ) { bValid = true; } } } } if (bValid == false) { sDRHHList += iDRHH.ToString() + ","; } iDRHH++; } if (!sDRHHList.Equals("")) { sDRHHList = sDRHHList.TrimEnd(','); throw new Exception("导入文件中以下行号的型号、标准、电压等级不在规划的尺重表涵盖范围内,请和尺重表负责人联系!" + "\r\n" + sDRHHList); } } } private void ReadWJ(string sPath, string sSheetName, ref DataSet aDataExcel) { string sMessage = ""; aDataExcel = TExcelData.ReadExcel(sPath.Trim(), sSheetName, "", false, false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("文件读取失败!失败原因:" + sMessage.Trim()); } } private string sGetCellTest(DataRow Row, int ColumnIndex) { return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", ""); } private string GetNewID() { string sNewID = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0'); int iMaxXH = 0; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add("select max(XLJGCZBML_JGCZBID) as MaxID from XLJGCZBML where 1 = 1 "); SQL.Add(" and XLJGCZBML_JGCZBID like :pXLJGCZBML_JGCZBID "); SQL.ParamByName("pXLJGCZBML_JGCZBID").Value = sNewID + "%"; DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { if (!ds.Tables[0].Rows[0]["MaxID"].ToString().Trim().Equals("")) { iMaxXH = CMISproConvert.StrToInt(ds.Tables[0].Rows[0]["MaxID"].ToString().Trim().Substring(6, 4)); } else { //iMaxXH = 0 } } iMaxXH++; return sNewID + iMaxXH.ToString().PadLeft(4, '0'); } private string GetDefaultSheetName(string sFilePath) { string connStr = GetConnString(sFilePath); OleDbConnection m_conn = new OleDbConnection(connStr); m_conn.Open(); DataTable sheetNames = m_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string sSheetName = ""; if (sheetNames.Rows[0].Table.Rows.Count > 0) { sSheetName = sheetNames.Rows[0].Table.Rows[0]["TABLE_NAME"].ToString().Trim(); if (sSheetName.StartsWith("'") && sSheetName.EndsWith("'")) sSheetName = sSheetName.TrimStart('\'').TrimEnd('\''); if (sSheetName.EndsWith("$")) sSheetName = sSheetName.TrimEnd('$'); } if (m_conn.State == ConnectionState.Open) { m_conn.Dispose(); m_conn = null; } return sSheetName; } //判断模块是否存在并且是否有权限 private bool CheckModule(string sUMID) { int iUMID = CMISproConvert.StrToInt(sUMID); UserRight UR = OpRightUtils.GetUserRight(tSession.UserId, iUMID); return (DSActiveModule.IsActiveModule(iUMID) && UR.Open); } private bool CheckModuleInsert(string sUMID) { int iUMID = CMISproConvert.StrToInt(sUMID); UserRight UR = OpRightUtils.GetUserRight(tSession.UserId, iUMID); return (DSActiveModule.IsActiveModule(iUMID) && UR.Insert); } private void DZBZPP(TDatabase dberp, TSQL sSQL, ref DataSet aDataExcel) { if (CheckModuleInsert("102573000")) { int StartIndex=4; if (CheckModule("101421012")) StartIndex = 9; if (aDataExcel.Tables[0].Columns.Count > StartIndex+3) { if (StartIndex == 9) { if (!aDataExcel.Tables[0].Rows[0][StartIndex - 3].ToString().Trim().Equals("外径")) { throw new Exception(string.Format("{0}列标题错误,该列应为(外径)", StartIndex - 2)); } if (!aDataExcel.Tables[0].Rows[0][StartIndex - 2].ToString().Trim().Equals("最小弯曲倍数")) { throw new Exception(string.Format("{0}列标题错误,该列应为(最小弯曲倍数)", StartIndex - 1)); } if (!aDataExcel.Tables[0].Rows[0][StartIndex - 1].ToString().Trim().Equals("导体结构信息")) { throw new Exception(string.Format("{0}列标题错误,该列应为(导体结构信息)", StartIndex)); } } if (!aDataExcel.Tables[0].Rows[0][StartIndex].ToString().Trim().Equals("客户代码")) { throw new Exception(string.Format("{0}列标题错误,该列应为(客户代码)", StartIndex + 1)); } if (!aDataExcel.Tables[0].Rows[0][StartIndex + 1].ToString().Trim().Equals("执行标准")) { throw new Exception(string.Format("{0}列标题错误,该列应为(执行标准)", StartIndex + 2)); } if (!aDataExcel.Tables[0].Rows[0][StartIndex + 2].ToString().Trim().Equals("阻燃等级")) { throw new Exception(string.Format("{0}列标题错误,该列应为(阻燃等级)", StartIndex + 3)); } if (!aDataExcel.Tables[0].Rows[0][StartIndex + 3].ToString().Trim().Equals("导体材料")) { throw new Exception(string.Format("{0}列标题错误,该列应为(导体材料)", (StartIndex + 4))); } for (int i = 1; i < aDataExcel.Tables[0].Rows.Count; i++) { DataRow Row = aDataExcel.Tables[0].Rows[i]; string sWJ = ""; string sCPJGXX = ""; if (StartIndex == 9) { sWJ = sGetCellTest(Row, StartIndex - 3).Trim(); sCPJGXX = sGetCellTest(Row, StartIndex - 1).Trim(); } string sKHDM = sGetCellTest(Row, StartIndex).Trim(); string sZXBZ = sGetCellTest(Row, StartIndex+1).Trim(); string sZRDJ = sGetCellTest(Row, StartIndex+2).Trim(); string sDTCL = sGetCellTest(Row, StartIndex+3).Trim(); if (!sKHDM.Equals("") || !sZXBZ.Equals("") || !sZRDJ.Equals("") || !sDTCL.Equals("") || !sWJ.Equals("")||!sCPJGXX.Equals("")) { aDataExcel.Tables[0].Rows[i][2] = PPDZBZ(dberp, sSQL, sKHDM, sZXBZ, sZRDJ, sDTCL, sWJ,sCPJGXX); } } aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[StartIndex + 3]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[StartIndex + 2]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[StartIndex + 1]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[StartIndex]); } } } private void XLCPWH(TDatabase dberp, TSQL sSQL, ref DataSet aDataExcel) { DZBZPP(dberp, sSQL,ref aDataExcel); if (CheckModule("101421012")) { DataSet dsXLCPWH = new DataSet(); if (aDataExcel.Tables[0].Columns.Count < 7) return; if (aDataExcel.Tables[0].Rows[0][6].ToString().Trim().Equals("外径")) { if (!aDataExcel.Tables[0].Rows[0][7].ToString().Trim().Equals("最小弯曲倍数") || !aDataExcel.Tables[0].Rows[0][8].ToString().Trim().Equals("导体结构信息")) throw new Exception("导入栏目“外径”后必须依次为“最小弯曲倍数”、“导体结构信息”"); // 获取源表 DataTable sourceTable = aDataExcel.Tables[0]; DataTable destinationTable = sourceTable.Copy(); // 创建完整的副本 // 确保至少有八列 if (destinationTable.Columns.Count > 8) { // 从第七列开始移除所有列 for (int i = destinationTable.Columns.Count - 1; i > 8; i--) { destinationTable.Columns.RemoveAt(i); } } // 将新表添加到目标DataSet dsXLCPWH.Tables.Add(destinationTable); //删除多余栏目信息 aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[8]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[7]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[6]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[5]); aDataExcel.Tables[0].Columns.Remove(aDataExcel.Tables[0].Columns[4]); //校验前六行 if (!dsXLCPWH.Tables[0].Rows[0][0].ToString().Trim().Equals("型号")) { throw new Exception(string.Format("(1)列标题错误,该列应为(型号)")); } if (!dsXLCPWH.Tables[0].Rows[0][1].ToString().Trim().Equals("规格")) { throw new Exception(string.Format("(2)列标题错误,该列应为(规格)")); } if (!dsXLCPWH.Tables[0].Rows[0][2].ToString().Trim().Equals("标准")) { throw new Exception(string.Format("(3)列标题错误,该列应为(标准)")); } if (!dsXLCPWH.Tables[0].Rows[0][3].ToString().Trim().Equals("电压等级")) { throw new Exception(string.Format("(4)列标题错误,该列应为(电压等级)")); } if (!dsXLCPWH.Tables[0].Rows[0][4].ToString().Trim().Equals("颜色")) { throw new Exception(string.Format("(5)列标题错误,该列应为(颜色)")); } if (!dsXLCPWH.Tables[0].Rows[0][5].ToString().Trim().Equals("物料编码")) { throw new Exception(string.Format("(6)列标题错误,该列应为(物料编码)")); } for (int i = 1; i < dsXLCPWH.Tables[0].Rows.Count; i++) { DataRow Row = dsXLCPWH.Tables[0].Rows[i]; string sXH = sGetCellTest(Row, 0).Trim(); string sGG = sGetCellTest(Row, 1).Trim(); string sBZ = sGetCellTest(Row, 2).Trim(); string sDYDJ = sGetCellTest(Row, 3).Trim(); string sXLYSID = N_PUBLIC2.XLUtils.GetXLYSID(sGetCellTest(Row, 4).Trim()); string sWLID = sGetCellTest(Row, 5).Trim(); string sWJ = sGetCellTest(Row, 6).Trim(); string sZXWQBS = sGetCellTest(Row, 7).Trim(); string sDTJGXX = sGetCellTest(Row, 8).Trim(); if (sXH.Equals("")) throw new Exception("第" + (i + 1) + "行型号为空,导入失败!"); if (sGG.Equals("")) throw new Exception("第" + (i + 1) + "行规格为空,导入失败!"); if (sBZ.Equals("")) throw new Exception("第" + (i + 1) + "行标准为空,导入失败!"); if (sDYDJ.Equals("")) throw new Exception("第" + (i + 1) + "行电压等级为空,导入失败!"); if (!sGetCellTest(Row, 4).Trim().Equals("") && sXLYSID.Equals("")) throw new Exception("第" + (i + 1) + "行颜色不存在,导入失败!"); if (sXLYSID.Equals("") && !sWLID.Equals("")) throw new Exception("第" + (i + 1) + "行颜色、物料编码应该同时为空或同时不为空,导入失败!"); if (!sXLYSID.Equals("") && sWLID.Equals("")) throw new Exception("第" + (i + 1) + "行颜色、物料编码应该同时为空或同时不为空,导入失败!"); //if (!XLXHIDValid(sXH)) // throw new Exception("第" + (i + 1) + "行型号不存在,导入失败!"); if (!XLBZIDValid(sBZ)) throw new Exception("第" + (i + 1) + "行标准不存在,导入失败!"); if (!DYDJIDValid(sDYDJ)) throw new Exception("第" + (i + 1) + "行电压等级不存在,导入失败!"); if (!sWLID.Equals("") && !CMISproDataBase.ExistsRecord("DBERP", "select 1 from WL where WL_WLID='" + sWLID + "'")) throw new Exception("第" + (i + 1) + "行物料编码不存在,导入失败!"); } if(dsXLCPWH.Tables[0].Rows.Count>0) dsXLCPWH.Tables[0].Rows.RemoveAt(0); N_PUBLIC2.XLUtils.InsXLXLBXX(dberp, sSQL, dsXLCPWH, DateTime.Now); } } } private bool XLXHIDValid(string sXLXHID) { if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLXHB where XLXHB_XLXHID='" + sXLXHID + "'")) return true; return false; } private void InsertXLXHID(TDatabase dberp, TSQL sSQL, DataSet aDataExcel) { for (int i = 1; i < aDataExcel.Tables[0].Rows.Count;i++) { DataRow Row = aDataExcel.Tables[0].Rows[i]; string sXH = sGetCellTest(Row, 0).Trim(); if (!XLXHIDValid(sXH)&&!sXH.Equals("")) { sSQL.Clear(); sSQL.Add(@" insert into XLXHB(XLXHB_XLXHID,XLXHB_QYRQ,XLXHB_TYBZ,XLXHB_WHR,XLXHB_WHRID,XLXHB_WHSJ,XLXHB_CPYT,XLXHB_XLGGJDGZ) values(:pXLXHB_XLXHID,:pXLXHB_QYRQ,:pXLXHB_TYBZ,:pXLXHB_WHR,:pXLXHB_WHRID,:pXLXHB_WHSJ,'NNNN',:pXLXHB_XLGGJDGZ)"); sSQL.ParamByName("pXLXHB_XLXHID").Value=sXH; sSQL.ParamByName("pXLXHB_QYRQ").Value = DateTime.Now; sSQL.ParamByName("pXLXHB_TYBZ").Value = "N"; sSQL.ParamByName("pXLXHB_WHR").Value = tSession.UserName; sSQL.ParamByName("pXLXHB_WHRID").Value = tSession.UserId; sSQL.ParamByName("pXLXHB_WHSJ").Value = DateTime.Now; sSQL.ParamByName("pXLXHB_XLGGJDGZ").Value = "0"; dberp.ExecSQL(sSQL); } } } private void InsertBJCL(TDatabase dberp, TSQL sSQL, DataSet aDataExcel, string sParamValue, ref Dictionary dicCLMC) { if (sParamValue.Equals("BJCLMCACT")) { for (int i = 4; i < aDataExcel.Tables[0].Columns.Count; i++) { if (!dicCLMC.ContainsKey(aDataExcel.Tables[0].Rows[0][i].ToString().Trim()))//读取出来的列名,会将.号改为#号,加上原来列名中可能含有#号 { if (!aDataExcel.Tables[0].Rows[0][i].ToString().Trim().Equals("")) { sSQL.Clear(); sSQL.Add(@"insert into XLXSBJCL(XLXSBJCL_BJCLID,XLXSBJCL_BJCLMC,XLXSBJCL_BJHQ,XLXSBJCL_BJJZ,XLXSBJCL_JTZ,XLXSBJCL_JLZ,XLXSBJCL_CLHQFD,XLXSBJCL_SFQR, XLXSBJCL_ZZSL,XLXSBJCL_QYRQ,XLXSBJCL_TYBZ,XLXSBJCL_WHR,XLXSBJCL_WHRID,XLXSBJCL_WHSJ) values(:pXLXSBJCL_BJCLID,:pXLXSBJCL_BJCLMC,'1','Y','N','N','N','N',13,:pQYRQ,'N',:pXLXSBJCL_WHR,:pXLXSBJCL_WHRID,:pXLXSBJCL_WHSJ) "); sSQL.ParamByName("pXLXSBJCL_BJCLID").Value = GetNewBJCLID(); sSQL.ParamByName("pXLXSBJCL_BJCLMC").Value = aDataExcel.Tables[0].Rows[0][i].ToString().Trim(); sSQL.ParamByName("pQYRQ").Value = DateTime.Now; sSQL.ParamByName("pXLXSBJCL_WHR").Value = tSession.UserName; sSQL.ParamByName("pXLXSBJCL_WHRID").Value = tSession.UserId; sSQL.ParamByName("pXLXSBJCL_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); dicCLMC.Add(aDataExcel.Tables[0].Rows[0][i].ToString().Trim(), GetNewBJCLID()); } } } } } private string GetNewBJCLID() { string sPrefix = "BJCL00"; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Add("select max(XLXSBJCL_BJCLID) from XLXSBJCL where XLXSBJCL_BJCLID like :pPrefix"); SQL.ParamByName("pPrefix").Value = sPrefix + '%'; DataSet ds = dberp.OpenDataSet(SQL); if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString().Trim())) { double dTemp = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0][0].ToString().Trim().Substring(6, 4)); return sPrefix + Convert.ToString(dTemp + 1).PadLeft(4, '0'); } else { return sPrefix + "0000"; } } private bool XLBZIDValid(string sXLBZID) { if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLBZ where XLBZ_XLBZID='" + sXLBZID + "'")) return true; return false; } private bool DYDJIDValid(string sDYDJID) { if (CMISproDataBase.ExistsRecord("DBERP", "select 1 from XLDYDJB where XLDYDJB_DYDJID='" + sDYDJID + "'")) return true; return false; } private string PPDZBZ(TDatabase dberp, TSQL sSQL, string sKHDM, string sZXBZ, string sZRDJ, string sDTCL,string sWJ,string sCPJGXX) { sSQL.Clear(); sSQL.Add(@" select XLBZ_XLBZID from XLBZ left join XLDZBZ a on XLBZ_XLBZID=a.XLDZBZ_XLBZID and a.XLDZBZ_XH=1 and a.XLDZBZ_DZSCXM='客户代码' left join XLDZBZ b on XLBZ_XLBZID=b.XLDZBZ_XLBZID and b.XLDZBZ_XH=2 and b.XLDZBZ_DZSCXM='执行标准' left join XLDZBZ c on XLBZ_XLBZID=c.XLDZBZ_XLBZID and c.XLDZBZ_XH=3 and c.XLDZBZ_DZSCXM='阻燃等级' left join XLDZBZ d on XLBZ_XLBZID=d.XLDZBZ_XLBZID and d.XLDZBZ_XH=4 and d.XLDZBZ_DZSCXM='导体材料' left join XLDZBZ e on XLBZ_XLBZID=e.XLDZBZ_XLBZID and e.XLDZBZ_XH=5 and e.XLDZBZ_DZSCXM='外径' left join XLDZBZ f on XLBZ_XLBZID=f.XLDZBZ_XLBZID and f.XLDZBZ_XH=6 and f.XLDZBZ_DZSCXM='产品结构信息' where a.XLDZBZ_DZSCYQ=:pKHDM and b.XLDZBZ_DZSCYQ=:pZXBZ and c.XLDZBZ_DZSCYQ=:pZRDJ and d.XLDZBZ_DZSCYQ=:pDTCL and e.XLDZBZ_DZSCYQ=:pWJ and f.XLDZBZ_DZSCYQ=:pCPJGXX "); sSQL.ParamByName("pKHDM").Value = sKHDM; sSQL.ParamByName("pZXBZ").Value = sZXBZ; sSQL.ParamByName("pZRDJ").Value = sZRDJ; sSQL.ParamByName("pDTCL").Value = sDTCL; sSQL.ParamByName("pWJ").Value = sWJ; sSQL.ParamByName("pCPJGXX").Value = sCPJGXX; DataSet ds = dberp.OpenDataSet(sSQL); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0].Rows[0][0].ToString().Trim(); } else { string sMC = string.Empty; if (!sKHDM.Equals("")) { sMC = sKHDM ; } if (!sZXBZ.Equals("")) { if(sMC.Equals("")) sMC = sMC + sZXBZ; else sMC = sMC + " " + sZXBZ; } if (!sZRDJ.Equals("")) { if (sMC.Equals("")) sMC = sMC + sZRDJ; else sMC = sMC + " " + sZRDJ; } if (!sDTCL.Equals("")) { if (sMC.Equals("")) sMC = sMC + sDTCL; else sMC = sMC + " " + sDTCL; } if (!sWJ.Equals("")) { if (sMC.Equals("")) sMC = sMC + "外径"+sWJ; else sMC = sMC + " " + "外径" + sWJ; } if (!sCPJGXX.Equals("")) { if (sMC.Equals("")) sMC = sMC + sCPJGXX; else sMC = sMC + " " + sCPJGXX; } string sXLBZID = GetMaxBH(); sMC=XLBJDUtils.SubStringFunc(sMC, 60); sSQL.Clear(); sSQL.Add(@"insert into XLBZ(XLBZ_XLBZID,XLBZ_XLBZLXMC,XLBZ_DZSC,XLBZ_WHR,XLBZ_WHRID,XLBZ_WHSJ) values(:XLBZ_XLBZID,:XLBZ_XLBZLXMC,:XLBZ_DZSC,:XLBZ_WHR,:XLBZ_WHRID,:XLBZ_WHSJ) "); sSQL.ParamByName("XLBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLBZ_XLBZLXMC").Value = sMC; sSQL.ParamByName("XLBZ_DZSC").Value = 'Y'; sSQL.ParamByName("XLBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 1; sSQL.ParamByName("XLDZBZ_DZSCXM").Value ="客户代码"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sKHDM; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 2; sSQL.ParamByName("XLDZBZ_DZSCXM").Value = "执行标准"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sZXBZ; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 3; sSQL.ParamByName("XLDZBZ_DZSCXM").Value = "阻燃等级"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sZRDJ; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 4; sSQL.ParamByName("XLDZBZ_DZSCXM").Value = "导体材料"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sDTCL; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 5; sSQL.ParamByName("XLDZBZ_DZSCXM").Value = "外径"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sWJ; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); sSQL.Clear(); sSQL.Add(@" insert into XLDZBZ(XLDZBZ_XLBZID,XLDZBZ_XH, XLDZBZ_DZSCXM, XLDZBZ_DZSCYQ, XLDZBZ_WHR, XLDZBZ_WHRID, XLDZBZ_WHSJ,XLDZBZ_MDID) values( :XLDZBZ_XLBZID,:XLDZBZ_XH,:XLDZBZ_DZSCXM, :XLDZBZ_DZSCYQ, :XLDZBZ_WHR, :XLDZBZ_WHRID, :XLDZBZ_WHSJ,102573000) "); sSQL.ParamByName("XLDZBZ_XLBZID").Value = sXLBZID; sSQL.ParamByName("XLDZBZ_XH").Value = 6; sSQL.ParamByName("XLDZBZ_DZSCXM").Value = "产品结构信息"; sSQL.ParamByName("XLDZBZ_DZSCYQ").Value = sCPJGXX; sSQL.ParamByName("XLDZBZ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLDZBZ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLDZBZ_WHSJ").Value = DateTime.Now; dberp.ExecSQL(sSQL); return sXLBZID; } } private string GetMaxBH() { string sValue = "000000000"; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL SQL = new TSQL(dberp); SQL.Clear(); SQL.Add(" select max(XLBZ_XLBZID) as MAXXH from XLBZ where len(XLBZ_XLBZID)=10 "); DataSet ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { string sTmp = ds.Tables[0].Rows[0][0].ToString().Trim(); if (!sTmp.Equals("")) { string sDZXLBZID = ""; TDatabase dberpDZBZ = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberpDZBZ); sSQL.Clear(); sSQL.Add(" select XLBZ_XLBZID from XLBZ where XLBZ_DZSC ='Y' and len(XLBZ_XLBZID) <10 "); DataSet dsDZBZ = dberpDZBZ.OpenDataSet(sSQL); if (dsDZBZ.Tables[0].Rows.Count > 0) { sDZXLBZID = dsDZBZ.Tables[0].Rows[0][0].ToString().Trim(); } if (sDZXLBZID.Trim().Length == 2) { double fTmp = CMISproConvert.StrToFloat(sTmp.Substring(2, sTmp.Length - 2)) + 1; sValue = sTmp.Substring(0, 2) + fTmp.ToString().Trim().PadLeft(8, '0'); } else { double fTmp = CMISproConvert.StrToFloat(sTmp.Substring(1, sTmp.Length - 1)) + 1; sValue = sTmp.Substring(0, 1) + fTmp.ToString().Trim().PadLeft(9, '0'); } } } if (sValue.Equals("") || sValue.Equals("000000000")) { SQL.Clear(); SQL.Add(" select XLBZ_XLBZID from XLBZ where XLBZ_DZSC ='Y' and len(XLBZ_XLBZID) <10 "); ds = dberp.OpenDataSet(SQL); if (ds.Tables[0].Rows.Count > 0) { string sDZXLBZID = ""; sDZXLBZID = ds.Tables[0].Rows[0][0].ToString().Trim(); if (sDZXLBZID.Trim().Length == 2) { sValue = ds.Tables[0].Rows[0][0].ToString().Trim() + "00000001"; } else { sValue = ds.Tables[0].Rows[0][0].ToString().Trim() + "000000001"; } } } return sValue; } #endregion } }