public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); switch (e.Operation.FormOperation.Operation.ToUpperInvariant()) { case "SAVE": if (Act_BDO_AlreadySubmit()) { e.Cancel = true; } if (!IsValidatePass()) { e.Cancel = true; } break; case "SUBMIT": if (Act_BDO_AlreadySubmit()) { e.Cancel = true; } if (!IsValidatePass()) { e.Cancel = true; } break; case "AUDIT": CalScore(); break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string opKey = e.Operation.FormOperation.Operation.ToLowerInvariant(); switch (opKey) { case "PUSH": //下推时校验 if (!IsAllowPush()) { e.Cancel = true; } break; case "SAVE": if (!IsCreator()) { this.View.ShowErrMessage("您不是创建人,不能进行修改!"); e.Cancel = true; } break; case "SUBMIT": if (!IsCreator()) { this.View.ShowErrMessage("您不是创建人,不能进行修改!"); e.Cancel = true; } break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); if (this.Model.DataObject != null && (e.Operation.FormOperation.Id.EqualsIgnoreCase("save") || e.Operation.FormOperation.Id.EqualsIgnoreCase("submit"))) { if (this.Model.DataObject["SZXY_XYTFHEntry"] is DynamicObjectCollection Entry) { List <DynamicObject> ListRow1 = new List <DynamicObject>() { }; int Seq = 0; foreach (var item in Entry) { if (Convert.ToString(item["F_SZXY_CoatCode"]).IsNullOrEmptyOrWhiteSpace() || item["F_SZXY_CoatCode"] == null) { ListRow1.Add(item); } } ListRow1.Reverse(); if (ListRow1 != null && ListRow1.Count > 0) { foreach (var item in ListRow1) { Entry.Remove(item); } this.View.UpdateView("F_SZXY_XYTFEntity"); } } } }
/// <summary> /// 操作事件前 保存 执行前 表单数据验证 /// </summary> /// <param name="e"></param> private void Act_BDO_BeforeSave(BeforeDoOperationEventArgs e) { //bool _valIsErr = false; //true=存在错误;false=校验无误 //收款计划表体行 验证 decimal _FSplitAmt = decimal.Parse(this.CZ_GetValue_DF("FSplitAmt", "0")); //基本信息:本次拆分金额 decimal _FReAmount = decimal.Parse(this.CZ_GetRowValue_DF("FReAmount", 0, "0")); //记账明细:到款金额 decimal _FReSplitAmount = decimal.Parse(this.CZ_GetRowValue_DF("FReSplitAmount", 0, "0")); //记账明细:未拆分金额 decimal _HisReAmount = -(_FReAmount - _FReSplitAmount); //计算:历史拆分金额*-1 if (_FSplitAmt > _FReSplitAmount || _FSplitAmt < _HisReAmount) { this.View.ShowErrMessage("可拆分区间 " + _HisReAmount.ToString() + " —— " + _FReSplitAmount.ToString(), "错误:基本信息: 本次拆分金额 超出限制,不能保存"); e.Cancel = true; } //单据金额 验证 string _FSplitFlag = this.CZ_GetValue_DF("FSplitFlag", "0"); if (_FSplitFlag != "1") { //仅转货款时有后续动作 return; } int _maxCnt = this.View.Model.GetEntryRowCount(Str_EntryKey_OP); decimal _FSplitAmount = 0; //收款计划-本次拆分金额 decimal _FReceiptAmount = 0; //收款计划-应收金额 decimal _FRemainAmount = 0; //收款计划-未到款金额 decimal _HisSptAmount = 0; //收款计划-历史拆入金额*-1 string msg = ""; for (int i = 0; i < _maxCnt; i++) { _FSplitAmount = decimal.Parse(this.CZ_GetRowValue_DF("FSplitAmount", i, "0")); _FReceiptAmount = decimal.Parse(this.CZ_GetRowValue_DF("FReceiptAmount", i, "0")); _FRemainAmount = decimal.Parse(this.CZ_GetRowValue_DF("FRemainAmount", i, "0")); _HisSptAmount = -(_FReceiptAmount - _FRemainAmount); //msg += string.Format("本次拆分金额: {0}, 应收金额: {1}, 未到款金额: {2}, 历史拆入金额: {3}。{4}, {5}\n", //_FSplitAmount, _FReceiptAmount, _FRemainAmount, _HisSptAmount, //_FSplitAmount - _FRemainAmount, _FSplitAmount - _HisSptAmount); if (_FSplitAmount > _FRemainAmount || _FSplitAmount < _HisSptAmount) { this.View.ShowErrMessage("可拆分区间 " + _HisSptAmount.ToString() + " —— " + _FRemainAmount.ToString(), "错误:收款计划第 " + (i + 1).ToString() + " 行: 本次拆分金额 超出限制,不能保存"); e.Cancel = true; break; } } //this.View.ShowMessage(msg); }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); switch (e.Operation.FormOperation.Operation.ToUpperInvariant()) { case "SUBMIT": if (Check()) { e.Cancel = true; } break; } }
/// <summary> /// 单据持有事件发生前需要完成的功能 /// </summary> /// <param name="e"></param> public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { switch (e.Operation.FormOperation.Operation.ToUpperInvariant()) { //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件 //break; case "": break; default: break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string opKey = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (opKey) { case "SAVE": if (!IsSaveBill()) { e.Cancel = true; } break; } }
/// <summary> /// 操作事件前 审核 执行前 提示 验证 /// </summary> private void Act_BDO_BeforeAudit(BeforeDoOperationEventArgs e) { //this.View.ShowMessage("如果需要调整分配的金额,请在新的拆分单中调整(正负数)", MessageBoxOptions.YesNo, (res) => //{ // if (res == MessageBoxResult.Yes) // { // //View.ShowMessage("你选了是!"); // } // if (res == MessageBoxResult.No) // { // //e.Cancel = true; // //View.ShowMessage("你选了否!"); // } //}, "警告:到款拆分单核后不可反审核,是否确认继续执行审核"); }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string key = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (key) { case "SUBMIT": if (!Act_CheackPass()) { e.Cancel = true; } break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string op = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (op) { case "SAVE": Act_GetGManager(); break; case "SUBMIT": Act_GetGManager(); break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { if (IsUsingBdgSys()) { base.BeforeDoOperation(e); string opKey = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (opKey) { case "SAVE": case "SUBMIT": if (Check()) { e.Cancel = true; } break; } } }
/// <summary> /// 提交前验证输入是否合法 /// </summary> /// <param name="e"></param> public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string _opKey = e.Operation.FormOperation.Operation.ToUpperInvariant(); if (_opKey == "SUBMIT") { if (!IsPass()) { e.Cancel = true; } SetMaxLeaveDay(); } else if (_opKey == "SAVE") { SetMaxLeaveDay(); } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string oper = e.Operation.FormOperation.Operation; if (!string.IsNullOrWhiteSpace(oper)) { if (e.Result.IsSuccess) { if (oper.ToUpper().CompareTo(SynOperationType.DELETE.ToString()) == 0) { if (GetK3Datas(this.Context, e.Operation.FormOperation) != null) { delDatas = GetK3Datas(this.Context, e.Operation.FormOperation).ToList(); } } } } }
/// <summary> /// 单据持有事件发生前需要完成的功能 /// </summary> /// <param name="e"></param> public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { string _opKey = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (_opKey) { //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件 //break; case "SAVE": Act_BDO_BeforeSave(e); break; case "AUDIT": //Act_BDO_BeforeAudit(e); break; default: break; } base.BeforeDoOperation(e); }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); switch (e.Operation.FormOperation.Operation.ToUpperInvariant()) { case "SAVE": if (!ValidateWeightSum()) { e.Cancel = true; } SetParticipants(); break; case "SUBMIT": if (!ValidateWeightSum()) { e.Cancel = true; } SetParticipants(); break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string op = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (op) { case "SAVE": if (!Act_Validate()) { e.Cancel = true; } break; case "SUBMIT": if (!Act_Validate()) { e.Cancel = true; } break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); if (this.Context.ClientType.ToString() != "Mobile") { switch (e.Operation.FormOperation.Operation.ToUpperInvariant()) { case "SAVE": if (Act_Check()) { e.Cancel = true; } break; case "SUBMIT": if (Act_Check()) { e.Cancel = true; } break; } } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); string opKey = e.Operation.FormOperation.Operation.ToUpperInvariant(); switch (opKey) { case "SAVE": //if (!Act_OnlyValidatePass()) //{ // e.Cancel = true; //} Act_CatAddress(); break; case "SUBMIT": if (!Act_OnlyValidatePass()) { e.Cancel = true; } Act_CatAddress(); break; } }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); }
public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); if (e.Operation.FormOperation.Id.EqualsIgnoreCase("Save") || e.Operation.FormOperation.Id.EqualsIgnoreCase("submit")) { this.View.UpdateView(); string formid = this.View.BusinessInfo.GetForm().Id; DynamicObject billob = this.Model.DataObject; if (billob != null && !formid.EqualsIgnoreCase("SZXY_BZRSCJH") && !formid.EqualsIgnoreCase("SZXY_FCJTRSCJH")) { Dictionary <string, List <string> > dir = new Dictionary <string, List <string> >() { }; dir.Clear(); string BillNo = Convert.ToString(billob["FBillNo"]); if (billob[GetFieldsKey(formid)["FEntry"]] is DynamicObjectCollection Entrys) { DateTime EtimePre; int index = 0; foreach (DynamicObject row in Entrys) { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); if (this.Model.GetValue(GetFieldsKey(formid)["ETime"], index - 1) != null) { EtimePre = Convert.ToDateTime(this.Model.GetValue(GetFieldsKey(formid)["ETime"], index - 1)); if (Stime == EtimePre) { throw new Exception($"开始时间不能等于上一行结束时间!!"); } } if (row[GetFieldsKey(formid)["Mac"]] is DynamicObject Macobj) { //if (Stime== Etime) //{ // throw new Exception($"第{seq}行,开始时间不能等于结束时间!!"); //} int S = DateTime.Compare(Stime, Etime); if (S > 0) { throw new Exception($"第{seq}行,开始时间不能大于结束时间!!"); } else if (S == 0) { throw new Exception($"第{seq}行,开始时间不能等于结束时间!!"); } int E = DateTime.Compare(Etime, Stime); if (E < 0) { throw new Exception($"第{seq}行,结束时间不能大于开始时间!!"); } List <string> TimeList = new List <string>(); TimeList.Clear(); string MacId = Macobj["Id"].ToString(); if (Stime != DateTime.MinValue && Etime != DateTime.MinValue) { TimeList.Add(DateTimeToStamp(Stime)); TimeList.Add(DateTimeToStamp(Etime)); TimeList.Add(MacId); if (TimeList != null) { dir.Add(row["Seq"].ToString(), TimeList); } } } else { throw new Exception("机台不允许为空!!"); } index++; } foreach (DynamicObject row in Entrys) { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); string FEntryId = Convert.ToString(row["Id"]); DynamicObject Macobj = row[GetFieldsKey(formid)["Mac"]] as DynamicObject; if (Macobj != null) { string MacId = Macobj["Id"].ToString(); if (dir != null && dir.Count > 0) { foreach (var mac in dir) { string rewSeq = mac.Key.ToString(); if (rewSeq != seq) { long instime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Stime))); //输入的开始时间 long inetime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Etime))); //输入的结束时间 List <string> TimeList1 = mac.Value; long fromdate = Convert.ToInt64(TimeList1[0]); long todate = Convert.ToInt64(TimeList1[1]); string fromMac = Convert.ToString(TimeList1[2]); if (fromMac == MacId) { if (fromdate < instime && instime < todate) { throw new Exception("第" + rewSeq + "行,同一机台的开始时间结束时间在此单据中存在冲突!"); } } } } } string Pjsql = ""; if (!FEntryId.IsNullOrEmptyOrWhiteSpace()) { Pjsql = $" and T2.FEntryId !={ FEntryId} "; } DynamicObject orgobj = billob[GetFieldsKey(formid)["Org"]] as DynamicObject; if (orgobj == null) { throw new Exception("业务组织不允许为空"); } long orgid = Convert.ToInt64(orgobj["Id"]); string THead = GetFieldsKey(formid)["TBHead"]; string TEntry = GetFieldsKey(formid)["TBEntry"]; string sql = $"/*dialect*/select T1.FBILLNO ," + $"CONVERT(varchar(100), T2.F_SZXY_SDATE, 20) 'sdate'," + $"CONVERT(varchar(100), T2.F_SZXY_ENDDATE, 20) 'edate'" + $"from {TEntry} t2 left join {THead} T1 on T2.Fid = T1.Fid " + $" where T2.{GetFieldsKey(formid)["Mac"]}= '{MacId}' " + $"and T1.F_SZXY_OrgId={orgid} {Pjsql} " + // $" and ((CONVERT(varchar(100) ,'{Stime}', 20) between CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["Time"]}, 20) and CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["ETime"]}, 20) " + //$" or CONVERT(varchar(100) ,'{Etime}', 20) between CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["Time"]}, 20) and CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["ETime"]}, 20) )) "; $" and(CONVERT(varchar(100), '{Stime}', 20)BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + $" OR CONVERT(varchar(100), '{Etime}', 20) BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + $" OR CONVERT(varchar(100), T2.F_SZXY_SDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 20) AND CONVERT(varchar(100), '{Etime}', 20) " + $" OR CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 20) AND CONVERT(varchar(100), '{Etime}', 20)) "; DataSet Ds = Utils.CBData(sql, Context); if (Ds != null && Ds.Tables.Count > 0 && Ds.Tables[0].Rows.Count > 0) { Logger.Debug("存在此机台的时间段", sql); throw new Exception("第" + seq + "行,历史订单号:" + Convert.ToString(Ds.Tables[0].Rows[0][0]) + "存在此机台的时间段"); } } } } } else if (billob != null && formid.EqualsIgnoreCase("SZXY_BZRSCJH")) { Dictionary <string, List <string> > dir = new Dictionary <string, List <string> >() { }; dir.Clear(); string BillNo = Convert.ToString(billob["FBillNo"]); if (billob[GetFieldsKey(formid)["FEntry"]] is DynamicObjectCollection Entrys) { int index = 0; foreach (DynamicObject row in Entrys)/*.Where(m => !Convert.ToString(m["F_SZXY_Material"]).IsNullOrEmptyOrWhiteSpace()))*/ { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); DynamicObject F_SZXY_Material = (row["F_SZXY_Material"]) as DynamicObject; decimal WIDTH = Convert.ToDecimal(row["F_SZXY_WIDTH"]); string YXJ = Convert.ToString(row["F_SZXY_YXJ"]); string Mat = ""; if (F_SZXY_Material != null) { Mat = F_SZXY_Material["Id"].ToString(); } else { this.View.ShowWarnningMessage($"第{seq}行,产平型号不能为空!"); } //int S = DateTime.Compare(Stime, Etime); //if (S > 0) //{ // throw new Exception($"第{seq}行,开始时间不能大于结束时间!!"); //} //else if (S == 0) //{ // throw new Exception($"第{seq}行,开始时间不能等于结束时间!!"); //} //int E = DateTime.Compare(Etime, Stime); //if (E < 0) //{ // throw new Exception($"第{seq}行,结束时间不能大于开始时间!!"); //} List <string> TimeList = new List <string>(); TimeList.Clear(); if (Stime != DateTime.MinValue && Etime != DateTime.MinValue) { TimeList.Add(DateTimeToStamp(Stime)); //TimeList.Add(Stime.ToString("yyyyMMdd")); TimeList.Add(Mat); TimeList.Add(Convert.ToString(WIDTH)); TimeList.Add(YXJ); if (TimeList != null) { dir.Add(row["Seq"].ToString(), TimeList); } } index++; } foreach (DynamicObject row in Entrys) { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); DynamicObject RF_SZXY_Material = (row["F_SZXY_Material"]) as DynamicObject; string RWIDTH = Convert.ToString(row["F_SZXY_WIDTH"]); string RYXJ = Convert.ToString(row["F_SZXY_YXJ"]); string Mat = ""; if (RF_SZXY_Material != null) { Mat = RF_SZXY_Material["Id"].ToString(); } string FEntryId = Convert.ToString(row["Id"]); //DynamicObject Macobj = row[GetFieldsKey(formid)["Mac"]] as DynamicObject; if (dir != null && dir.Count > 0) { foreach (var item in dir) { string rewSeq = item.Key.ToString(); if (rewSeq != seq) { long instime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Stime)));//输入的开始时间 //long inetime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Etime))); //输入的结束时间 List <string> TimeList1 = item.Value; long fromdate = Convert.ToInt64(TimeList1[0]); //long todate = Convert.ToInt64(TimeList1[1]); string Material = Convert.ToString(TimeList1[1]); string WIDTH = Convert.ToString(TimeList1[2]); string YXJ = Convert.ToString(TimeList1[3]); if (instime == fromdate && Mat == Material && WIDTH == RWIDTH && RYXJ == YXJ) { throw new Exception("第" + rewSeq + "行,同一物料+宽度 +优先级+开始时间不允许重复!"); } //if (fromdate < instime && instime < todate) //{ // throw new Exception("第" + rewSeq + "行,开始结束日期在此单据存在冲突!"); //} } } DynamicObject orgobj = billob[GetFieldsKey(formid)["Org"]] as DynamicObject; if (orgobj == null) { throw new Exception("业务组织不允许为空"); } string Pjsql = ""; //if (!FEntryId.IsNullOrEmptyOrWhiteSpace()) //{ // Pjsql = $" and T2.FEntryId !={ FEntryId} "; //} string Fid = this.Model.DataObject[0].ToString(); if (!Fid.IsNullOrEmptyOrWhiteSpace()) { Pjsql = $" and T2.Fid !={ Fid} "; } long orgid = Convert.ToInt64(orgobj["Id"]); string THead = GetFieldsKey(formid)["TBHead"]; string TEntry = GetFieldsKey(formid)["TBEntry"]; if (Mat.IsNullOrEmptyOrWhiteSpace()) { return; } //string sql = $"/*dialect*/select T1.FBILLNO ,T2.Fid " + // //$"CONVERT(varchar(100), T2.F_SZXY_SDATE, 20) 'sdate'," + // //$"CONVERT(varchar(100), T2.F_SZXY_ENDDATE, 20) 'edate'" + // $" from {TEntry} t2" + // $" left join {THead} T1 on T2.Fid = T1.Fid " + // $" where T1.F_SZXY_OrgId={orgid} {Pjsql} " + // $" and(CONVERT(varchar(100), '{Stime}', 20)BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + // $" OR CONVERT(varchar(100), '{Etime}', 20) BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 120) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + // $" OR CONVERT(varchar(100), T2.F_SZXY_SDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 120) AND CONVERT(varchar(100), '{Etime}', 20) " + // $" OR CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 120) AND CONVERT(varchar(100), '{Etime}', 20)) " + // $" Group by T1.FBILLNO,T2.Fid "; string sql = $"/*dialect*/select T1.FBILLNO ,T2.Fid " + $" from {TEntry} t2" + $" left join {THead} T1 on T2.Fid = T1.Fid " + $" where T1.F_SZXY_OrgId={orgid} {Pjsql} " + $" and T2.F_SZXY_SDate='{Stime}' " + // $" and CONVERT(varchar(100), '{Stime}', 120) BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20)) " + $" and T2.F_SZXY_YXJ={RYXJ} " + $" and T2.F_SZXY_MATERIAL={Mat} " + $" and T2.F_SZXY_WIDTH={RWIDTH} " + $" Group by T1.FBILLNO,T2.Fid "; DataSet Ds = Utils.CBData(sql, Context); if (Ds != null && Ds.Tables.Count > 0 && Ds.Tables[0].Rows.Count > 0) { Logger.Debug("包装日计划SQL", sql); throw new Exception("历史订单号:" + Convert.ToString(Ds.Tables[0].Rows[0][0]) + "同一物料+宽度 +优先级+开始时间不允许重复!"); } } } } } //分层日计划 同一机台同一时间段 不允许有相同的物料 if (formid.EqualsIgnoreCase("SZXY_FCJTRSCJH")) { formid = "SZXY_FCJTRSCJH"; Dictionary <string, List <string> > dir = new Dictionary <string, List <string> >() { }; dir.Clear(); string BillNo = Convert.ToString(billob["FBillNo"]); if (billob[GetFieldsKey(formid)["FEntry"]] is DynamicObjectCollection Entrys) { DateTime EtimePre; int index = 0; foreach (DynamicObject row in Entrys) { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); if (this.Model.GetValue(GetFieldsKey(formid)["ETime"], index - 1) != null) { EtimePre = Convert.ToDateTime(this.Model.GetValue(GetFieldsKey(formid)["ETime"], index - 1)); if (Stime == EtimePre) { throw new Exception($"开始时间不能等于上一行结束时间!!"); } } if (row[GetFieldsKey(formid)["Mac"]] is DynamicObject Macobj && row["F_SZXY_Material"] is DynamicObject Material) { int S = DateTime.Compare(Stime, Etime); if (S > 0) { throw new Exception($"第{seq}行,开始时间不能大于结束时间!!"); } else if (S == 0) { throw new Exception($"第{seq}行,开始时间不能等于结束时间!!"); } int E = DateTime.Compare(Etime, Stime); if (E < 0) { throw new Exception($"第{seq}行,结束时间不能大于开始时间!!"); } List <string> TimeList = new List <string>(); TimeList.Clear(); string MacId = Macobj["Id"].ToString(); if (Stime != DateTime.MinValue && Etime != DateTime.MinValue) { TimeList.Add(DateTimeToStamp(Stime)); TimeList.Add(DateTimeToStamp(Etime)); TimeList.Add(MacId); TimeList.Add(Material["ID"].ToString()); if (TimeList != null) { dir.Add(row["Seq"].ToString(), TimeList); } } } else { throw new Exception("机台不允许为空!!"); } index++; } foreach (DynamicObject row in Entrys) { string seq = Convert.ToString(row["Seq"]); DateTime Stime = Convert.ToDateTime(row[GetFieldsKey(formid)["Time"]]); DateTime Etime = Convert.ToDateTime(row[GetFieldsKey(formid)["ETime"]]); string FEntryId = Convert.ToString(row["Id"]); if (row[GetFieldsKey(formid)["Mac"]] is DynamicObject Macobj && row["F_SZXY_Material"] is DynamicObject Material) { string MacId = Macobj["Id"].ToString(); string MaterialId = Material["Id"].ToString(); if (dir != null && dir.Count > 0) { foreach (var mac in dir) { string rewSeq = mac.Key.ToString(); if (rewSeq != seq) { long instime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Stime))); //输入的开始时间 long inetime = Convert.ToInt64(Convert.ToString(DateTimeToStamp(Etime))); //输入的结束时间 List <string> TimeList1 = mac.Value; long fromdate = Convert.ToInt64(TimeList1[0]); long todate = Convert.ToInt64(TimeList1[1]); string fromMac = Convert.ToString(TimeList1[2]); string FromMaterial = Convert.ToString(TimeList1[3]); if (fromMac == MacId && MaterialId == FromMaterial) { if (fromdate < instime && instime < todate) { throw new Exception("第" + rewSeq + "行,同一机台同一产品型号的开始时间结束时间在此单据中存在冲突!"); } } } } } string Pjsql = ""; if (!FEntryId.IsNullOrEmptyOrWhiteSpace()) { Pjsql = $" and T2.FEntryId !={ FEntryId} "; } DynamicObject orgobj = billob[GetFieldsKey(formid)["Org"]] as DynamicObject; if (orgobj == null) { throw new Exception("业务组织不允许为空"); } long orgid = Convert.ToInt64(orgobj["Id"]); string THead = GetFieldsKey(formid)["TBHead"]; string TEntry = GetFieldsKey(formid)["TBEntry"]; string sql = $"/*dialect*/select T1.FBILLNO ," + $"CONVERT(varchar(100), T2.F_SZXY_SDATE, 20) 'sdate'," + $"CONVERT(varchar(100), T2.F_SZXY_ENDDATE, 20) 'edate'" + $" from {TEntry} t2 " + $" left join {THead} T1 on T2.Fid = T1.Fid " + $" where T2.{GetFieldsKey(formid)["Mac"]}= '{MacId}'" + $" and t2.F_SZXY_MATERIAL='{MaterialId}' " + $"and T1.F_SZXY_OrgId={orgid} {Pjsql} " + // $" and ((CONVERT(varchar(100) ,'{Stime}', 20) between CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["Time"]}, 20) and CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["ETime"]}, 20) " + //$" or CONVERT(varchar(100) ,'{Etime}', 20) between CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["Time"]}, 20) and CONVERT(varchar(100) ,T2.{GetFieldsKey(formid)["ETime"]}, 20) )) "; $" and(CONVERT(varchar(100), '{Stime}', 20)BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + $" OR CONVERT(varchar(100), '{Etime}', 20) BETWEEN CONVERT(varchar(100), T2.F_SZXY_SDate, 20) AND CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) " + $" OR CONVERT(varchar(100), T2.F_SZXY_SDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 20) AND CONVERT(varchar(100), '{Etime}', 20) " + $" OR CONVERT(varchar(100), T2.F_SZXY_EndDate, 20) BETWEEN CONVERT(varchar(100), '{Stime}', 20) AND CONVERT(varchar(100), '{Etime}', 20)) "; DataSet Ds = Utils.CBData(sql, Context); if (Ds != null && Ds.Tables.Count > 0 && Ds.Tables[0].Rows.Count > 0) { Logger.Debug("存在此机台的时间段", sql); throw new Exception("第" + seq + "行,历史订单号:" + Convert.ToString(Ds.Tables[0].Rows[0][0]) + "存在此机台的时间段"); } } } } }