Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        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;
     }
 }
Exemple #6
0
        /// <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("你选了否!");
     //    }
     //}, "警告:到款拆分单核后不可反审核,是否确认继续执行审核");
 }
Exemple #9
0
        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();
            }
        }
Exemple #13
0
        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);
        }
Exemple #15
0
        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;
            }
        }
Exemple #17
0
        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]) + "存在此机台的时间段");
                                }
                            }
                        }
                    }
                }