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_MODEL.Page; using System.Collections.Generic; using System.Web.Services; using System.Web.Script.Services; using System.Data.SqlClient; using System.Web.Script.Serialization; using GThinking.N_MISPRO.Utility; using GThinking.N_MISPRO.Data; namespace GThinking.N_XLXSBJ { public partial class XLXSBJ_AFZNRDR : HelpBase { #region Page 类事件 // 声明与前端对应的控件 protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860000; this.UMName = "按复制内容导入"; if (!IsPostBack) base.InitPage(); //Ajax脚本注册 /*string misproasAssemblyName = MacInfoUtils.ClassId2AssemblyName("N_MISPROAS"); ScriptManager1.Scripts.Add(new ScriptReference("GThinking.N_MISPROAS.Web.AjaxServices.AjaxServiceProxy.js", misproasAssemblyName)); */ if (!IsPostBack) { InitControls(); } } #endregion #region 自定义事件 private void InitControls() { } #endregion protected void btnSubmit_Click(object sender, EventArgs e) { try { // 获取客户端传递的JSON数据 string jsonData = hdnTableData.Value; if (string.IsNullOrEmpty(jsonData)) { ShowAlert("没有接收到数据,请先粘贴数据!"); return; } // 解析JSON数据 JavaScriptSerializer serializer = new JavaScriptSerializer(); List items = serializer.Deserialize>(jsonData); // 写入数据库 if (InsertQuoteItems(items)) { ShowAlert("成功写入 " + items.Count + " 条报价单数据!"); CloseWindow(); } else { ShowAlert("写入报价单时发生错误!"); } } catch (Exception ex) { ShowAlert("处理数据时发生错误:" + ex.Message); } } private bool InsertQuoteItems(List items) { string sXLXHID = ""; string sXLGGID = ""; string sDYDJ = ""; string sST = ""; string sBJCP = ""; string sYXJG = "0"; string sYZ = ""; string sYSCP = ""; string sBH = ""; string sCPBJXJ = "0"; string sBJJEXJ = "0"; string sWGCPBZ = ""; string sDQDYDJID = ""; string sBJDID = PageParam.GetRTrimString("BJDID"); string sBJFLID = PageParam.GetRTrimString("BJFLID"); string sBJU003 = PageParam.GetRTrimString("BJU003"); string sBJU002 = PageParam.GetRTrimString("BJU002"); string sBJU018 = PageParam.GetRTrimString("BJU018"); int iXH = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XH", "XLXSBJDMX_BJDID='" + sBJDID + "'") + 1; int iXSSX = CMISproDataBase.GetMaxXH("DBERP", "XLXSBJDMX", "XLXSBJDMX_XSSX", "XLXSBJDMX_BJDID = '" + sBJDID + "'") + 1; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); BJFLXX bjflxx = XLBJDUtils.GetBJFLXX(sBJFLID); string sErrorNum = ""; int iStartXH = 0; if (iStartXH == 0) { iStartXH = iXH; } try { //研发自测:周国强2025/4/25 18:19:20 dberp.BeginTrans(); sSQL.Clear(); sSQL.Add(" insert into XLXSBJDMX( "); sSQL.Add(" XLXSBJDMX_BJDID, XLXSBJDMX_XH, XLXSBJDMX_XSSX, XLXSBJDMX_XLXHID, XLXSBJDMX_XLGGID, "); sSQL.Add(" XLXSBJDMX_XLBZID,XLXSBJDMX_XDXLBZID,XLXSBJDMX_XDXLXHID, XLXSBJDMX_DYDJID, XLXSBJDMX_XLYSID, XLXSBJDMX_BJCP,XLXSBJDMX_BJCPSD,XLXSBJDMX_WGCPBZ, "); sSQL.Add(" XLXSBJDMX_JLDW, XLXSBJDMX_BJSL, XLXSBJDMX_JGBBJ, XLXSBJDMX_TZQCPBJ,XLXSBJDMX_TZCPBJ,XLXSBJDMX_CPBJ,XLXSBJDMX_BJSDBZ,XLXSBJDMX_TZQBJJE, XLXSBJDMX_BJJE, XLXSBJDMX_JGBJJ,XLXSBJDMX_CLCB,XLXSBJDMX_JGBBJJCL,XLXSBJDMX_JGBBJJCE,XLXSBJDMX_CLZL, "); sSQL.Add(" XLXSBJDMX_BJDHQCLCB,XLXSBJDMX_CLCBJCL,XLXSBJDMX_JGBBJLJJCL,XLXSBJDMX_YXJG,XLXSBJDMX_YZ,XLXSBJDMX_YSCP,XLXSBJDMX_FBH,XLXSBJDMX_CPBJXJ,XLXSBJDMX_BJJEXJ,XLXSBJDMX_BZ, XLXSBJDMX_DZSC,XLXSBJDMX_WHRID, XLXSBJDMX_WHR, XLXSBJDMX_WHSJ)"); sSQL.Add(" values("); sSQL.Add(" :XLXSBJDMX_BJDID, :XLXSBJDMX_XH, :XLXSBJDMX_XSSX, :XLXSBJDMX_XLXHID, :XLXSBJDMX_XLGGID, "); sSQL.Add(" :XLXSBJDMX_XLBZID,:XLXSBJDMX_XDXLBZID,:XLXSBJDMX_XDXLXHID, isnull(:XLXSBJDMX_DYDJID,' '), :XLXSBJDMX_XLYSID, :XLXSBJDMX_BJCP,:XLXSBJDMX_BJCPSD,:XLXSBJDMX_WGCPBZ, "); sSQL.Add(" :XLXSBJDMX_JLDW, :XLXSBJDMX_BJSL, :XLXSBJDMX_JGBBJ, :XLXSBJDMX_TZQCPBJ,:XLXSBJDMX_TZCPBJ,:XLXSBJDMX_CPBJ,:XLXSBJDMX_BJSDBZ,:XLXSBJDMX_TZQBJJE, :XLXSBJDMX_BJJE, :XLXSBJDMX_JGBJJ,:XLXSBJDMX_CLCB,:XLXSBJDMX_JGBBJJCL,:XLXSBJDMX_JGBBJJCE,:XLXSBJDMX_CLZL, "); sSQL.Add(" :XLXSBJDMX_BJDHQCLCB,:XLXSBJDMX_CLCBJCL,:XLXSBJDMX_JGBBJLJJCL,:XLXSBJDMX_YXJG,:XLXSBJDMX_YZ,:XLXSBJDMX_YSCP,:XLXSBJDMX_FBH,isnull(:XLXSBJDMX_CPBJXJ,0),isnull(:XLXSBJDMX_BJJEXJ,0),:XLXSBJDMX_BZ, :XLXSBJDMX_DZSC,:XLXSBJDMX_WHRID, :XLXSBJDMX_WHR, :XLXSBJDMX_WHSJ)"); sSQL.ParamByName("XLXSBJDMX_BJDID").Value = sBJDID; #region 换行时,插入前一行数据 foreach (QuoteItem item in items) { string tmpXLXHID = item.XLXHID; string tmpXLGGID = item.XLGGID; string tmpXLBZID = "G"; string tmpDYDJID = item.DYDJID; bool bExistCLQD = XLBJDUtils.ExistCLQD(ref tmpXLXHID, ref tmpXLGGID, ref tmpXLBZID, ref tmpDYDJID); if (bExistCLQD) { sXLXHID = tmpXLXHID; sXLGGID = tmpXLGGID; sST = tmpXLBZID; sDYDJ = tmpDYDJID; //重新赋值 sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = sXLXHID; sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = sXLGGID; sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = sST; sSQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = sST; if (sBJCP.Equals("")) { sSQL.ParamByName("XLXSBJDMX_BJCP").Value = sXLXHID + "-" + sDYDJ + " " + sXLGGID; } sDQDYDJID = sDYDJ; } else { sSQL.ParamByName("XLXSBJDMX_XLXHID").Value = tmpXLXHID; sSQL.ParamByName("XLXSBJDMX_XDXLXHID").Value = tmpXLXHID; sSQL.ParamByName("XLXSBJDMX_XLGGID").Value = tmpXLGGID; sSQL.ParamByName("XLXSBJDMX_XLBZID").Value = tmpXLBZID; sSQL.ParamByName("XLXSBJDMX_XDXLBZID").Value = tmpXLBZID; if (sBJCP.Equals("")) { sSQL.ParamByName("XLXSBJDMX_BJCP").Value = tmpXLXHID + "-" + tmpDYDJID + " " + tmpXLGGID; } sDQDYDJID = tmpDYDJID; } if (tmpDYDJID.Trim().Equals("")) { sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = GetMrDYDJ(tmpXLXHID, tmpXLGGID, tmpXLBZID); } else { sSQL.ParamByName("XLXSBJDMX_DYDJID").Value = tmpDYDJID; } if (!sBJCP.Equals("")) { sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "Y"; } else { sSQL.ParamByName("XLXSBJDMX_BJCPSD").Value = "N"; } sSQL.ParamByName("XLXSBJDMX_XH").Value = iXH; sSQL.ParamByName("XLXSBJDMX_XSSX").Value = iXSSX; sSQL.ParamByName("XLXSBJDMX_XLYSID").Value = XLBJDInfo.GetDefaultYSID(sXLXHID, sXLGGID); sSQL.ParamByName("XLXSBJDMX_JGBBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZQCPBJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_TZCPBJ").Value = 0; sSQL.ParamByName("XLXSBJDMX_YXJG").Value = CMISproConvert.StrToFloat(sYXJG, 0); sSQL.ParamByName("XLXSBJDMX_YZ").Value = sYZ; sSQL.ParamByName("XLXSBJDMX_YSCP").Value = sYSCP; sSQL.ParamByName("XLXSBJDMX_FBH").Value = sBH; sSQL.ParamByName("XLXSBJDMX_CPBJ").Value = 0; sSQL.ParamByName("XLXSBJDMX_CPBJXJ").Value = CMISproConvert.StrToFloat(sCPBJXJ, 0); sSQL.ParamByName("XLXSBJDMX_BJJEXJ").Value = CMISproConvert.StrToFloat(sBJJEXJ, 0); sSQL.ParamByName("XLXSBJDMX_BJSDBZ").Value = "N"; sSQL.ParamByName("XLXSBJDMX_JGBJJ").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BJDHQCLCB").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_CLZL").Value = 0.0; sSQL.ParamByName("XLXSBJDMX_BZ").Value = ""; sSQL.ParamByName("XLXSBJDMX_BJJE").Value = 0; sSQL.ParamByName("XLXSBJDMX_BJSL").Value = string.IsNullOrEmpty(item.BJSL) ? 0 : CMISproConvert.StrToFloat(item.BJSL, 0); sSQL.ParamByName("XLXSBJDMX_TZQBJJE").Value = 0; sSQL.ParamByName("XLXSBJDMX_JLDW").Value = sBJU003; sSQL.ParamByName("XLXSBJDMX_JGBBJJCE").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_CLCBJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_JGBBJLJJCL").Value = 0; sSQL.ParamByName("XLXSBJDMX_WGCPBZ").Value = sWGCPBZ; if (XLBJDUtils.ISDZBZ(sST)) { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "Y"; } else { sSQL.ParamByName("XLXSBJDMX_DZSC").Value = "N"; } sSQL.ParamByName("XLXSBJDMX_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSBJDMX_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSBJDMX_WHSJ").Value = CMISproConvert.ConvertTime(DateTime.Now); dberp.ExecSQL(sSQL); iXH++; iXSSX++; } #endregion XLBJDUtils.UpdateXDXLBZID(dberp, sSQL, sBJDID, "", iStartXH - 1, ref sErrorNum); XLBJDCalcUtils.CalcBJDMXAfterIns(dberp, sSQL, sBJDID, iStartXH, sBJU002, sBJU003, sBJU018, tSession.UserId, tSession.UserName, ref sErrorNum); dberp.CommitTrans(); return true; } catch (Exception ex) { dberp.RollbackTrans(); ShowMessage(ex.Message); return false; } } private void ShowAlert(string message) { ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + message.Replace("'", "\\'") + "');", true); } // 用于反序列化的辅助类 public class QuoteItem { private string _XLXHID; private string _DYDJID; private string _XLGGID; private string _BJSL; public string XLXHID { get { return _XLXHID; } set { _XLXHID = value; } } public string DYDJID { get { return _DYDJID; } set { _DYDJID = value; } } public string XLGGID { get { return _XLGGID; } set { _XLGGID = value; } } public string BJSL { get { return _BJSL; } set { _BJSL = value; } } } public string GetMrDYDJ(string sXLXHID, string sXLGGID, string sXLBZID) { //SQL语句自测:周国强 2025/3/30 20:17:00 string sMrDYDJID = ""; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sql = new TSQL(dberp); sql.Add("SELECT XLXSCLQD_DYDJID FROM XLXSCLQD WHERE XLXSCLQD_XLXHID=:pXLXHID AND XLXSCLQD_XLGGID=:pXLGGID and XLXSCLQD_XLBZID=:pXLBZID "); sql.ParamByName("pXLXHID").Value = sXLXHID; sql.ParamByName("pXLGGID").Value = sXLGGID; sql.ParamByName("pXLBZID").Value = sXLBZID; DataSet ds = dberp.OpenDataSet(sql); if (ds.Tables[0].Rows.Count == 1) { sMrDYDJID = ds.Tables[0].Rows[0][0].ToString().Trim(); } return sMrDYDJID; } } }