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.Server; using Core.Mes.Client.Comm.Control; using Infragistics.Win.UltraWinGrid; using Core.Mes.Client.Comm.Format; using System.Collections; using Core.Mes.Client.Comm.Tool; using Core.Mes.Client.Comm; using Infragistics.Win.UltraWinEditors; using System.Reflection; using Core.StlMes.Client.SaleOrder.Dialog; namespace Core.StlMes.Client.SaleOrder.ReviewForm { public partial class frmOrderReport : FrmBase { public frmOrderReport() { InitializeComponent(); this.IsLoadUserView = true; } /// /// 用于查询利库数据的参数 /// ArrayList listLiku = new ArrayList(); /// /// 重写基类toolBar方法 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "doQuery": doQuery(); break; case "doReport": doReport(); break; case "doClearReport": doClearReport(); break; case "Export": ExportData(); break; case "LiKu": ReportLiKu(); break; case "CheckNLK": CheckNLK(); break; case "CheckLK": CheckLK(); break; case "UpdatePresentStatus": UpdatePresentStatus(); break; case "doClose": this.Close(); break; } } private void UpdatePresentStatus() { ultraGridReport.UpdateData(); UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" }); if (dr.Length <= 0) { MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //这里只是先在界面判断一下状态,后台会实时查询状态的。 foreach (UltraGridRow urow in ultraGridReport.Rows) { if (Convert.ToBoolean(urow.Cells["CHK"].Value)) { if (urow.Cells["PORDERSTATUS"].Value.ToString() != "未提报") { MessageBox.Show("您选择的记录存在已经被处理的状态,不能修改提报状态,\r\n只有[未提报]可以修改提报状态!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); urow.Activate(); return; } if (urow.Cells["ORDERFROMCODE"].Value.ToString() != "100102") { MessageBox.Show("只有[国际贸易部]可以修改提报状态!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); urow.Activate(); return; } } } if (MessageBox.Show("是否确认修改提报状态选择的记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } ArrayList list = new ArrayList(); foreach (UltraGridRow urow in ultraGridReport.Rows) { if (Convert.ToBoolean(urow.Cells["CHK"].Value)) { ArrayList parm = new ArrayList(); string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString(); parm.Add(ordLnDlyPk); parm.Add(urow.Cells["PRESENT_STATUS"].Value.ToString()); list.Add(parm); } } CoreClientParam ccp = new CoreClientParam(); ccp.IfShowErrMsg = false; ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport"; ccp.MethodName = "UpdatePresentStatus"; ccp.ServerParams = new Object[] { list }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp == null) return; else { if (ccp.ReturnCode == -1) { MessageBox.Show(ccp.ReturnObject.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } } MessageBox.Show("修改完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); } /// /// 评审不利库的原因 /// private void CheckNLK() { ultraGridReport.UpdateData(); UltraGridRow ugr = ultraGridReport.ActiveRow; if (ugr == null) { MessageUtil.ShowWarning("请选择您要审核不利库愿意的交货行!"); return; } if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕") { MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只针对“生效状态”的交货行!"); ugr.Activate(); return; } string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString(); string str = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString(); DataTable lkDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryLKFlag", new object[] { ordLnDlyPk }, this.ob); if (lkDt != null && lkDt.Rows.Count > 0) { string lkFlag = lkDt.Rows[0]["IS_LIKU"].ToString2(); string lkCheck = lkDt.Rows[0]["NLK_CHECK"].ToString2(); if (lkFlag == "1") { if (lkCheck != "L") { MessageUtil.ShowWarning("您选择的交货行没有利库原因可审核!"); return; } } else { MessageUtil.ShowWarning("您选择的交货行没有利库原因可审核!"); return; } } else { MessageUtil.ShowWarning("交货行已不存在,请刷新数据!"); return; } FrmCheckNLK fcn = new FrmCheckNLK(ordLnDlyPk, this.ob); fcn.TipStr = str; fcn.ShowDialog(); } /// /// 对已经利库的数据进行评审 /// private void CheckLK() { ultraGridReport.UpdateData(); UltraGridRow ugr = ultraGridReport.ActiveRow; if (ugr == null) { MessageUtil.ShowWarning("请选择您要利库的交货行!"); return; } if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕") { MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只能对“生效状态”的交货行利库!"); ugr.Activate(); return; } string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString(); string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString(); if (!IsNeedCheckLK(ordLnDlyPk)) { MessageUtil.ShowWarning("您选择的交货行没有利库记录需要审核!"); ugr.Activate(); return; } FrmReportLiKu frl = new FrmReportLiKu(this.ob, "2"); frl.DataArr = this.ValidDataPurviewIds; frl.ListParm = listLiku; frl.OrdSaleOrg = saleOrg; frl.OrdLnDlyPk = ordLnDlyPk; frl.FormClosingQueryHandle += frl_FormClosingQueryHandle; frl.WindowState = FormWindowState.Maximized; frl.StartPosition = FormStartPosition.CenterScreen; frl.ShowDialog(); } /// /// 导出 /// private void ExportData() { GridHelper.ulGridToExcel(ultraGridReport, "提报数据"); } /// /// 取消提报 /// private void doClearReport() { ultraGridReport.UpdateData(); UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" }); if (dr.Length <= 0) { MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //这里只是先在界面判断一下状态,后台会实时查询状态的。 foreach (UltraGridRow urow in ultraGridReport.Rows) { if (Convert.ToBoolean(urow.Cells["CHK"].Value)) { if (urow.Cells["PORDERSTATUS"].Value.ToString() == "未提报") { MessageBox.Show("您选择的记录还没有提报,不能取消提报!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); urow.Activate(); return; } else if (urow.Cells["PORDERSTATUS"].Value.ToString() != "待接收") { MessageBox.Show("您选择的记录存在已经被处理的状态,不能取消提报,\r\n只有[待接收]可以取消提报!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); urow.Activate(); return; } } } if (MessageBox.Show("是否确认取消提报选择的记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } ArrayList list = new ArrayList(); foreach (UltraGridRow urow in ultraGridReport.Rows) { if (Convert.ToBoolean(urow.Cells["CHK"].Value)) { ArrayList parm = new ArrayList(); string ordPk = urow.Cells["ORD_PK"].Value.ToString(); string ordLnPk = urow.Cells["ORD_LN_PK"].Value.ToString(); string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString(); parm.Add(ordPk); parm.Add(ordLnPk); parm.Add(ordLnDlyPk); parm.Add(UserInfo.GetUserName()); list.Add(parm); } } CoreClientParam ccp = new CoreClientParam(); ccp.IfShowErrMsg = false; ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport"; ccp.MethodName = "doClearReport"; ccp.ServerParams = new Object[] { list }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp == null) return; else { if (ccp.ReturnCode == -1) { MessageBox.Show(ccp.ReturnObject.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } list = new ArrayList(); foreach (UltraGridRow urow in ultraGridReport.Rows) { if (Convert.ToBoolean(urow.Cells["CHK"].Value)) { if (urow.Cells["ORDERFROMCODE"].Value.ToString() != "100102") { continue; } ArrayList parm = new ArrayList(); string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString(); parm.Add(ordLnDlyPk); parm.Add(urow.Cells["PRESENT_STATUS"].Value.ToString()); list.Add(parm); } } if (list.Count > 0) { ccp = new CoreClientParam(); ccp.IfShowErrMsg = false; ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport"; ccp.MethodName = "UpdatePresentStatus"; ccp.ServerParams = new Object[] { list }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); } } MessageBox.Show("取消提报完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); } /// /// 获取当前选中交货行数据库中的状态 /// /// /// /// /// private string GetDeliverySts(string ordPk, string ordLnPk, string ordLnDlyPk) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.GetDeliverySts", new Object[] { ordPk, ordLnPk, ordLnDlyPk }, this.ob); return dt.Rows[0]["DELIVERY_STATUS"].ToString(); } /// /// 提报 /// private void doReport() { ultraGridReport.UpdateData(); ArrayList craft = new ArrayList(); UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" }); if (dr.Length <= 0) { MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } DataTable timeDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getServerTime", null, this.ob); int mon = Convert.ToInt16(timeDt.Rows[0][0].ToString().Substring(5, 2)); int year = Convert.ToDateTime(timeDt.Rows[0][0].ToString()).Year; ArrayList list = new ArrayList(); UltraGridRow[] rows = ultraGridReport.Rows.AsQueryable().Where(a => a.Cells["CHK"].Value.ToString().ToUpper() == "TRUE").ToArray(); foreach (UltraGridRow urow in rows) { string ordStr = "合同号:" + urow.Cells["ORDER_NO"].Value.ToString() + "/" + urow.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + urow.Cells["DELIVERY_NO"].Value.ToString(); if (urow.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕") { MessageUtil.ShowWarning(ordStr + "已经提报完毕,不必重复提报!"); urow.Activate(); return; } //合同行被锁定的 交货行不能提报! DataTable lockDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getOrderLineLock", new object[] { urow.Cells["ORD_LN_PK"].Value.ToString() }, this.ob); if (lockDt != null && lockDt.Rows.Count > 0) { if (lockDt.Rows[0][0].ToString() == "1") { MessageUtil.ShowWarning(ordStr + "所在的合同行已被锁定,合同处于合同变更中,无法提报!"); return; } } else { MessageUtil.ShowWarning(ordStr + "所在的合同行已不存在!"); return; } //合同行提报锁定的! DataTable lockDt1 = ServerHelper.GetData("com.steering.pss.sale.order.DAL.SlmOrderLineLockDAL.getOrderLineLock", new object[] { urow.Cells["ORD_LN_PK"].Value.ToString() }, this.ob); if (lockDt1 != null && lockDt1.Rows.Count > 0) { if (lockDt1.Rows[0][0].ToString() == "1") { MessageUtil.ShowWarning(ordStr + "该合同行提报排产被锁定请重新审批合同价格!不允许提报排产! "); return; } } string ordPk = urow.Cells["ORD_PK"].Value.ToString(); //现货合同不能提报 string ordType = ""; DataTable ordTypDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getOrderType", new object[] { ordPk }, this.ob); if (ordTypDt != null && ordTypDt.Rows.Count > 0) { ordType = ordTypDt.Rows[0][0].ToString(); } if (ordType.Equals("120102") || ordType.Equals("120105")) { MessageUtil.ShowWarning(ordStr + "的合同类型是现货合同或者贸易合同,无法提报!"); urow.Activate(); return; } else if (ordType.Equals("120103")) //研发合同 所有生效方可提报 { DataTable yfDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getAllEffect", new object[] { ordPk }, this.ob); if(yfDt!=null && yfDt.Rows.Count>0) { MessageUtil.ShowWarning(ordStr + "所在的合同下,存在尚未生效的合同行,只有整个合同都生效了,方可提报!"); urow.Activate(); return; } } if (urow.Cells["REVIEW_ASK_END"].Value == null || urow.Cells["REVIEW_ASK_END"].Value.ToString() == "") { MessageUtil.ShowWarning(ordStr + "轧制月份为空,不能提报,可以尝试退回交货期进行交货期分析\n或者进行交货行变更"); return; } var DateSum = new List(); for (var date = Convert.ToDateTime(timeDt.Rows[0][0].ToString()); date < Convert.ToDateTime(timeDt.Rows[0][0].ToString()).AddMonths(12); date = date.AddMonths(1)) { DateSum.Add(date.ToString("yyyy-MM")); } if (!DateSum.Contains(urow.Cells["REVIEW_ASK_END"].Value.ToString())) { MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + string.Join(",", DateSum) + ")月,不能提报!"); urow.Activate(); return; } //if (mon < 11) //{ // if (Convert.ToInt16(urow.Cells["REVIEW_ASK_END"].Value.ToString().Substring(5, 2)) < mon // || Convert.ToInt16(urow.Cells["REVIEW_ASK_END"].Value.ToString().Substring(5, 2)) > mon + 2) // { // int mon1 = mon + 1; // int mon2 = mon + 2; // MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + mon + "," + mon1 + "," + mon2 + ")月,不能提报!"); // urow.Activate(); // return; // } //} //else //{ // int cmon = Convert.ToDateTime(urow.Cells["REVIEW_ASK_END"].Value.ToString()).Month; //10 1月 // int cyear = Convert.ToDateTime(urow.Cells["REVIEW_ASK_END"].Value.ToString()).Year; // 2015 2016年 // DateTime time = new DateTime(cyear, cmon, 1); // DateTime time1 = new DateTime(year, mon, 1); //本月 // DateTime time2 = new DateTime(); //下下月 // int cmon1 = mon + 1; // int cmon2 = mon + 2; // string cmon1str = ""; // string cmon2str = ""; // if (cmon1 > 12) // { // cmon1str = (year + 1).ToString() + "年" + (cmon1 - 12).ToString(); // } // else // { // cmon1str = (year).ToString() + "年" + (cmon1).ToString(); // } // if (cmon2 > 12) // { // cmon2str = (year + 1).ToString() + "年" + (cmon2 - 12).ToString(); // time2 = new DateTime(year + 1, cmon2 - 12, 1); // } // else // { // cmon2str = (year).ToString() + "年" + (cmon2).ToString(); // time2 = new DateTime(year, cmon2, 1); // } // if (time < time1 || time > time2) // { // MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + year.ToString() + "年" + mon + "," + cmon1str + "," + cmon2str + ")月,不能提报!"); // urow.Activate(); // return; // } //} string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString(); string ordLnPk = urow.Cells["ORD_LN_PK"].Value.ToString(); DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getPrdcrIsNull", new object[] { ordLnPk }, this.ob); if (dt != null && dt.Rows.Count > 0) { MessageUtil.ShowWarning(ordStr + "的合同没有维护监制要求!"); urow.Activate(); return; } DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getPrdcrNotNull", new object[] { ordLnPk }, this.ob); if (dt1 != null && dt1.Rows.Count > 0) { MessageUtil.ShowWarning(ordStr + "的合同,维护的监制没有生效!"); urow.Activate(); return; } if (urow.Cells["ORDERFROMCODE"].Value.ToString() == "100102" && urow.Cells["PRESENT_STATUS"].Value.ToString() != "可提报") { MessageUtil.ShowWarning(ordStr + "的合同为不可提报状态,不能提报!"); urow.Activate(); return; } listLiku = new ArrayList(); listLiku.Add(urow.Cells["PRODUCCODE"].Value.ToString()); listLiku.Add(urow.Cells["STEELCODE"].Value.ToString()); listLiku.Add(urow.Cells["SPEC_CODE"].Value.ToString()); listLiku.Add(urow.Cells["MODEL_CODE"].Value.ToString()); listLiku.Add(urow.Cells["STD_STYLE_DESC"].Value.ToString()); listLiku.Add(urow.Cells["STD_STYLE_DESC"].Value.ToString()); //判断是否已经选择是否利库 bool isSelected = false; DataTable lkDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryLKFlag", new object[] { ordLnDlyPk }, this.ob); if (lkDt != null && lkDt.Rows.Count > 0) { string lkFlag = lkDt.Rows[0]["IS_LIKU"].ToString2(); string lkCheck = lkDt.Rows[0]["NLK_CHECK"].ToString2(); if (lkFlag == "1" && this.CustomInfo.Equals("120504")) { isSelected = true; if (lkCheck == "L") { MessageUtil.ShowWarning(ordStr + "请先审核放弃利库的原因!"); return; } } } else { MessageUtil.ShowWarning(ordStr + "交货行已不存在,请刷新数据!"); return; } //是否有成品库存 bool hasMat = false; if (!isSelected && this.CustomInfo.Equals("120504")) { string saleOrg = urow.Cells["ORDERFROMCODE"].Value.ToString(); //是否有利库的资源 然后判断交货行有没有利库 DataTable matDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryIsExistsMat", new object[] { listLiku, saleOrg, urow.Cells["SUPPLY_UNIT_CODE"].Value.ToString() }, this.ob); if (matDt != null && matDt.Rows.Count > 0) { if (Convert.ToInt16(matDt.Rows[0][0].ToString3()) > 0) { hasMat = true; } } DataTable liKuDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryIsLiKu", new object[] { ordLnDlyPk }, this.ob); if (liKuDt != null && liKuDt.Rows.Count > 0) { if (hasMat) { if (Convert.ToDecimal(liKuDt.Rows[0][0].ToString3()) < Convert.ToDecimal(urow.Cells["ORDERWEIGHT"].Value)) { string str = ordStr + " 存在可利库的成品信息!\n请问是否利库?"; if (MessageUtil.ShowYesNoAndQuestion(str) == DialogResult.No) { //更新交货行状态 同时保存原因 dlgReviewMemo dlg = new dlgReviewMemo(); dlg.ReviewSatus = "请输入有库存而不利库的原因"; dlg.ReviewFlag = 4; dlg.ShowDialog(); if (dlg.DialogResult == DialogResult.OK) { string reviewMemo = dlg.ReviewMemo; int count = ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderReport.updateLKFlag", new object[] { ordLnDlyPk, reviewMemo }, this.ob); if (count > 0) { MessageUtil.ShowTips("请审核不利库的原因!"); return; } } return; } else { MessageUtil.ShowTips("请点击利库按钮进行利库操作!"); } return; } } } } //判断是否利库了 但利库数据尚未审核的 if (IsNeedCheckLK(ordLnDlyPk) && this.CustomInfo.Equals("120504")) { MessageUtil.ShowWarning(ordStr + "存在没有审核的利库数据,请审核!"); return; } DataRow row = null; DataRow[] dRow = SLM_ORDER_LINE_DELIVERY.Select("ORD_LN_DLY_PK = '" + ordLnDlyPk + "'"); row = dRow[0]; //for (int i = 0; i < SLM_ORDER_LINE_DELIVERY.Rows.Count; i++) //{ // if (ordLnDlyPk.Equals(SLM_ORDER_LINE_DELIVERY.Rows[i]["ORD_LN_DLY_PK"].ToString())) // { // row = SLM_ORDER_LINE_DELIVERY.Rows[i]; // break; // } //} ReportOrderLineDelivery reportModel = new ReportOrderLineDelivery(); reportModel.OrdPk = row["ORD_PK"].ToString(); reportModel.OrdLnPk = row["ORD_LN_PK"].ToString(); // ORD_LN_DLY_PK VARCHAR2(40) NOT NULL, reportModel.OrdLnDlyPk = row["ORD_LN_DLY_PK"].ToString(); // ORDER_NO VARCHAR2(20), reportModel.OrderNo = row["ORDER_NO"].ToString(); // ORDER_SEQ VARCHAR2(3), reportModel.OrderSeq = row["ORDER_SEQ"].ToString(); // DELIVERY_NO VARCHAR2(3), reportModel.DeliveryNo = row["DELIVERY_NO"].ToString(); // PRD_CLS VARCHAR2(20), reportModel.PrdCls = row["PRD_CLS"].ToString(); // PRODUCCODE VARCHAR2(20), reportModel.Produccode = row["PRODUCCODE"].ToString(); // PRODUCNAME VARCHAR2(100), reportModel.Producname = row["PRODUCNAME"].ToString(); // STD_CODE VARCHAR2(20), reportModel.StdCode = row["STD_CODE"].ToString(); // STD_NAME VARCHAR2(200), reportModel.StdName = row["STD_NAME"].ToString(); // STEELCODE VARCHAR2(10), reportModel.Steelcode = row["STEELCODE"].ToString(); // STEELNAME VARCHAR2(100), reportModel.Steelname = row["STEELNAME"].ToString(); // SPEC_CODE VARCHAR2(20), reportModel.SpecCode = row["SPEC_CODE"].ToString(); string specCode = row["SPEC_CODE"].ToString(); // SPEC_NAME VARCHAR2(100), reportModel.SpecName = row["SPEC_NAME"].ToString(); // OUTDIAMETER外径 reportModel.Outdiameter = row["OUTDIAMETER"].ToString(); // WALLTHICK NUMBER(10,3), reportModel.Wallthick = row["WALLTHICK"].ToString(); // LEN_NO VARCHAR2(20), reportModel.LenNo = row["LEN_NO"].ToString(); // LENGTHMAX NUMBER(10,3), reportModel.Lengthmax = row["LENGTHMAX"].ToString(); // LENGTHMIN NUMBER(10,3), reportModel.Lengthmin = row["LENGTHMIN"].ToString(); // LENGTHDISC VARCHAR2(100), reportModel.Lengthdisc = row["LENGTHDISC"].ToString(); // MODEL_CODE VARCHAR2(20), reportModel.ModelCode = row["MODEL_CODE"].ToString(); // MODEL_DESC VARCHAR2(100), reportModel.ModelDesc = row["MODEL_DESC"].ToString(); // ORDER_UNIT VARCHAR2(20), reportModel.OrderUnit = row["ORDER_UNIT"].ToString(); string ordUnit = row["ORDER_UNIT"].ToString(); string elimNum = ""; //脱单量 string elimWgt = ""; string elimLen = ""; string chargeNum = ""; //利库量 string chargeWgt = ""; string chargeLen = ""; decimal ordQty = Convert.ToDecimal(row["DELVRY_QTY"].ToString()); //交货行的交货量 // reportModel.OrderQty = row["DELVRY_QTY"].ToString(); 以前的提报量 //reportModel.Orderweight = row["ORDERWEIGHT"].ToString(); 估算重量 //reportModel.Totlength = row["TOTLENGTH"].ToString(); 保总长 decimal repQty = 0; //提报量 订单量-利库量+脱单量 decimal estWgt = 0; //估算重量 decimal sureLen = 0; //保总长 if ("120504".Equals(this.CustomInfo.ToString())) { //新增 利库量 脱单量的处理逻辑 DataTable dt2 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getProcessOrderInfo", new object[] { row["ORD_LN_DLY_PK"].ToString() }, ob); if (dt2 != null && dt2.Rows.Count > 0) { elimNum = dt2.Rows[0]["ELIM_NUM"].ToString(); elimWgt = dt2.Rows[0]["ELIM_WGT"].ToString(); elimLen = dt2.Rows[0]["ELIM_LEN"].ToString(); chargeNum = dt2.Rows[0]["CHARGE_NUM"].ToString(); chargeWgt = dt2.Rows[0]["CHARGE_WGT"].ToString(); chargeLen = dt2.Rows[0]["CHARGE_LEN"].ToString(); } } if (ordUnit == "吨") { repQty = ordQty - Convert.ToDecimal(chargeWgt == "" ? "0" : chargeWgt) + Convert.ToDecimal(elimWgt == "" ? "0" : elimWgt); estWgt = repQty; sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } else if (ordUnit == "支") { repQty = ordQty - Convert.ToDecimal(chargeNum == "" ? "0" : chargeNum) + Convert.ToDecimal(elimNum == "" ? "0" : elimNum); estWgt = repQty; sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } else if (ordUnit == "米") { repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : chargeLen) + Convert.ToDecimal(elimLen == "" ? "0" : elimLen); estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob); sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } else if (ordUnit == "毫米") { repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeLen) * 1000)) + Convert.ToDecimal(elimLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimLen) * 1000)); estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob); sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } else if (ordUnit == "英尺") { repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeLen) / Convert.ToDecimal(0.3048))) + Convert.ToDecimal(elimLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimLen) / Convert.ToDecimal(0.3048))); estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob); sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } else if (ordUnit == "英镑") { repQty = ordQty - Convert.ToDecimal(chargeWgt == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeWgt) / Convert.ToDecimal(0.45359237))) + Convert.ToDecimal(elimWgt == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimWgt) / Convert.ToDecimal(0.45359237))); estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob); sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3()); } if (repQty <= 0) continue; reportModel.DelvryQty = ordQty.ToString(); reportModel.ChargeNum = chargeNum; reportModel.ChargeWgt = chargeWgt; reportModel.ChargeLen = chargeLen; reportModel.ElimNum = elimNum; reportModel.ElimWgt = elimWgt; reportModel.ElimLen = elimLen; // ORDER_QTY NUMBER(8,3), reportModel.OrderQty = Convert.ToString(repQty); // ORDERWEIGHT NUMBER(16,3),重量估算 reportModel.Orderweight = Convert.ToString(estWgt); // ORDERNUM NUMBER(10),合同支数,无。 reportModel.Ordernum = row["ORDERNUM"].ToString(); // TOTLENGTH NUMBER(16,3),OrdEnsuTotlLen,总保长 reportModel.Totlength = Convert.ToString(sureLen); // DELVRY_RANGE_TPE VARCHAR2(20), reportModel.DelvryRangeTpe = row["DELVRY_RANGE_TPE"].ToString(); // DELVRY_RANGE_MIN NUMBER(2), reportModel.DelvryRangeMin = row["DELVRY_RANGE_MIN"].ToString(); // DELVRY_RANGE_MAX NUMBER(2), reportModel.DelvryRangeMax = row["DELVRY_RANGE_MAX"].ToString(); // BUYER_ID VARCHAR2(20), 客户编码 reportModel.BuyerId = row["BUYER_ID"].ToString(); // BUYER_NAME VARCHAR2(100),客户名称 reportModel.BuyerName = row["BUYER_NAME"].ToString(); //CUST_ALPHA_NO VARCHAR2(20),客户AlphaNo reportModel.CustAlphaNo = row["CUST_ALPHA_NO"].ToString(); // ORDER_SPECIAL_DESC VARCHAR2(200),产品特殊要求描述 \r\n 特殊字符 导致JSON转化异常。 string specialDesc = row["ORDER_SPECIAL_DESC"].ToString().Trim(); //specialDesc = specialDesc.Replace("\r", ""); //specialDesc = specialDesc.Replace("\n", ""); reportModel.OrderSpecialDesc = specialDesc.Trim(); // ADD_ASK_NO VARCHAR2(16), reportModel.AddAskNo = row["ADD_ASK_NO"].ToString(); // ORDER_ADD_DESC VARCHAR2(200), \r\n 特殊字符 导致JSON转化异常。 string addDesc = row["ORDER_ADD_DESC"].ToString().Trim(); //addDesc = addDesc.Replace("\r", ""); // addDesc = addDesc.Replace("\n", ""); reportModel.OrderAddDesc = addDesc.Trim(); // ORDERFROM VARCHAR2(20),合同来源,无此字段--销售组织。 reportModel.Orderfrom = row["ORDERFROMCODE"].ToString(); // FINAL_USER VARCHAR2(20), reportModel.FinalUser = row["FINAL_USER"].ToString(); // FINAL_USER_DESC VARCHAR2(100), reportModel.FinalUserDesc = row["FINAL_USER_DESC"].ToString(); // UPPERLIMIT NUMBER(10,3),上限 reportModel.Upperlimit = row["UPPERLIMIT"].ToString(); // LOWERLIMT NUMBER(10,3),下限, reportModel.Lowerlimt = row["LOWERLIMT"].ToString(); // DELVRY_BDATE DATE, reportModel.DelvryBdate = row["DELVRY_BDATE"].ToString() != "" ? Convert.ToDateTime(row["DELVRY_BDATE"].ToString()).ToString("yyyy-MM-dd") : row["DELVRY_BDATE"].ToString(); // DELVRY_EDATE DATE, reportModel.DelvryEdate = row["DELVRY_EDATE"].ToString() != "" ? Convert.ToDateTime(row["DELVRY_EDATE"].ToString()).ToString("yyyy-MM-dd") : row["DELVRY_EDATE"].ToString(); // LATEST_PROD_DATE最迟生产日期,无此字段,上面是最迟交货日期 reportModel.LatestProdDate = row["LATEST_PROD_DATE"].ToString() != "" ? Convert.ToDateTime(row["LATEST_PROD_DATE"].ToString()).ToString("yyyy-MM-dd") : row["LATEST_PROD_DATE"].ToString(); // ORDERCONTACT VARCHAR2(20),合同联系人,无此字段。 reportModel.Ordercontact = row["ORDERCONTACT"].ToString(); // MONITORDEMAND VARCHAR2(200),监制要求 reportModel.Monitordemand = row["MONITORDEMAND"].ToString(); // SPECSTANDARD VARCHAR2(20),公差标准 //reportModel.SPECSTANDARD = row["ORD_LN_PK"].ToString(); // PACKTYPE VARCHAR2(20),包装要求 //reportModel.OrdLnPk = row["ORD_LN_PK"].ToString(); // PSC reportModel.Psc = row["PSC"].ToString(); // PRIORITY VARCHAR2(20),合同优先级 //reportModel.OrdLnPk = row["ORD_LN_PK"].ToString(); // msc reportModel.Msc = row["MSC"].ToString(); // reportModel.CreateName = this.UserInfo.GetUserName(); reportModel.JzFileIfAll = string.IsNullOrEmpty(row["PRDCR_NO"].ToString()) ? "0" : "1"; //row["JZ_FILE_IF_ALL"].ToString(); // reportModel.PrdcrNo = row["PRDCR_NO"].ToString(); reportModel.MaterialNo = row["MATERIAL_NO"].ToString(); reportModel.MaterialDesc = row["MATERIAL_DESC"].ToString(); reportModel.ShrtLenRato = row["SHRT_LEN_RATO"].ToString(); reportModel.Shortest = row["SHORTEST"].ToString(); reportModel.LongLenRato = row["LONG_LEN_RATO"].ToString(); reportModel.Longest = row["LONGEST"].ToString(); reportModel.SiglLen = row["SIGL_LEN"].ToString(); reportModel.LenUnit = row["LEN_UNIT"].ToString(); reportModel.PrdcrDesc = row["PRDCR_DESC"].ToString(); reportModel.OutsBilletFl = row["OUTS_BILLET_FL_CODE"].ToString(); reportModel.UseCode = row["USE_CODE"].ToString(); reportModel.UseDesc = row["USE_DESC"].ToString(); reportModel.EndLenSpecStd = row["ENDLEN_SPECSTD"].ToString(); reportModel.AvgLenMin = row["AVG_LEN_MIN"].ToString(); reportModel.ShrtStove = row["SHRT_STOVE"].ToString(); reportModel.DifrncLenMax = row["DIFRNC_LEN_MAX"].ToString(); reportModel.StdStyleDesc = row["STD_STYLE_DESC"].ToString(); reportModel.OutsStlPipeFl = row["OUTS_STL_PIPE_FL_CODE"].ToString(); reportModel.RollMonth = row["REVIEW_ASK_END"].ToString(); reportModel.SupplyUnitCode = row["SUPPLY_UNIT_CODE"].ToString(); reportModel.SupplyUnit = row["SUPPLY_UNIT"].ToString(); reportModel.DelvryAddr = row["DELVRY_ADDR"].ToString(); if (row["ORDER_TYP"].ToString().Equals("120108")) reportModel.TypeFlag = "1"; else if (row["ORDER_TYP"].ToString().Equals("120109")) reportModel.TypeFlag = "2"; else reportModel.TypeFlag = "0"; list.Add(JSONFormat.Format(reportModel)); if (!craft.Contains(ordLnPk)) { craft.Add(ordLnPk); } } if (list.Count <= 0) { MessageUtil.ShowWarning("没有符合提报要求的数据!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否确认提报所选记录?") == DialogResult.No) return; //执行数据库相关操作 CoreClientParam ccp = new CoreClientParam(); ccp.IfShowErrMsg = false; ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport"; ccp.MethodName = "doReport"; ccp.ServerParams = new object[] { list }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp == null) return; else { if (ccp.ReturnCode == -1) { if (ccp.ReturnObject != null) { MessageUtil.ShowWarning(ccp.ReturnObject.ToString()); return; } else { MessageUtil.ShowWarning(ccp.ReturnInfo); return; } } else { MessageBox.Show("提报完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //工艺评审 2015-12-09新增 frmCraftReviewTechnology crt = new frmCraftReviewTechnology(); foreach (string pk in craft) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getCraftState", new string[] { pk }, ob); if (dt.Rows.Count > 0 && dt.Rows[0]["VALIDFLAG"].ToString() == "1" && dt.Rows[0]["CRAFT_SOURCE"].ToString() != "人工上传") { continue; } crt.CheckQuality(pk, true, this.ob); crt.Quality(pk, true, this.ob); } doQuery(); } } } /// /// 查询 /// private void doQuery() { string orderNo = ""; string orderSts = cmbSts.Value.ToString().Trim(); string orderStart = ""; string orderEnd = ""; string reportStartTime = ""; string reportEndTime = ""; if (uchkOrderNo.Checked) orderNo = utxtOrderNo.Text.Trim().ToLower(); if (uchkDate.Checked) { orderStart = udtStart.DateTime.ToString("yyyy-MM-dd") + " 00:00:01"; orderEnd = udtEnd.DateTime.ToString("yyyy-MM-dd") + " 23:59:59"; } else { orderStart = "1000-01-01 00:00:01"; orderEnd = "9999-12-31 23:59:59"; } if (rchkDate.Checked) { reportStartTime = rdtStart.DateTime.ToString("yyyy-MM-dd") + " 00:00:01"; reportEndTime = rdtEnd.DateTime.ToString("yyyy-MM-dd") + " 23:59:59"; } string[] arr = this.ValidDataPurviewIds; DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.doQuery", new Object[] { orderNo, orderSts, orderStart, orderEnd, arr, CustomInfo, reportStartTime, reportEndTime }, this.ob); string strSelect = "CREATE_TIME >= '" + orderStart + "' AND CREATE_TIME <= '" + orderEnd + "'"; DataRow[] arrayDR = dt.Select(strSelect, "ORDER_NO,ORDER_SEQ,DELIVERY_NO ASC"); DataTable dtNew = dt.Clone(); ArrayList list = new ArrayList(); for (int i = 0; i < arrayDR.Length; i++) { dtNew.ImportRow(arrayDR[i]); list.Add(arrayDR[i]["PRDCR_NO_GM"]); } GridHelper.CopyDataToDatatable(ref dtNew, ref this.SLM_ORDER_LINE_DELIVERY, true); foreach (UltraGridRow row in ultraGridReport.Rows) { if (list.Contains(row.Cells["PRDCR_NO"].Value.ToString())) { row.Appearance.BackColor = Color.Yellow; } } } /// /// 提报状态数据源绑定 /// private void bindCmbSts() { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.GetSts", null, this.ob); //查询区域适用单位绑定,提供空值。 ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSts, dt); } private void frmOrderReport_Load(object sender, EventArgs e) { //提报状态数据源绑定。 bindCmbSts(); cmbSts.Value = "12020301"; cmbSts.ReadOnly = false; ClsBaseInfo.SetComboItemHeight(cmbSts); udtStart.Value = DateTime.Now.AddDays(-31).ToShortDateString(); udtEnd.Value = DateTime.Now.ToShortDateString(); //加载库存信息数据 InitMat(); } /// /// 初始化库存信息 /// private void InitMat() { EntityHelper.ShowGridCaption(gdMat.DisplayLayout.Bands[0]); UltraComboEditor uce = new UltraComboEditor(); uce.Items.Add("1", "封锁"); uce.Items.Add("0", "未封锁"); gdMat.DisplayLayout.Bands[0].Columns["lockFlag"].EditorComponent = uce; gdMat.DisplayLayout.Bands[0].Columns["mngLockFlag"].EditorComponent = uce; } private void uchkOrderNo_CheckedChanged(object sender, EventArgs e) { if (uchkOrderNo.Checked) { utxtOrderNo.ReadOnly = false; string orderNo = utxtOrderNo.Text.Trim(); if (orderNo != "") { uchkDate.Enabled = true; uchkDate.Checked = false; } else { uchkDate.Enabled = false; uchkDate.Checked = true; } } else { utxtOrderNo.ReadOnly = true; uchkDate.Enabled = false; uchkDate.Checked = true; } } private void uchkSts_CheckedChanged(object sender, EventArgs e) { if (uchkSts.Checked) { cmbSts.ReadOnly = false; } else { cmbSts.SelectedIndex = 0; cmbSts.ReadOnly = true; } } private void uchkDate_CheckedChanged(object sender, EventArgs e) { if (uchkDate.Checked) { udtStart.ReadOnly = false; udtEnd.ReadOnly = false; } else { udtStart.ReadOnly = true; udtEnd.ReadOnly = true; } } private void ultraGridReport_AfterRowActivate(object sender, EventArgs e) { ultraGridReport.UpdateData(); UltraGridRow ugr = ultraGridReport.ActiveRow; if (ugr == null) return; for (int i = 0; i < ugr.Cells.Count; i++) { if (!ugr.Cells[i].Column.Key.Equals("CHK")) { ugr.Cells[i].Activation = Activation.ActivateOnly; } else ugr.Cells[i].Activation = Activation.AllowEdit; } // 查询库存信息 ORDERFROMCODE 考虑到效率问题 放在CellButton事件中查询 //string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString(); listLiku = new ArrayList(); listLiku.Add(ugr.Cells["PRODUCCODE"].Value.ToString()); listLiku.Add(ugr.Cells["STEELCODE"].Value.ToString()); listLiku.Add(ugr.Cells["SPEC_CODE"].Value.ToString()); listLiku.Add(ugr.Cells["MODEL_CODE"].Value.ToString()); listLiku.Add(ugr.Cells["STD_STYLE_DESC"].Value.ToString()); listLiku.Add(ugr.Cells["STD_STYLE_DESC"].Value.ToString()); //QueryMatInfo(list, saleOrg); matZcMEntityBindingSource.Clear(); this.labTips.Text = ""; } private void QueryMatInfo(ArrayList parm, string saleOrg, string suppUnit) { List listSource = EntityHelper.GetData( "com.steering.pss.sale.order.CoreOrderReport.queryMatInfo", new object[] { parm, saleOrg, suppUnit }, this.ob); matZcMEntityBindingSource.DataSource = listSource; } private void utxtOrderNo_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) doQuery(); } private void ultraGridReport_AfterSelectChange(object sender, AfterSelectChangeEventArgs e) { foreach (UltraGridRow uRow in ultraGridReport.Selected.Rows) { if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow)) { uRow.Cells["CHK"].Value = true; } } } private void btnReset_Click(object sender, EventArgs e) { ultraGridReport.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters(); } private void utxtOrderNo_ValueChanged(object sender, EventArgs e) { string orderNo = utxtOrderNo.Text.Trim(); if (orderNo != "") { uchkDate.Enabled = true; uchkDate.Checked = false; } else { uchkDate.Enabled = false; uchkDate.Checked = true; } } private void ultraGridReport_InitializeRow(object sender, InitializeRowEventArgs e) { if (e.Row.Cells["ORDER_TYP"].Value.ToString2() == "120103") { e.Row.Cells["REVIEW_ASK_END"].Value = DateTime.Now.ToString("yyyy-MM"); } } /// /// cellButton /// /// /// private void ultraGridReport_ClickCellButton(object sender, CellEventArgs e) { if (e.Cell.Column.Key.Equals("ORDER_SEQ")) { ultraGridReport.UpdateData(); UltraGridRow ugr = ultraGridReport.ActiveRow; if (ugr == null) return; string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString(); string suppUnit = ugr.Cells["SUPPLY_UNIT_CODE"].Value.ToString(); QueryMatInfo(listLiku, saleOrg, suppUnit); string str = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString() + " 的可利库的库存信息。"; this.labTips.Text = str; this.labTips.AutoSize = true; } } private void ReportLiKu() { ultraGridReport.UpdateData(); UltraGridRow ugr = ultraGridReport.ActiveRow; if (ugr == null) { MessageUtil.ShowWarning("请选择您要利库的交货行!"); return; } if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕") { MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只能对“生效状态”的交货行利库!"); ugr.Activate(); return; } string ordStr = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString(); //合同行提报锁定的! DataTable lockDt1 = ServerHelper.GetData("com.steering.pss.sale.order.DAL.SlmOrderLineLockDAL.getOrderLineLock", new object[] { ugr.Cells["ORD_LN_PK"].Value.ToString() }, this.ob); if (lockDt1 != null && lockDt1.Rows.Count > 0) { if (lockDt1.Rows[0][0].ToString() == "1") { MessageUtil.ShowWarning(ordStr + "该合同行提报排产被锁定请重新审批合同价格!不允许利库! "); return; } } string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString(); string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString(); FrmReportLiKu frl = new FrmReportLiKu(this.ob, "1",this.CustomInfo); frl.DataArr = this.ValidDataPurviewIds; frl.ListParm = listLiku; frl.OrdSaleOrg = saleOrg; frl.OrdLnDlyPk = ordLnDlyPk; frl.FormClosingQueryHandle += frl_FormClosingQueryHandle; frl.WindowState = FormWindowState.Maximized; frl.StartPosition = FormStartPosition.CenterScreen; frl.ShowDialog(); } void frl_FormClosingQueryHandle(string ordLnDlyPk) { this.doQuery(); foreach (UltraGridRow row in ultraGridReport.Rows) { if (row.Cells["ORD_LN_DLY_PK"].Value.ToString() == ordLnDlyPk) { row.Activate(); break; } } } /// /// 判断交货行是否具有需要审核的利库数据 /// /// /// True 是 False 否 private bool IsNeedCheckLK(string ordLnDlyPk) { DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryDlyLkTd", new object[] { ordLnDlyPk }, this.ob); if (dt != null && dt.Rows.Count > 0) { string lkId = dt.Rows[0]["LK_ID"].ToString2(); string tdId = dt.Rows[0]["TD_ID"].ToString2(); string[] lk = lkId.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries); string[] td = tdId.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries); if (lk != null && lk.Length > 0) { List lkList = new List(lk); List tdList = null; if (td != null && td.Length > 0) { tdList = new List(td); } else { tdList = new List { "1" }; //下面的差集函数不能跟NULL做差集,所以随便给一个值 } var interList = lkList.Except(tdList).ToList(); for (int i = 0; i < interList.Count; i++) { DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryMatCheck", new object[] { ordLnDlyPk, interList[i] }, this.ob); if (dt1 != null && dt1.Rows.Count > 0) { if (dt1.Rows[0][0].ToString2().Contains("1")) return true; } } } } return false; } /* public void OpenOtherAssemblyForm(Form vParentFrm, string vKey, string vAssemblyName, string vClassName, string vCaption, OpeBase _ob) { //检查窗体是否已经打开 foreach (Form mdiChild in vParentFrm.MdiChildren) { if ((mdiChild as FrmBase).Key == vKey) { mdiChild.Activate(); return; } } FrmBase form = null; //实例化窗体并打开 try { Assembly baseFormAssembly = Assembly.Load(vAssemblyName); Type type = baseFormAssembly.GetType(vClassName); System.Diagnostics.Debug.Assert(type.IsSubclassOf(typeof(FrmBase))); form = Activator.CreateInstance(type, true) as FrmBase; PropertyInfo info = type.GetProperty("MyValidDataPurviewIds"); info.SetValue(form, this.ValidDataPurviewIds, null); form.MdiParent = vParentFrm; form.Text = vCaption; form.Key = vKey; form.ob = _ob; form.CustomInfo = ""; form.Show(); } catch (Exception ex) { Console.WriteLine(ex.Message); form.Dispose(); } } */ } }