using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using CoreFS.SA06; using Infragistics.Win.UltraWinTree; using System.Collections; using Infragistics.Win.UltraWinGrid; using Core.StlMes.Client.Qcm; using com.steering.pss.sale.order.model; using Core.StlMes.Client.SaleOrder.Dialog; namespace Core.StlMes.Client.SaleOrder { public delegate void PopupOrderSpecialHandler(object sender, OrderSpecialInfoArgs e); public partial class PopupOrderSpecialInfo : FrmBase { private FrmOrderSpecialInfo _frmOrderSpecialInfo; public event PopupOrderSpecialHandler PopupOrderSpecialEvent; private string _psc; private string _user; private string _reviewNumber; private string _msc; //private string _dimater; //private string _height; private string _model; private string _custAlphaNo; private string _ordLnPk; private string _specCode = ""; private string _specName = ""; private string _ordPk; private string _userDesc = string.Empty; private string _pscDesc = string.Empty; private string _modelDesc = string.Empty; private string _useCode = ""; private string closeAction; public PopupOrderSpecialInfo(string[] args, string exceptionMsg, OpeBase ob) { InitializeComponent(); ExceptionHelper.RegistException(); _psc = args[0]; _user = args[1]; _reviewNumber = args[2]; _msc = args[3]; //_dimater = args[4]; //_height = args[5]; _model = args[6]; _custAlphaNo = args[7]; _ordLnPk = args[8]; _specCode = args[9]; _specName = args[10]; _ordPk = args[11]; this.ob = ob; ultraStatusBar1.Panels["ExMsg"].Text = exceptionMsg; GetDesc(); if (String.IsNullOrEmpty(_userDesc.ToString()) || String.IsNullOrEmpty(_pscDesc.ToString()) || String.IsNullOrEmpty(_modelDesc.ToString())) { MessageUtil.ShowWarning("请维护用户/产品/扣型!"); return; } _frmOrderSpecialInfo = new FrmOrderSpecialInfo(); DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{new DataColumn("MSC"), new DataColumn("PSC"), new DataColumn("MODEL_CODE"), new DataColumn("FINAL_USER"), new DataColumn("FINAL_USER_DESC"), new DataColumn("PSC_DESC"), new DataColumn("SPEC_NAME"), new DataColumn("MODEL_DESC"), new DataColumn("CUST_ALPHA_NO"), new DataColumn("SPEC_CODE")}); DataRow dr = dt.NewRow(); dr["MSC"] = _msc; dr["PSC"] = _psc; dr["MODEL_CODE"] = _model; dr["FINAL_USER"] = _user; dr["FINAL_USER_DESC"] = _userDesc; dr["PSC_DESC"] = _pscDesc; dr["SPEC_NAME"] = _specName; dr["MODEL_DESC"] = _modelDesc; dr["CUST_ALPHA_NO"] = _custAlphaNo; dr["SPEC_CODE"] = _specCode; _frmOrderSpecialInfo.Dr = dr; _frmOrderSpecialInfo.FiterMsc = _msc; _frmOrderSpecialInfo.IsPopup = true; _frmOrderSpecialInfo.PopupLoad(ob); this.panel5.Controls.Add(_frmOrderSpecialInfo.SplitContainer1); this.panel5.Controls.Add(_frmOrderSpecialInfo.UltraGroupBox1); _frmOrderSpecialInfo.UltraToolbarsManager1.DockWithinContainer = this.panel2; _frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["评审通过"].SharedProps.Visible = true; _frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["评审不通过"].SharedProps.Visible = true; _frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["确认"].SharedProps.Visible = false; _frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["新增"].SharedProps.Visible = false; _frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["作废"].SharedProps.Visible = false; //_frmOrderSpecialInfo.UltraToolbarsManager1.Toolbars[0].Tools["修改"].SharedProps.Visible = false; _frmOrderSpecialInfo.UltraToolbarsManager1.ToolClick += new Infragistics.Win.UltraWinToolbars.ToolClickEventHandler(UltraToolbarsManager1_ToolClick); } private void UltraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { if (e.Tool.Key == "评审通过") { UltraTreeNode node = _frmOrderSpecialInfo.UltraTree.ActiveNode; if (node.Key == "STANDRADKEY") return; if (node == null) { MessageUtil.ShowWarning("请选择一条记录进行评审!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否确认评审通过?") == DialogResult.No) return; if (node.Tag.ToString() == "a") { if (PopupOrderSpecialEvent != null) { DataRow[] drs = _frmOrderSpecialInfo.DtMsc.Select("MSC = '" + node.Key + "'"); if (drs.Length == 0) return; OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); e2.Result = "1"; e2.Msc = drs[0]["MSC"].ToString().Split(',')[0]; e2.MscDesc = drs[0]["MSC_DESC"].ToString(); e2.UseCode = drs[0]["USE_CODE"].ToString(); e2.UseDesc = drs[0]["USE_DESC"].ToString(); e2.ProductType = drs[0]["PRODUC_TYPE"].ToString(); e2.CustAlphaNo = _custAlphaNo; ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.setAlphaRCust", new object[] { e2.Msc, _user, _userDesc, CoreUserInfo.UserInfo.GetUserName() }, ob); PopupOrderSpecialEvent(this, e2); } closeAction = "Ok"; this.DialogResult = DialogResult.OK; return; } DataTable dtComPsc = GetComPsc(_psc); string productType = dtComPsc.Rows[0]["PRODUC_TYPE"].ToString(); if (productType == "C" || productType == "D") { //ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.setCustAlphaNoState", // new object[] { _custAlphaNo, UserInfo.GetUserName()}, ob); //closeAction = "Ok"; //OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); //e2.Result = "1"; //e2.Msc = ""; //e2.MscDesc = ""; //e2.UseCode = ""; //e2.UseDesc = ""; //e2.ProductType = ""; //e2.CustAlphaNo = _custAlphaNo; //PopupOrderSpecialEvent(this, e2); //this.DialogResult = DialogResult.OK; //return; if (GetMscByCustAlphaNo(_psc, _custAlphaNo) == "") { DataTable dtBaseStd = GetComBaseStdByPsc(); string stdCode = dtBaseStd.Rows[0]["STD_CODE"].ToString(); PopupProductManage popupProductManage = new PopupProductManage(stdCode, _psc, "", ob, "Panel2"); if (popupProductManage.ShowDialog() == DialogResult.OK) { _useCode = popupProductManage.AlphaCode; } else { return; } } CreateMsc(_custAlphaNo, null, productType); return; } DataTable dtMsc = null; ArrayList allData = GetAllData(); object[] results = IsExistSameData(allData, _custAlphaNo, _psc); string msc = results[1].ToString(); string cic = results[2].ToString(); string pic = results[3].ToString(); string sic = results[4].ToString(); string dic = results[5].ToString(); string wic = results[6].ToString(); string gic = results[7].ToString(); ArrayList insrtChemData = (ArrayList)results[8]; ArrayList insrtPhyData = (ArrayList)results[9]; ArrayList insrtSpecData = (ArrayList)results[10]; ArrayList insrtDetectionData = (ArrayList)results[11]; ArrayList insrtWaterData = (ArrayList)results[12]; ArrayList insrtProcessData = (ArrayList)results[13]; int flag = int.Parse(results[14].ToString()); int insrtCnt = insrtChemData.Count + insrtPhyData.Count + insrtSpecData.Count + insrtDetectionData.Count + insrtWaterData.Count + insrtProcessData.Count; if (results[0].ToString() == "True" && insrtCnt == 0 && flag == 3) { if (GetStdRCustCnt(msc, _user) == 0) { DialogResult dlResult = MessageUtil.ShowYesNoAndQuestion(@"当前产品下存在与Alpha要求相同的一套MSC(n), 是否允许[" + _userDesc + "]使用[" + results[1].ToString() + "]?"); if (dlResult == DialogResult.Yes) { InsertStdRCust(msc, _user); dtMsc = GetComMscByMsc(msc); OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); e2.Result = "1"; e2.Msc = dtMsc.Rows[0]["MSC"].ToString(); e2.MscDesc = dtMsc.Rows[0]["MSC_DESC"].ToString(); e2.UseCode = dtMsc.Rows[0]["USE_CODE"].ToString(); e2.UseDesc = dtMsc.Rows[0]["USE_DESC"].ToString(); e2.ProductType = dtMsc.Rows[0]["MSC_STYLE"].ToString(); e2.CustAlphaNo = _custAlphaNo; PopupOrderSpecialEvent(this, e2); closeAction = "Ok"; this.DialogResult = DialogResult.OK; } else { this.Close(); } } else { dtMsc = GetComMscByMsc(msc); OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); e2.Result = "1"; e2.Msc = dtMsc.Rows[0]["MSC"].ToString(); e2.MscDesc = dtMsc.Rows[0]["MSC_DESC"].ToString(); e2.UseCode = dtMsc.Rows[0]["USE_CODE"].ToString(); e2.UseDesc = dtMsc.Rows[0]["USE_DESC"].ToString(); e2.ProductType = dtMsc.Rows[0]["MSC_STYLE"].ToString(); e2.CustAlphaNo = _custAlphaNo; PopupOrderSpecialEvent(this, e2); closeAction = "Ok"; this.DialogResult = DialogResult.OK; } SetPscRMscCustAlphaNo(dtMsc.Rows[0]["MSC"].ToString(), _custAlphaNo, _model, _modelDesc, cic, pic, dic, sic, wic, gic); } else { if (flag == 0) { DataTable dtBaseStd = GetComBaseStdByPsc(); string stdCode = dtBaseStd.Rows[0]["STD_CODE"].ToString(); PopupProductManage popupProductManage = new PopupProductManage(stdCode, _psc, "", ob, "Panel2"); if (popupProductManage.ShowDialog() == DialogResult.OK) { _useCode = popupProductManage.AlphaCode; } else { return; } } else { DialogResult dlogRst = MessageUtil.ShowYesNoAndQuestion("系统检测到,Alpha码" + _custAlphaNo + "的技术要求与冶金规范" + msc + "的项目一致,是否允许合并到此冶金规范中?"); if (dlogRst == System.Windows.Forms.DialogResult.No) { return; } } CreateMsc(node.Key, results, productType); } } else if (e.Tool.Key == "评审不通过") { UltraTreeNode node = _frmOrderSpecialInfo.UltraTree.ActiveNode; if (node.Key == "STANDRADKEY") return; if (node == null) { MessageUtil.ShowWarning("请选择一条记录进行评审!"); return; } dlgReviewMemo dlg = new dlgReviewMemo(); dlg.ReviewFlag = 0; dlg.ReviewSatus = "评审不通过"; DialogResult result = dlg.ShowDialog(); ArrayList list = new ArrayList(); list.Add(new string[]{_ordPk, _ordLnPk}); string userName = CoreUserInfo.UserInfo.GetUserName(); string userDept = ClsBaseInfo.GetDepartBySectionId(CoreUserInfo.UserInfo.GetDeptid(), ob) + "-" + UserInfo.GetDepartment(); if (result == DialogResult.OK) { //if (MessageUtil.ShowYesNoAndQuestion("是否确认评审不通过?") == DialogResult.No) return; SlmCustAlphaEntity custAlphaEntity = new SlmCustAlphaEntity(); custAlphaEntity.CustAlphaNo = node.Key; custAlphaEntity.CreateName = CoreUserInfo.UserInfo.GetUserName(); custAlphaEntity.CustAlphaSts = "F"; custAlphaEntity.ReviewFRs = dlg.ReviewMemo; string strJSON = JSONFormat.Format(custAlphaEntity); ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.updateCustAlphaStateSql", new object[] { strJSON, list, userDept}, ob); this.Close(); } } } private void CreateMsc(string custAlphaNo, object[] noSameData, string productType) { CreateUserAndMscParms parms = new CreateUserAndMscParms(); if (_frmOrderSpecialInfo.SpecStyle == "C") { parms.SpecCode = _frmOrderSpecialInfo.SpecCode; parms.SpecName = _frmOrderSpecialInfo.SpecName; } else { parms.Dimater = _frmOrderSpecialInfo.strD; parms.Height = _frmOrderSpecialInfo.strH; } parms.Model = _model; parms.Psc = _psc; parms.UseCode = _useCode; parms.ReviewNumber = _reviewNumber; parms.User = _user; parms.CustAlphaNoChem = custAlphaNo; parms.CustAlphaNoDetection = custAlphaNo; parms.CustAlphaNoPhy = custAlphaNo; parms.CustAlphaNoProcess = custAlphaNo; parms.CustAlphaNoSpec = custAlphaNo; parms.CustAlphaNoWater = custAlphaNo; parms.CreateName = CoreUserInfo.UserInfo.GetUserName(); parms.OrdLnPk = _ordLnPk; parms.CustAlphaNo = custAlphaNo; string[] strs; if (productType == "C" || productType == "D") { strs = (string[])ServerHelper.SetDataReturnObj( "com.steering.pss.sale.order.qualityDesign.QualityMsc.CreateMsc", new object[] { JSONFormat.Format(parms) }, ob); } else { strs = (string[])ServerHelper.SetDataReturnObj( "com.steering.pss.sale.order.qualityDesign.QualityMsc.createUserAndMsc", new object[] { JSONFormat.Format(parms), noSameData }, ob); } if (PopupOrderSpecialEvent != null) { OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); e2.Result = "1"; e2.Msc = strs[0]; e2.MscDesc = strs[1]; e2.UseCode = strs[2]; e2.UseDesc = strs[3]; e2.ProductType = strs[4]; e2.CustAlphaNo = custAlphaNo; e2.Cic = strs[5]; e2.Pic = strs[6]; e2.Dic = strs[7]; e2.Sic = strs[8]; e2.Wic = strs[9]; e2.Gic = strs[10]; PopupOrderSpecialEvent(this, e2); } closeAction = "Ok"; this.DialogResult = DialogResult.OK; } private string GetMscByCustAlphaNo(string psc, string custAlphaNo) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.qualityDesign.QualityMsc.getMscByCustAlphaNo", new object[] { psc, custAlphaNo }, ob); if (dt.Rows.Count > 0) { return dt.Rows[0]["Value"].ToString(); } else { return ""; } } private DataRow GetSlmOrderLine(string ordLnPk) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.getSlmOrderLineByPk", new object[] { ordLnPk }, ob); if (dt.Rows.Count > 0) { return dt.Rows[0]; } else { return null; } } private ArrayList GetAllData() { ArrayList allData = new ArrayList(); ArrayList allChemData = new ArrayList(); ArrayList allPhyData = new ArrayList(); ArrayList allSpecData = new ArrayList(); ArrayList allDetectionData = new ArrayList(); ArrayList allWaterData = new ArrayList(); ArrayList allProcessData = new ArrayList(); foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid1.Rows) { SlmCustChemObject com = GetObjectData.GetStdChemObject(ugr); allChemData.Add(JSONFormat.Format(com)); } foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid2.Rows) { SlmCustPhyObject com = GetObjectData.GetSlmCustPhyData(ugr); allPhyData.Add(JSONFormat.Format(com)); } foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid3.Rows) { SlmCustSpecObject com = GetObjectData.GetSlmCustSpecData(ugr); allSpecData.Add(JSONFormat.Format(com)); } foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid4.Rows) { SlmCustDetectionObject com = GetObjectData.GetSlmCustDetectionData(ugr); allDetectionData.Add(JSONFormat.Format(com)); } foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid5.Rows) { SlmCustWaterObject com = GetObjectData.GetSlmCustWaterData(ugr); allWaterData.Add(JSONFormat.Format(com)); } foreach (UltraGridRow ugr in _frmOrderSpecialInfo.UltraGrid6.Rows) { SlmCustAlphaProObject com = GetObjectData.GetSlmCustAlphaProData(ugr); allProcessData.Add(JSONFormat.Format(com)); } allData.Add(allChemData); allData.Add(allPhyData); allData.Add(allSpecData); allData.Add(allDetectionData); allData.Add(allWaterData); allData.Add(allProcessData); return allData; } private void SetPscRMscCustAlphaNo(string msc, string custAlphaNo, string modelCode, string modelDesc, string cic, string pic, string dic, string sic, string wic, string gic) { ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.setPscRMscCustAlphaNo", new object[] { msc, custAlphaNo, CoreUserInfo.UserInfo.GetUserName(), modelCode, modelDesc, cic, pic, dic, sic, wic, gic}, ob); } private void InsertStdRCust(string msc, string user) { ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.insertStdRCust", new object[] { msc, user, CoreUserInfo.UserInfo.GetUserName(), _custAlphaNo}, ob); } private int GetStdRCustCnt(string msc, string user) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getStdRCustCnt", new object[] {msc, user}, ob); return int.Parse(dt.Rows[0][0].ToString()); } private DataTable GetComMscByPscCstAlpNo() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getComMscByPscCstAlpNo", new object[] { _psc, _custAlphaNo }, ob); return dt; } private DataTable GetComMscByMsc(string msc) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getComMscByMsc", new object[] { msc}, ob); return dt; } private DataTable GetComBaseStdByPsc() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getBaseStdByPsc", new object[]{ _psc }, ob); return dt; } private object[] IsExistSameData(ArrayList list, string custNo, string psc) { string strD = _frmOrderSpecialInfo.strD.TryParseDecimal() ? _frmOrderSpecialInfo.strD : ""; string strH = _frmOrderSpecialInfo.strH.TryParseDecimal() ? _frmOrderSpecialInfo.strH : ""; ArrayList list2 = new ArrayList(); list2.AddRange(custNo, psc, _custAlphaNo, "False", strD, strH, _model, _frmOrderSpecialInfo.SpecStyle, _specCode, _specName); CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.sale.order.CoreOrderSpecialInfo"; ccp.MethodName = "isExistSameData"; ccp.ServerParams = new object[] { list, list2 }; ccp = ob.ExecuteQuery(ccp, CoreInvokeType.Internal); return (object[])ccp.ReturnObject; } private DataTable GetComPsc(string psc) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getComPsc", new object[] { psc }, ob); return dt; } private void GetDesc() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.getDesc", new object[] { _user, _psc, _model }, ob); foreach (DataRow dr in dt.Rows) { if (dr[1].ToString() == "用户") { _userDesc = dr[0].ToString(); } else if (dr[1].ToString() == "产品") { _pscDesc = dr[0].ToString(); } else if (dr[1].ToString() == "扣型") { _modelDesc = dr[0].ToString(); } } } private string[] QueryUnitCodeByPsc(string psc) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryUnitCodeByPsc", new object[] { psc }, ob); string[] strs = new string[] { "", "" }; if (dt.Rows.Count > 0) { strs[0] = dt.Rows[0]["UNIT_CODE"].ToString(); strs[1] = dt.Rows[0]["DEPARTMENT_CODE"].ToString(); } return strs; } private void PopupOrderSpecialInfo_FormClosing(object sender, FormClosingEventArgs e) { if (PopupOrderSpecialEvent != null && closeAction == "") { OrderSpecialInfoArgs e2 = new OrderSpecialInfoArgs(); e2.Result = "0"; PopupOrderSpecialEvent(this, e2); } } private void PopupOrderSpecialInfo_Load(object sender, EventArgs e) { } } public class OrderSpecialInfoArgs : EventArgs { private string _result = ""; public string Result { get { return _result; } set { _result = value; } } private string _msc = ""; public string Msc { get { return _msc; } set { _msc = value; } } private string _mscDesc = ""; public string MscDesc { get { return _mscDesc; } set { _mscDesc = value; } } private string _useCode = ""; public string UseCode { get { return _useCode; } set { _useCode = value; } } private string _useDesc = ""; public string UseDesc { get { return _useDesc; } set { _useDesc = value; } } private string _productType = ""; public string ProductType { get { return _productType; } set { _productType = value; } } private string _custAlphaNo = ""; public string CustAlphaNo { get { return _custAlphaNo; } set { _custAlphaNo = value; } } private string _cic = ""; public string Cic { get { return _cic; } set { _cic = value; } } private string _pic = ""; public string Pic { get { return _pic; } set { _pic = value; } } private string _wic = ""; public string Wic { get { return _wic; } set { _wic = value; } } private string _gic = ""; public string Gic { get { return _gic; } set { _gic = value; } } private string _dic = ""; public string Dic { get { return _dic; } set { _dic = value; } } private string _sic = ""; public string Sic { get { return _sic; } set { _sic = value; } } } }