using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using CoreFS.SA06; using Infragistics.Win.UltraWinGrid; using System; using System.Collections; using System.Data; using System.Linq; using System.Windows.Forms; namespace Core.StlMes.Client.Qcm { class MscMsc_BackLog { public static DataTable Query(FrmProPSCMSC2 frm) { if (frm.ControlMsc.GridMsc.ActiveRow == null) return null; string msc = "";//如果选择的是接箍,那么msc字段保存接箍码。否则保存msc。 if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { UltraGridRow activeRow = frm.ControlMsc.GridMsc.ActiveRow; msc = activeRow.GetValue("KEY_JG"); } ArrayList list = new ArrayList(); list.Add(msc); list.Add(frm.ckbDeleteFilter.Checked ? "0" : "1"); DataTable dt = null; try { dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryMscBackLog", new object[] { list }, frm.ob); } catch { return null; } return dt; } public static bool Insert(FrmProPSCMSC2 frm) { if (CheckData(frm, "Insert") == false) return false; frm.UltraGrid5.UpdateData(); if (MessageUtil.ShowYesNoAndQuestion("是否新增所选择的记录?") == DialogResult.No) { return false; } string strMaxMscPline = GetMaxMscPline(frm); string[] strWhole_BackLogs = GetWhole_BackLog(frm); string msc = "";//如果选择的是接箍,那么msc字段保存接箍码。否则保存msc。 string processNo = ""; string memo = ""; string autoCraft = ""; string activeMscPlie = ""; if (frm.UltraGrid4.ActiveRow != null) { processNo = frm.UltraGrid4.GetActiveRowValue("PROCESS_NO"); memo = frm.UltraGrid4.GetActiveRowValue("Memo"); autoCraft = frm.UltraGrid4.GetActiveRowValue("AUTO_CRAFT"); activeMscPlie = frm.UltraGrid4.GetActiveRowValue("MSC_PLINE"); } if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["KEY_JG"].Value.ToString(); } ArrayList list1 = new ArrayList(); list1.Add(msc); list1.Add(strMaxMscPline); list1.Add(strWhole_BackLogs[0]); list1.Add(strWhole_BackLogs[1]); list1.Add(frm.UserInfo.GetUserName()); list1.Add(processNo); list1.Add(memo); list1.Add(autoCraft); ArrayList list2 = new ArrayList(); ArrayList list3 = new ArrayList(); foreach (UltraGridRow row in frm.UltraGrid5.Rows) { string strDeleteFlag = ""; string cic = row.GetValue("CIC"); string pic = row.GetValue("PIC"); string dic = row.GetValue("DIC"); string sic = row.GetValue("SIC"); string wic = row.GetValue("WIC"); string gic = row.GetValue("GIC"); string processCode = row.Cells["PROCESS_CODE"].Value.ToString(); if (row.Cells["CHK"].Value.ToString() == "False") { strDeleteFlag = "DELETE"; } else { if (frm._dicMscStation.ContainsKey(processCode)) { UltraGrid ultraGridSta2 = frm._dicMscStation[processCode]; if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403201" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { cic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403202" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { pic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403203" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { sic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403204" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { dic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403205" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { wic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403208" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { gic = ""; } } } string MaxMscProBkLog_seq = QueryMaxMscProBkLog_seq(frm, strMaxMscPline); ArrayList listProcess = new ArrayList(); listProcess.AddRange( strDeleteFlag, msc, strMaxMscPline, MaxMscProBkLog_seq, frm.UserInfo.GetUserName(), row.GetValue("PROCESS_CODE"), row.GetValue("PROCESS_DESC"), row.GetValue("MINUTE_PRODUCT"), row.GetValue("MINUTE_WAITE"), row.GetValue("BATCH_WAITE"), row.GetValue("MINUTE_PRODUCT_OUT"), row.GetValue("MINUTE_WAITE_OUT"), row.GetValue("BATCH_WAITE_OUT"), row.GetValue("COST"), cic, pic, sic, dic, wic, gic, row.GetValue("MEMO"), row.GetValue("PROCESS_CODE_C"), row.GetText("PROCESS_CODE_C"), row.GetValue("ICOUNT"), ""); list2.Add(listProcess); if (frm._dicMscStation.ContainsKey(processCode) == false) { if (row.Cells["CHK"].Value.ToString() == "True") { ArrayList listSub = new ArrayList(); listSub.Add(processCode); listSub.Add(frm.UserInfo.GetUserName()); listSub.Add(msc); listSub.Add(strMaxMscPline); listSub.Add(row.GetValue("PROCESS_CODE_C")); listSub.Add(row.GetValue("ICOUNT")); list3.Add(listSub); } continue; } UltraGrid ultraGridSta = frm._dicMscStation[processCode]; foreach (UltraGridRow rowSta in ultraGridSta.Rows) { //如果工序选择的二级工序和工序点选择的不一致,则不对工序点进行保存,只保存工序。 if (rowSta.GetValue("PROCESS_CODE_C") != row.GetValue("PROCESS_CODE_C")) { continue; } ArrayList listSub = new ArrayList(); string strDeleteFlag2 = ""; if (rowSta.Cells["UCCHOOSE"].Value.ToString() == "False") { strDeleteFlag2 = "DELETE"; } listSub.Add(strDeleteFlag2);//0 listSub.Add(msc);//最终保存的时候赋值。1 listSub.Add(strMaxMscPline);//2 listSub.Add(rowSta.GetValue("BACKLOG_SEQ"));//3 listSub.Add(rowSta.GetValue("PROCESS_CODE"));//4 listSub.Add(rowSta.GetValue("PROCESS_DESC"));//5 listSub.Add(rowSta.GetValue("STATION_CODE"));//6 listSub.Add(rowSta.GetValue("STATION_DESC"));//7 listSub.Add(rowSta.GetValue("STATION_TYPE_CODE"));//8 listSub.Add(rowSta.GetValue("STATION_ID"));//9 listSub.Add(rowSta.GetValue("COST"));//10 listSub.Add(rowSta.GetValue("CHOOSE") == "True" ? "1" : "0");//11 listSub.Add(rowSta.GetValue("RETURN_RESULT") == "True" ? "1" : "0");//12 listSub.Add(rowSta.GetValue("SEND_CHECKPLAN") == "True" ? "1" : "0");//13 listSub.Add(frm.UserInfo.GetUserName());//14 listSub.Add(rowSta.GetValue("PROCESS_SEQ"));//15 listSub.Add(rowSta.GetValue("MEMO"));//16 listSub.Add(rowSta.GetValue("PROCESS_CODE_C")); listSub.Add(rowSta.GetValue("PROCESS_DESC_C")); list3.Add(listSub); } //foreach (ArrayList listStation in listStations) //{ // listStation[1] = frm.ultraGrid2.ActiveRow.Cells["MSC"].Value.ToString(); // listStation[2] = strMaxMscPline; // list3.Add(listStation); //} } try { ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.insertMscBackLog", new object[] { list1, list2, list3 }, frm.ob); } catch { return false; } MessageUtil.ShowTips("新增成功!"); return true; } /// /// 修改工艺文件路径 /// /// /// public static void UpdateCraftPath(FrmProPSCMSC2 frm) { UltraGridRow row = frm.UltraGrid4.ActiveRow; ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.updateCraftPath", new object[] { row.GetValue("MSC"), row.GetValue("MSC_PLINE"), row.Cells["CRAFT_PATH"].Tag.ToString2() }, frm.ob); } /// /// 修改工艺贴图 /// /// public static void UpdateProcessFile(string processFile, string msc, string mscPline, string processCode, OpeBase ob) { ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.updateProcessFile", new object[] { new string[] { processFile, msc, mscPline, processCode } }, ob); } public static bool Update(FrmProPSCMSC2 frm) { if (CheckData(frm, "Update") == false) return false; frm.UltraGrid5.UpdateData(); if (MessageUtil.ShowYesNoAndQuestion("是否修改所选择的记录?") == DialogResult.No) { return false; } string[] strWhole_BackLogs = GetWhole_BackLog(frm); string msc = "";//如果选择的是接箍,那么msc字段保存接箍码。否则保存msc。 if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["KEY_JG"].Value.ToString(); } ArrayList list1 = new ArrayList(); list1.Add(strWhole_BackLogs[0]); list1.Add(strWhole_BackLogs[1]); list1.Add(frm.UserInfo.GetUserName()); list1.Add(frm.UltraGrid4.GetActiveRowValue("PROCESS_NO")); list1.Add(frm.UltraGrid4.ActiveRow.Cells["MEMO"].Value.ToString()); list1.Add(frm.UltraGrid4.ActiveRow.Cells["AUTO_CRAFT"].Value.ToString()); list1.Add(msc); list1.Add(frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString()); ArrayList list2 = new ArrayList(); ArrayList list3 = new ArrayList(); foreach (UltraGridRow row in frm.UltraGrid5.Rows) { string strDeleteFlag = ""; string cic = row.GetValue("CIC"); string pic = row.GetValue("PIC"); string dic = row.GetValue("DIC"); string sic = row.GetValue("SIC"); string wic = row.GetValue("WIC"); string gic = row.GetValue("GIC"); string processCode = row.Cells["PROCESS_CODE"].Value.ToString(); if (row.Cells["CHK"].Value.ToString() == "False") { strDeleteFlag = "DELETE"; } else { if (frm._dicMscStation.ContainsKey(processCode)) { UltraGrid ultraGridSta2 = frm._dicMscStation[processCode]; if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403201" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { cic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403202" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { pic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403203" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { sic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403204" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { dic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403205" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { wic = ""; } if (ultraGridSta2.Rows.Where(a => a.GetValue("STATION_TYPE_CODE") == "403208" && a.GetValue("UCCHOOSE") == "True").Count() == 0) { gic = ""; } } } //string MaxMscProBkLog_seq = QueryMaxMscProBkLog_seq(frm, strMaxMscPline); ArrayList listProcess = new ArrayList(); listProcess.Add(strDeleteFlag); listProcess.Add(msc); listProcess.Add(frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString()); listProcess.Add(row.Cells["BACKLOG_SEQ"].Value.ToString()); listProcess.Add(frm.UserInfo.GetUserName()); listProcess.Add(row.Cells["PROCESS_CODE"].Value.ToString()); listProcess.Add(row.Cells["PROCESS_DESC"].Value.ToString()); listProcess.Add(row.Cells["MINUTE_PRODUCT"].Value.ToString()); listProcess.Add(row.Cells["MINUTE_WAITE"].Value.ToString()); listProcess.AddRange(row.GetValue("BATCH_WAITE"), row.GetValue("MINUTE_PRODUCT_OUT"), row.GetValue("MINUTE_WAITE_OUT"), row.GetValue("BATCH_WAITE_OUT")); listProcess.Add(row.Cells["COST"].Value.ToString()); listProcess.Add(cic); listProcess.Add(pic); listProcess.Add(sic); listProcess.Add(dic); listProcess.Add(wic); listProcess.Add(gic); listProcess.Add(row.Cells["MEMO"].Value.ToString()); listProcess.Add(row.GetValue("PROCESS_CODE_C")); listProcess.Add(row.GetText("PROCESS_CODE_C")); listProcess.Add(row.GetValue("ICOUNT")); listProcess.Add(row.GetValue("PROCESS_FILE")); list2.Add(listProcess); if (frm._dicMscStation.ContainsKey(processCode) == false) continue; UltraGrid ultraGridSta = frm._dicMscStation[processCode]; foreach (UltraGridRow rowSta in ultraGridSta.Rows) { //如果工序选择的二级工序和工序点选择的不一致,则不对工序点进行保存,只保存工序。 if (rowSta.GetValue("PROCESS_CODE_C") != row.GetValue("PROCESS_CODE_C")) { continue; } ArrayList listSub = new ArrayList(); string strDeleteFlag2 = ""; if (rowSta.Cells["UCCHOOSE"].Value.ToString() == "False") { strDeleteFlag2 = "DELETE"; } listSub.Add(strDeleteFlag2);//0 listSub.Add(msc);//最终保存的时候赋值。1 listSub.Add(frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString());//2 listSub.Add(rowSta.Cells["BACKLOG_SEQ"].Value.ToString());//3 listSub.Add(rowSta.Cells["PROCESS_CODE"].Value.ToString());//4 listSub.Add(rowSta.Cells["PROCESS_DESC"].Value.ToString());//5 listSub.Add(rowSta.Cells["STATION_CODE"].Value.ToString());//6 listSub.Add(rowSta.Cells["STATION_DESC"].Value.ToString());//7 listSub.Add(rowSta.Cells["STATION_TYPE_CODE"].Value.ToString());//8 listSub.Add(rowSta.Cells["STATION_ID"].Value.ToString());//9 listSub.Add(rowSta.Cells["COST"].Value.ToString());//10 listSub.Add(rowSta.Cells["CHOOSE"].Value.ToString() == "True" ? "1" : "0");//11 listSub.Add(rowSta.Cells["RETURN_RESULT"].Value.ToString() == "True" ? "1" : "0");//12 listSub.Add(rowSta.Cells["SEND_CHECKPLAN"].Value.ToString() == "True" ? "1" : "0");//13 listSub.Add(frm.UserInfo.GetUserName());//14 listSub.Add(rowSta.Cells["PROCESS_SEQ"].Value.ToString());//15 listSub.Add(rowSta.Cells["MEMO"].Value.ToString());//16 listSub.Add(rowSta.GetValue("PROCESS_CODE_C")); listSub.Add(rowSta.GetValue("PROCESS_DESC_C")); list3.Add(listSub); } } try { ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.updateMscBackLog", new object[] { list1, list2, list3, frm.OrdLnPk }, frm.ob); } catch { return false; } MessageUtil.ShowTips("修改成功!"); return true; } private static string GetMaxMscPline(FrmProPSCMSC2 frm) { string msc = "";//如果选择的是接箍,那么msc字段保存接箍码。否则保存msc。 if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["KEY_JG"].Value.ToString(); } ArrayList list = new ArrayList(); list.Add(msc); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryMaxMscBackLogPline", new object[] { list }, frm.ob); if (dt != null) { return dt.Rows[0][0].ToString(); } return ""; } private static string[] GetWhole_BackLog(FrmProPSCMSC2 frm) { string[] strWhole_BackLogs = new string[] { "", "" }; int i = 0; foreach (UltraGridRow row in frm.UltraGrid5.Rows) { if (row.Cells["CHK"].Value.ToString() == "True") { if (i == 0) { strWhole_BackLogs[0] += row.Cells["PROCESS_CODE"].Value.ToString(); strWhole_BackLogs[1] += row.GetValue("PROCESS_DESC") + "【" + row.GetText("PROCESS_CODE_C") + "】"; } else { strWhole_BackLogs[0] += "-" + row.Cells["PROCESS_CODE"].Value.ToString(); strWhole_BackLogs[1] += "-" + row.GetValue("PROCESS_DESC") + "【" + row.GetText("PROCESS_CODE_C") + "】"; } i++; } } return strWhole_BackLogs; } private static string QueryMaxMscProBkLog_seq(FrmProPSCMSC2 frm, string strMaxMscPline) { string msc = "";//如果选择的是接箍,那么msc字段保存接箍码。否则保存msc。 if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["KEY_JG"].Value.ToString(); } ArrayList list = new ArrayList(); list.Add(msc); list.Add(strMaxMscPline); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryMaxMscProBkLog_seq", new object[] { list }, frm.ob); if (dt != null) { return dt.Rows[0][0].ToString(); } return ""; } public static bool Delete(FrmProPSCMSC2 frm) { string msc = frm.UltraGrid4.ActiveRow.Cells["MSC"].Value.ToString(); string mscPline = frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString(); //if (IsExistProcess(frm, msc, mscPline)) //{ // MessageUtil.ShowWarning("请先作废制程下面的工序,然后再进行操作!"); // return false; //} //if (IsExistGrade(frm, msc, mscPline)) //{ // MessageUtil.ShowWarning("请先作废制程下面的钢种,然后再进行操作!"); // return false; //} return DeleteOrResume(frm, "0"); } public static bool Resume(FrmProPSCMSC2 frm) { return DeleteOrResume(frm, "1"); } private static bool DeleteOrResume(FrmProPSCMSC2 frm, string validFlag) { string strAction = validFlag == "1" ? "Resume" : "Delete"; if (CheckData(frm, strAction) == false) return false; if (MessageUtil.ShowYesNoAndQuestion("是否" + (validFlag == "1" ? "恢复" : "作废") + "所选择的记录?") == DialogResult.No) { return false; } ArrayList list = new ArrayList(); list.Add(validFlag); list.Add(frm.UltraGrid4.ActiveRow.Cells["MSC"].Value.ToString()); list.Add(frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString()); list.Add(frm.UserInfo.GetUserName()); try { ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.deleteOrResumeMscBackLog", new object[] { list }, frm.ob); } catch { return false; } MessageUtil.ShowTips(validFlag == "1" ? "恢复" : "作废" + "成功!"); return true; } private static bool IsExistProcess(FrmProPSCMSC2 frm, string msc, string mscPline) { ArrayList list = new ArrayList(); list.AddRange(msc, mscPline); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.isExistProcess", new object[] { list }, frm.ob); if (dt.Rows[0][0].ToString() != "0") { return true; } return false; } private static bool IsExistGrade(FrmProPSCMSC2 frm, string msc, string mscPline) { ArrayList list = new ArrayList(); list.AddRange(msc, mscPline); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.isExistGrade", new object[] { list }, frm.ob); if (dt.Rows[0][0].ToString() != "0") { return true; } return false; } private static DataTable GetMscTabByMsc(string msc, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.getComMscByMsc", new object[] { msc }, ob); return dt; } private static bool CheckData(FrmProPSCMSC2 frm, string strAction) { UltraGridRow[] rows = GridHelper.GetRowsWithKey(frm.UltraGrid5, new string[] { "CHK" }, new string[] { "True" }); if (frm.ControlMsc.GridMsc.ActiveRow == null) { MessageUtil.ShowWarning("选择一条冶金规范码后再进行操作!"); frm.ultraTabControl1.Tabs["MSC"].Selected = true; return false; } else if (frm.ControlMsc.MscRow.Cells["MSC"].Value.ToString() == "") { MessageUtil.ShowWarning("请先新增冶金规范码后再进行操作!"); frm.ultraTabControl1.Tabs["MSC"].Selected = true; return false; } string msc = frm.ControlMsc.MscRow.Cells["MSC"].Value.ToString(); if (strAction == "Insert") { if (isExistBackLog(msc, "1", GetWhole_BackLog(frm)[1], frm) == true) { MessageUtil.ShowWarning("系统已存在相同的制程!"); return false; } } if ((strAction == "Update" || strAction == "Delete" || strAction == "Resume") && frm.UltraGrid4.ActiveRow == null) { MessageUtil.ShowWarning("选择一条制程后再进行操作!"); return false; } DataTable dtMsc = GetMscTabByMsc(msc, frm.ob); //if (dtMsc.Rows[0]["UNIT_CODE"].ToString() != CoreUserInfo.UserInfo.GetDeptid() // && CoreUserInfo.UserInfo.GetUserID() != "admin" && frm._dicMscStation.Count > 0) //{ // MessageUtil.ShowWarning("该条记录对应的冶金规范是[" + dtMsc.Rows[0]["UNIT_DESC"].ToString() + "]科室维护的,您没有权限!"); // return false; //} if (strAction == "Update") { if (isExistBackLog(msc, frm.UltraGrid4.ActiveRow.GetValue("MSC_PLINE"), GetWhole_BackLog(frm)[1], frm) == true) { MessageUtil.ShowWarning("系统已存在相同的制程!"); return false; } } //if (strAction == "Insert" || strAction == "Update") //{ // string mscPline = frm.UltraGrid4.ActiveRow == null ? "" : frm.UltraGrid4.ActiveRow.GetValue("MSC_PLINE"); // string backLogDesc = GetWhole_BackLog(frm)[1]; // if(GetBackLogDescCnt(msc, backLogDesc, strAction, // "", frm.ob) > 0) // { // MessageUtil.ShowWarning("系统已存在该全程途径描述!"); // return false; // } //} if (strAction == "Update") { DataTable comMscBackLog = QueryComMscBacklogByPk(frm.UltraGrid4.ActiveRow.GetValue("MSC"), frm.UltraGrid4.ActiveRow.GetValue("MSC_PLINE"), frm); if (comMscBackLog.Rows[0]["VALIDFLAG"].ToString2() != "1") { MessageUtil.ShowWarning("只能修改录入状态的制程!"); return false; } //if (GetDesignBomCnt(msc, frm.UltraGrid4.ActiveRow.GetValue("MSC_PLINE"), frm.ob) > 0) //{ // MessageUtil.ShowWarning("该制程已生成物料信息,不允许修改!"); // return false; //} } if (strAction == "Delete" && frm.UltraGrid4.ActiveRow.GetValue("VALIDFLAG") != "1") { MessageUtil.ShowWarning("只能作废录入状态的制程!"); return false; } if (strAction == "Update" || strAction == "Insert") { foreach (UltraGridRow row in rows) { if (row.Cells["MINUTE_PRODUCT"].Value.ToString() == "") { MessageUtil.ShowWarning("自炼生产时间不能为空!"); row.Cells["MINUTE_PRODUCT"].Activate(); return false; } else if (row.Cells["MINUTE_PRODUCT"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的自炼生产时间!"); row.Cells["MINUTE_PRODUCT"].Activate(); return false; } if (row.Cells["MINUTE_WAITE"].Value.ToString() == "") { MessageUtil.ShowWarning("自炼等待时间不能为空!"); row.Cells["MINUTE_WAITE"].Activate(); return false; } else if (row.Cells["MINUTE_WAITE"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的自炼等待时间!"); row.Cells["MINUTE_WAITE"].Activate(); return false; } if (row.Cells["BATCH_WAITE"].Value.ToString() == "") { MessageUtil.ShowWarning("自炼批量等待时间不能为空!"); row.Cells["BATCH_WAITE"].Activate(); return false; } else if (row.Cells["BATCH_WAITE"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的自炼批量等待时间!"); row.Cells["BATCH_WAITE"].Activate(); return false; } if (row.Cells["MINUTE_PRODUCT_OUT"].Value.ToString() == "") { MessageUtil.ShowWarning("外购生产时间不能为空!"); row.Cells["MINUTE_PRODUCT_OUT"].Activate(); return false; } else if (row.Cells["MINUTE_PRODUCT_OUT"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的外购生产时间!"); row.Cells["MINUTE_PRODUCT_OUT"].Activate(); return false; } if (row.Cells["MINUTE_WAITE_OUT"].Value.ToString() == "") { MessageUtil.ShowWarning("外购等待时间不能为空!"); row.Cells["MINUTE_WAITE_OUT"].Activate(); return false; } else if (row.Cells["MINUTE_WAITE_OUT"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的外购等待时间!"); row.Cells["MINUTE_WAITE_OUT"].Activate(); return false; } if (row.Cells["BATCH_WAITE_OUT"].Value.ToString() == "") { MessageUtil.ShowWarning("外购批量等待时间不能为空!"); row.Cells["BATCH_WAITE_OUT"].Activate(); return false; } else if (row.Cells["BATCH_WAITE_OUT"].Value.ToString().TryParseDecimal() == false) { MessageUtil.ShowWarning("请输入合法的外购批量等待时间!"); row.Cells["BATCH_WAITE_OUT"].Activate(); return false; } if (row.Cells["COST"].Value.ToString() == "") { MessageUtil.ShowWarning("工序成本不能为空!"); row.Cells["COST"].Activate(); return false; } if (row.Cells["PROCESS_CODE_C"].Value.ToString() == "") { MessageUtil.ShowWarning("请选择二级工序!"); row.Cells["PROCESS_CODE_C"].Activate(); return false; } if (isExistStation(frm, row) == true) { if (row.GetValue("PROCESS_SEQ_OLD") != "" && row.GetValue("PROCESS_SEQ_OLD") != row.GetValue("ICOUNT")) { MessageUtil.ShowWarning("工序[" + row.GetValue("PROCESS_DESC") + "]的循环次数被修改,请重新选择该工序的工序点!"); row.SetCellActive("BTN"); return false; } if (row.GetValue("PROCESS_CODE_C_OLD") != row.GetValue("PROCESS_CODE_C")) { MessageUtil.ShowWarning("工序[" + row.GetValue("PROCESS_DESC") + "]的二级工序被修改,请重新选择该工序的工序点!"); row.SetCellActive("BTN"); return false; } } } //检查内控标准维护是否和工序点的类型一致。 //string processCode = row.Cells["PROCESS_CODE"].Value.ToString(); //if (frm._dicMscStation.ContainsKey(processCode) == false) //{ // if (CheckStationType2(row, frm, processCode) == false) // { // return false; // } //} //else //{ // UltraGrid ultraGridSta = frm._dicMscStation[processCode]; // if (CheckStationType(row, ultraGridSta) == false) // { // return false; // } //} } return true; } private static int GetBackLogDescCnt(string msc, string backLogDesc, string strAction, string mscPline, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.getBackLogDescCnt", new object[] { backLogDesc, msc, strAction, mscPline }, ob); return int.Parse(dt.Rows[0][0].ToString()); } private static int GetDesignBomCnt(string msc, string mscPline, OpeBase ob) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.getDesignBomCnt", new object[] { msc, mscPline }, ob); return int.Parse(dt.Rows[0][0].ToString()); } private static bool isExistStation(FrmProPSCMSC2 frm, UltraGridRow row) { DataTable dt = null; ArrayList list = new ArrayList(); list.Add(row.Cells["PROCESS_CODE"].Value.ToString()); list.Add(row.GetValue("PROCESS_CODE_C")); try { dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryBaseStation", new object[] { list }, frm.ob); } catch { return false; } if (dt.Rows.Count > 0) { return true; } return false; } private static bool CheckStationType(UltraGridRow row, UltraGrid ultraGridSta) { string[] strCic = row.Cells["CIC"].Value.ToString().Split(','); string[] strPic = row.Cells["PIC"].Value.ToString().Split(','); string[] strSic = row.Cells["SIC"].Value.ToString().Split(','); string[] strDic = row.Cells["DIC"].Value.ToString().Split(','); string[] strWic = row.Cells["WIC"].Value.ToString().Split(','); if (IsSelectStandPay(ultraGridSta, "403201", "成分标准", strCic) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(ultraGridSta, "403202", "理化标准", strPic) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(ultraGridSta, "403203", "公差标准", strSic) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(ultraGridSta, "403204", "探伤标准", strDic) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(ultraGridSta, "403205", "水压标准", strWic) == false) { row.Cells["BTN2"].Activate(); return false; } return true; } private static bool IsSelectStandPay(UltraGrid ultraGridSta, string typeCode, string typeName, string[] strIc) { UltraGridRow[] rows = GridHelper.GetRowsWithKey(ultraGridSta, new string[] { "UCCHOOSE", "STATION_TYPE_CODE" }, new string[] { "True", typeCode }); if (rows.Length == 0) { if (strIc[0] != "" && strIc.Length > 0) { MessageUtil.ShowWarning(string.Format("由于所选择的工序点类型中,不包含{0}标准,所以不能选择{0}内控标准!", typeName)); return false; } } else { if (strIc[0] == "") { MessageUtil.ShowWarning(string.Format("请选择一条{0}内控标准!", typeName)); return false; } } return true; } private static bool CheckStationType2(UltraGridRow row, FrmProPSCMSC2 frm, string processCode) { string[] strCic = row.Cells["CIC"].Value.ToString().Split(','); string[] strPic = row.Cells["PIC"].Value.ToString().Split(','); string[] strSic = row.Cells["SIC"].Value.ToString().Split(','); string[] strDic = row.Cells["DIC"].Value.ToString().Split(','); string[] strWic = row.Cells["WIC"].Value.ToString().Split(','); if (IsSelectStandPay(frm, "403201", "成分标准", strCic, processCode) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(frm, "403202", "理化标准", strPic, processCode) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(frm, "403203", "公差标准", strSic, processCode) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(frm, "403204", "探伤标准", strDic, processCode) == false) { row.Cells["BTN2"].Activate(); return false; } else if (IsSelectStandPay(frm, "403205", "水压标准", strWic, processCode) == false) { row.Cells["BTN2"].Activate(); return false; } return true; } private static bool IsSelectStandPay(FrmProPSCMSC2 frm, string typeCode, string typeName, string[] strIc, string processCode) { string msc = ""; if (frm.UltraGrid4.ActiveRow == null) return true; if (frm.ControlMsc.GridMsc.ActiveRow.ChildBands != null) { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["MSC"].Value.ToString(); } else { msc = frm.ControlMsc.GridMsc.ActiveRow.Cells["KEY_JG"].Value.ToString(); } ArrayList list = new ArrayList(); list.Add(msc); list.Add(frm.UltraGrid4.ActiveRow.Cells["MSC_PLINE"].Value.ToString()); list.Add(typeCode); list.Add(processCode); list.Add(typeCode); list.Add(processCode); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.querySttnTypeCnt", new object[] { list }, frm.ob); if (dt.Rows[0][0].ToString() == "0") { if (strIc[0] != "" && strIc.Length > 0) { MessageUtil.ShowWarning(string.Format("由于所选择的工序点类型中,不包含{0}标准,所以不能选择{0}内控标准!", typeName)); return false; } } else { if (strIc[0] == "") { MessageUtil.ShowWarning(string.Format("请选择一条{0}内控标准!", typeName)); return false; } } return true; } public static bool CopyBackLog(string msc, FrmProPSCMSC2 frm, string copyMsc, string mscPline) { if (frm.ControlMsc.GridMsc.ActiveRow == null) { MessageUtil.ShowWarning("选择一条冶金规范码后再进行操作!"); frm.ultraTabControl1.Tabs["MSC"].Selected = true; return false; } else if (frm.ControlMsc.MscRow.Cells["MSC"].Value.ToString() == "") { MessageUtil.ShowWarning("请先新增冶金规范码后再进行操作!"); frm.ultraTabControl1.Tabs["MSC"].Selected = true; return false; } if (String.IsNullOrEmpty(mscPline) && ExistBackLog(msc, frm) == true) { MessageUtil.ShowWarning("该MSC下存在制程,不能使用复制功能!"); return false; } else if(!String.IsNullOrEmpty(mscPline)){ DataTable comMscBackLog = QueryComMscBacklogByPk(msc, mscPline, frm); if (comMscBackLog.Rows.Count > 0) { MessageUtil.ShowWarning("该MSC下 " + mscPline + " 存在制程,不能使用复制功能!"); return false; } } if (MessageUtil.ShowYesNoAndQuestion("是否复制" + copyMsc + "下 " + mscPline + "制程?") == DialogResult.No) { return false; } ServerHelper.SetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.CopyBackLog", new object[] { msc, CoreUserInfo.UserInfo.GetUserName(), copyMsc.ToString2(), mscPline.ToString2() }, frm.ob); MessageUtil.ShowTips("复制成功!\r\n复制的数据为无效状态,请核实后再进行恢复操作!"); Query(frm); return true; } private static bool ExistBackLog(string msc, FrmProPSCMSC2 frm) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryExistBackLog", new object[] { msc }, frm.ob); if (dt.Rows.Count > 0) { return true; } else { return false; } } private static DataTable QueryComMscBacklogByPk(string msc, string mscPline, FrmProPSCMSC2 frm) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryComMscBacklogByPk", new object[] { msc, mscPline }, frm.ob); return dt; } /// /// 通过主键查询二级工序 /// /// /// /// public static DataTable QueryComBaseProcessCByPk(string processCodeC, FrmProPSCMSC2 frm) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.queryComBaseProcessCByPk", new object[] { processCodeC }, frm.ob); return dt; } /// /// 是否存在全程途径码 /// /// /// /// /// public static bool isExistBackLog(string msc, string mscPline, string wholeBacklogDesc, FrmProPSCMSC2 frm) { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreFrmProPSCMSC2.isExistsBackLog", new object[] { msc, mscPline, wholeBacklogDesc }, frm.ob); if (dt.Rows[0][0].ToString() == "0") { return false; } else { return true; } } } }