/// <summary> /// 入口函数 /// </summary> /// <param name="vouchtype"></param> /// <param name="dsHead"></param> /// <param name="dsBody"></param> public void Run(string vouchtype, DataSet dsHead, DataSet dsBody) { Model.Synergismlog log = new Synergismlog(); log.OP = (APIOp)ClassFactory.GetBaseOp(vouchtype, tasktype); log.TaskType = tasktype; DealResult dr = new DealResult(); dr.ResultNum = Constant.ResultNum_NoError; BLL.TaskLog.ITaskLogDetail logdtbll = ClassFactory.GetITaskLogDetailBLL(log.TaskType); BLL.TaskLog.ITaskLogMain logbll = ClassFactory.GetITaskLogMainBLL(log.TaskType); Model.Synergismlogdt fdt = logdtbll.GetFrist(log, log.OP); //把记录设为处理中 log.Cstatus = Constant.SynerginsLog_Cstatus_Dealing; log.Endtime = DateTime.Now; logbll.Update(log, log.OP); //预置为完成 log.Cstatus = Constant.SynerginsLog_Cstatus_Complete; //获取下一节点(节点数可能大于1) List <Model.Synergismlogdt> listnext = logdtbll.GetNext(fdt, log.OP); //协同操作 dr = MakeLogDT(vouchtype, dsHead, dsBody, log, dr, logdtbll, logbll, fdt, listnext); }
/// <summary> /// 获取上游单据审核日期 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string GetVerifyData(Model.Synergismlogdt dt) { string strDefault = DateTime.Now.ToString("yyyy-MM-dd").Replace('.', '-').Replace('/', '-'); if (dt.Ilineno <= 1) { return(strDefault); } BLL.TaskLog.ITaskLogDetail bllDT = ClassFactory.GetITaskLogDetailBLL(dt.TaskType); DAL.TaskLog.ITaskLogDetail dalDT = ClassFactory.GetITaskLogDetailDAL(dt.TaskType); Model.Synergismlogdt dtPrev; dtPrev = bllDT.GetPrevious(dt, dt.OP); Model.ConnectInfo ConnectStr = dalDT.getConnectStr(dtPrev); return(DAL.Common.GetVerifyDate(ConnectStr, dtPrev)); }
/// <summary> /// 判断日志中记录的单据在账套中是否真的存在 added by liuxzha 2015.03.23 /// 日志查询界面使用 /// </summary> /// <param name="autoid"></param> /// <returns> 0 本节点没有生成,子结点也没生成; /// 10 本节点生成,子结点没有生成,单据为未审核状态 /// 11 本节点生成,子结点没有生成,单据为已审核状态 /// 100 本节点没有生成,子结点已经生成 /// 110 本节点生成,子结点也已经生成,单据为未审核状态 /// 111 本节点生成,子结点也已经生成,单据为已审核状态</returns> public int ChkExistsInData(string autoid) { int res = 0; //bool bHasCreateChild = false; //在日志中是否已生成子节点 DAL.TaskLog.ITaskLogDetail daldt = ClassFactory.GetITaskLogDetailDAL(3); BLL.TaskLog.ITaskLogDetail logdtbll = ClassFactory.GetITaskLogDetailBLL(3); Model.Synergismlogdt dt = daldt.GetModel(autoid); List <Model.Synergismlogdt> nextlist = logdtbll.GetNext(dt, null); foreach (Model.Synergismlogdt next in nextlist) { if (!string.IsNullOrEmpty(next.Cvoucherno)) { //bHasCreateChild = true; res += 100; } } BaseData bd = ClassFactory.GetBaseData(dt); bd.Dodelete = true; bd.Synergismlogdt = dt; bd.Fristsynergismlogdt = daldt.GetFirst(dt); BaseOp op = ClassFactory.GetBaseOp(dt); op.MakeData(dt, bd); Model.APIData apidata = bd as Model.APIData; string vouchid = op.GetCodeorID(dt.Cvoucherno, bd, "id"); if (!string.IsNullOrEmpty(vouchid)) { res += 10; //本节点已生成 if (((APIOp)op).CheckAuditStatus(dt.Cvoucherno, apidata.ConnectInfo.Constring)) { res += 1; } } return(res); }
/// <summary> /// XTLibrary 入口函数 /// </summary> /// <param name="log"></param> /// <returns></returns> public void Run(Model.Synergismlog log) { System.Diagnostics.Trace.WriteLine("begin Run(Model.Synergismlog log) "); System.Diagnostics.Trace.WriteLine("before log.OPClass "); log.OPClass = log.OPClass; log.OP = ClassFactory.GetBaseOp(log); DealResult dr = new DealResult(); dr.ResultNum = Constant.ResultNum_NoError; System.Diagnostics.Trace.WriteLine("after log.OPClass "); System.Diagnostics.Trace.WriteLine("before ITaskLogDetail "); BLL.TaskLogFactory.ITaskLogDetail logdtbll = ClassFactory.GetITaskLogDetailBLL(log.TaskType); System.Diagnostics.Trace.WriteLine("after ITaskLogDetail "); System.Diagnostics.Trace.WriteLine("before ITaskLogMain "); BLL.TaskLogFactory.ITaskLogMain logbll = ClassFactory.GetITaskLogMainBLL(log.TaskType); System.Diagnostics.Trace.WriteLine("after ITaskLogMain "); System.Diagnostics.Trace.WriteLine("before logdtbll.GetFrist "); Model.Synergismlogdt fdt = logdtbll.GetFrist(log, log.OP); System.Diagnostics.Trace.WriteLine("after logdtbll.GetFrist "); //挂起主表(置于等待中) if (fdt.Cstatus == Constant.SynergisnLogDT_Cstatus_NoAudit) { log.Cstatus = Constant.SynerginsLog_Cstatus_Wait; log.Endtime = DateTime.Now; logbll.Update(log, log.OP); //return dr; } //把记录设为处理中 log.Cstatus = Constant.SynerginsLog_Cstatus_Dealing; log.Endtime = DateTime.Now; logbll.Update(log, log.OP); //预置为完成 log.Cstatus = Constant.SynerginsLog_Cstatus_Complete; //获取下一节点(节点数可能大于1) List <Model.Synergismlogdt> listnext = logdtbll.GetNext(fdt, log.OP); //协同操作 System.Diagnostics.Trace.WriteLine("before MakeLogDT "); dr = MakeLogDT(log, dr, logdtbll, logbll, fdt, listnext); System.Diagnostics.Trace.WriteLine("after MakeLogDT "); //发送消息 //更新最终状态 log.Endtime = DateTime.Now; logbll.Update(log, log.OP); // return dr; }
/// <summary> /// 删除 /// added by liuxzha 2016.03.08 /// </summary> /// <param name="taskType">任务类别 0 CQ 1 XT</param> /// <param name="autoid"></param> /// <param name="id"></param> /// <returns></returns> public DealResult DeleteVouch(int tasktype, Synergismlogdt dt) { DealResult dr = new DealResult(); try { DAL.TaskLog.ITaskLogDetail daldt = ClassFactory.GetITaskLogDetailDAL(tasktype); BLL.TaskLog.ITaskLogDetail logdtbll = ClassFactory.GetITaskLogDetailBLL(tasktype); #region 协同 校验 if (tasktype.Equals("1")) { List <Model.Synergismlogdt> nextlist = logdtbll.GetNext(dt, null); foreach (Model.Synergismlogdt next in nextlist) { if (!string.IsNullOrEmpty(next.Cvoucherno)) { dr.ResultNum = -1; dr.ResultMsg = "下游单据未删除,请先删除下游单据"; return(dr); } } } #endregion BaseData bd = ClassFactory.GetBaseData(dt); bd.Dodelete = true; bd.Synergismlogdt = dt; bd.Fristsynergismlogdt = daldt.GetFirst(dt); BaseOp op = ClassFactory.GetBaseOp(dt); op.MakeData(dt, bd); string vouchid = op.GetCodeorID(dt.Cvoucherno, bd, "id"); if (!string.IsNullOrEmpty(vouchid)) { dr = op.UndoMake(bd, dt); } if (dr.ResultNum < Constant.ResultNum_NoError) { return(dr); } dt.Cstatus = Constant.SynergisnLogDT_Cstatus_Delete; dt.Cvoucherno = string.Empty; daldt.Update(dt); DAL.TaskLog.ITaskLogMain logdal = ClassFactory.GetITaskLogMainDAL(tasktype); Model.Synergismlog log = logdal.GetModel(dt.Id, dt.OP); log.Cstatus = Constant.SynerginsLog_Cstatus_Wait; logdal.Update(log, dt.OP); } catch (Exception ex) { dr.ResultMsg = ex.ToString(); dr.ResultNum = -1; } return(dr); }