|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589 |
- using Learun.DataBase.Repository;
- using Learun.Util;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using Learun.Application.TwoDevelopment.LR_LGManager;
-
- namespace Learun.Application.WorkFlow
- {
- /// <summary>
- /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
- /// Copyright (c) 2013-2018 上海力软信息技术有限公司
- /// 创建人:力软-框架开发组
- /// 日 期:2018.12.07
- /// 描 述:流程进程
- /// </summary>
- public class NWFProcessSericve : RepositoryFactory
- {
- #region 获取数据
- /// <summary>
- /// 获取流程进程实体
- /// </summary>
- /// <param name="keyValue">主键</param>
- /// <returns></returns>
- public NWFProcessEntity GetEntity(string keyValue)
- {
- try
- {
- return this.BaseRepository().FindEntity<NWFProcessEntity>(keyValue);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取流程进程实例
- /// </summary>
- /// <param name="processId">父流程进程主键</param>
- /// <param name="nodeId">节点主键</param>
- /// <returns></returns>
- public NWFProcessEntity GetEntityByProcessId(string processId, string nodeId)
- {
- try
- {
- return this.BaseRepository().FindEntity<NWFProcessEntity>(t => t.F_ParentProcessId == processId && t.F_ParentNodeId == nodeId);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取子流程列表
- /// </summary>
- /// <param name="parentProcessId">父流程进程主键</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetChildProcessList(string parentProcessId)
- {
- try
- {
- return this.BaseRepository().FindList<NWFProcessEntity>(t => t.F_ParentProcessId == parentProcessId);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 获取流程信息列表
- /// </summary>
- /// <param name="pagination">分页参数</param>
- /// <param name="queryJson">查询条件</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetPageList(Pagination pagination, string queryJson)
- {
- try
- {
- var expression = LinqExtensions.True<NWFProcessEntity>();
- var queryParam = queryJson.ToJObject();
- // 分类
- if (!queryParam["categoryId"].IsEmpty()) // 1:未完成 2:已完成
- {
- if (queryParam["categoryId"].ToString() == "1")
- {
- expression = expression.And(t => t.F_IsFinished == 0);
- }
- else
- {
- expression = expression.And(t => t.F_IsFinished == 1);
- }
- }
- //流程类别
- if (!queryParam["F_Category"].IsEmpty()) // 1:未完成 2:已完成
- {
- var Categofy = queryParam["F_Category"].ToString();
- var codeList = this.BaseRepository().FindList<NWFSchemeInfoEntity>(a => a.F_Category == Categofy).Select(a => a.F_Code);
-
- if (codeList.Count() > 0)
- {
- expression = expression.And(a => codeList.Contains(a.F_SchemeCode));
- }
- }
- // 操作时间
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- DateTime startTime = queryParam["StartTime"].ToDate();
- DateTime endTime = queryParam["EndTime"].ToDate();
- expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
- }
- // 关键字
- if (!queryParam["keyword"].IsEmpty())
- {
- string keyword = queryParam["keyword"].ToString();
- expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword) || t.F_CreateUserName.Contains(keyword));
- }
- expression = expression.And(t => t.F_EnabledMark != 2);
- expression = expression.And(t => t.F_IsChild == 0);
-
- var result = this.BaseRepository().FindList<NWFProcessEntity>(expression, pagination);
-
-
- return result;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取流程信息列表
- /// </summary>
- /// <param name="pagination">分页参数</param>
- /// <param name="queryJson">查询条件</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetAllList()
- {
- try
- {
- return this.BaseRepository().FindList<NWFProcessEntity>();
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- public LC_hetongEntity GetHTInfo(string keyValue)
- {
- try
- {
- return this.BaseRepository("CollegeMIS").FindEntity<LC_hetongEntity>(a => a.LC_ID == keyValue);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的流程信息列表
- /// </summary>
- /// <param name="userId">用户主键</param>
- /// <param name="pagination">分页参数</param>
- /// <param name="queryJson">查询条件</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyPageList(string userId, Pagination pagination, string queryJson, string schemeCode)
- {
- try
- {
- var expression = LinqExtensions.True<NWFProcessEntity>();
- var queryParam = queryJson.ToJObject();
- expression = expression.And(t => t.F_CreateUserId == userId);
- // 操作时间
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- DateTime startTime = queryParam["StartTime"].ToDate();
- DateTime endTime = queryParam["EndTime"].ToDate();
- expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
- }
- // 关键字
- if (!queryParam["keyword"].IsEmpty())
- {
- string keyword = queryParam["keyword"].ToString();
- expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword));
- }
- if (!string.IsNullOrEmpty(schemeCode))
- {
- expression = expression.And(t => t.F_SchemeCode.Equals(schemeCode));
- }
- expression = expression.And(t => t.F_IsChild == 0);
- var aa = this.BaseRepository().FindList<NWFProcessEntity>(expression, pagination);
- foreach (var item in aa)
- {
- item.F_TaskId = this.BaseRepository().FindEntity<NWFTaskEntity>(x => x.F_ProcessId == item.F_Id)?.F_Id;
- item.F_TaskType = this.BaseRepository().FindEntity<NWFTaskEntity>(x => x.F_ProcessId == item.F_Id)?.F_Type;
- item.F_TaskName = this.BaseRepository().FindEntity<NWFTaskEntity>(x => x.F_ProcessId == item.F_Id)?.F_NodeName;
-
- //合同流程审批专用 如果第一步校长审批同意的话 可以打印授权委托书
- if (item.F_SchemeCode == "LC_Contract_")
- {
- var entity = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a =>
- a.F_ProcessId == item.F_Id && a.F_TaskUserId == "29add015-3638-415d-9f91-5024bd746fb5" &&
- a.F_OperationCode == "agree");
- if (null != entity)
- {
- item.LeaderIsAgree = true;
- }
- }
- }
- return aa;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的流程信息列表
- /// </summary>
- /// <param name="userId">用户主键</param>
- /// <param name="pagination">分页参数</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyPageList(string userId, string queryJson, string schemeCode)
- {
- try
- {
- var expression = LinqExtensions.True<NWFProcessEntity>();
- var queryParam = queryJson.ToJObject();
- expression = expression.And(t => t.F_CreateUserId == userId);
- // 操作时间
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- DateTime startTime = queryParam["StartTime"].ToDate();
- DateTime endTime = queryParam["EndTime"].ToDate();
- expression = expression.And(t => t.F_CreateDate >= startTime && t.F_CreateDate <= endTime);
- }
- // 关键字
- if (!queryParam["keyword"].IsEmpty())
- {
- string keyword = queryParam["keyword"].ToString();
- expression = expression.And(t => t.F_Title.Contains(keyword) || t.F_SchemeName.Contains(keyword));
- }
- if (!string.IsNullOrEmpty(schemeCode))
- {
- expression = expression.And(t => t.F_SchemeCode.Equals(schemeCode));
- }
- expression = expression.And(t => t.F_IsChild == 0);
- return this.BaseRepository().FindList<NWFProcessEntity>(expression);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的代办任务列表
- /// </summary>
- /// <param name="userInfo">用户信息</param>
- /// <param name="pagination">翻页信息</param>
- /// <param name="queryJson">查询条件</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <param name="isBatchAudit">true获取批量审核任务</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode, bool isBatchAudit = false)
- {
- try
- {
- string userId = userInfo.userId;
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- t.F_IsUrge,
- t.F_ModifyDate as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- (
- SELECT
- F_TaskId
- FROM
- LR_NWF_TaskRelation r1
- LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
- WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
- ");
-
-
- // 添加委托信息
- List<UserInfo> delegateList = GetDelegateProcess(userId);
- foreach (var item in delegateList)
- {
- string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
- string userI2 = "'" + item.userId + "'";
-
- strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
- }
- strSql.Append(@") GROUP BY
- F_TaskId
- ) r
- LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
- LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
- WHERE
- t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2 OR t.F_Type = 4 OR t.F_Type = 6)");
-
- var queryParam = queryJson.ToJObject();
- DateTime startTime = DateTime.Now, endTime = DateTime.Now;
-
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- startTime = queryParam["StartTime"].ToDate();
- endTime = queryParam["EndTime"].ToDate();
- strSql.Append(" AND ( t.F_ModifyDate >= @startTime AND t.F_ModifyDate <= @endTime ) ");
- }
- string keyword = "";
- if (!queryParam["keyword"].IsEmpty())
- {
- keyword = "%" + queryParam["keyword"].ToString() + "%";
- strSql.Append(" AND ( p.F_Title like @keyword OR p.F_SchemeName like @keyword ) ");
- }
-
- if (!string.IsNullOrEmpty(schemeCode))
- {
- strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
- }
-
- if (isBatchAudit)
- {
- strSql.Append(" AND t.F_IsBatchAudit = 1 ");
- }
-
- return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userId, startTime, endTime, keyword, schemeCode }, pagination);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的代办任务列表
- /// </summary>
- /// <param name="userInfo">用户信息</param>
- /// <param name="queryJson">查询条件</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <param name="isBatchAudit">true获取批量审核任务</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyTaskPageList(UserInfo userInfo, string queryJson, string schemeCode, bool isBatchAudit = false)
- {
- try
- {
- string userId = userInfo.userId;
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- t.F_IsUrge,
- t.F_ModifyDate as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- (
- SELECT
- F_TaskId
- FROM
- LR_NWF_TaskRelation r1
- LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
- WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
- ");
-
-
- // 添加委托信息
- List<UserInfo> delegateList = GetDelegateProcess(userId);
- foreach (var item in delegateList)
- {
- string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
- string userI2 = "'" + item.userId + "'";
-
- strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
- }
- strSql.Append(@") GROUP BY
- F_TaskId
- ) r
- LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
- LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
- WHERE
- t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2 OR t.F_Type = 4 OR t.F_Type = 6)");
-
- var queryParam = queryJson.ToJObject();
- DateTime startTime = DateTime.Now, endTime = DateTime.Now;
-
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- startTime = queryParam["StartTime"].ToDate();
- endTime = queryParam["EndTime"].ToDate();
- strSql.Append(" AND ( t.F_ModifyDate >= @startTime AND t.F_ModifyDate <= @endTime ) ");
- }
- string keyword = "";
- if (!queryParam["keyword"].IsEmpty())
- {
- keyword = "%" + queryParam["keyword"].ToString() + "%";
- strSql.Append(" AND ( p.F_Title like @keyword OR p.F_SchemeName like @keyword ) ");
- }
-
- if (!string.IsNullOrEmpty(schemeCode))
- {
- strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
- }
-
- if (isBatchAudit)
- {
- strSql.Append(" AND t.F_IsBatchAudit = 1 ");
- }
-
- return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userId, startTime, endTime, keyword, schemeCode });
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的已办任务列表
- /// </summary>
- /// <param name="userId">用户主键</param>
- /// <param name="pagination">翻页信息</param>
- /// <param name="queryJson">查询条件</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyFinishTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode)
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- r.F_Time as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart,
- t.F_NodeId
- FROM
- LR_NWF_Task t
- LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
- LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
- WHERE
- (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
- ");
-
-
- var queryParam = queryJson.ToJObject();
- DateTime startTime = DateTime.Now, endTime = DateTime.Now;
-
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- startTime = queryParam["StartTime"].ToDate();
- endTime = queryParam["EndTime"].ToDate();
- strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
- }
- string keyword = "";
- if (!queryParam["keyword"].IsEmpty())
- {
- keyword = "%" + queryParam["keyword"].ToString() + "%";
- strSql.Append(" AND ( p.F_ProcessName like @keyword OR p.F_SchemeName like @keyword ) ");
- }
- if (!string.IsNullOrEmpty(schemeCode))
- {
- strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
- }
-
- var data = this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode }, pagination);
- foreach (var item in data)
- {
- var nextNode = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a =>
- a.F_ProcessId == item.F_Id && a.F_PrevNodeId == item.F_NodeId);
- if (null != nextNode)
- {
- item.NextNodeIsAudited = true;
- }
- }
-
- return data;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的已办任务列表
- /// </summary>
- /// <param name="userId">用户主键</param>
- /// <param name="queryJson">查询条件</param>
- /// <param name="schemeCode">流程模板编码</param>
- /// <returns></returns>
- public IEnumerable<NWFProcessEntity> GetMyFinishTaskPageList(UserInfo userInfo, string queryJson, string schemeCode)
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- r.F_Time as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- LR_NWF_Task t
- LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
- LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
- WHERE
- (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
- ");
-
-
- var queryParam = queryJson.ToJObject();
- DateTime startTime = DateTime.Now, endTime = DateTime.Now;
-
- if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty())
- {
- startTime = queryParam["StartTime"].ToDate();
- endTime = queryParam["EndTime"].ToDate();
- strSql.Append(" AND ( r.F_Time >= @startTime AND r.F_Time <= @endTime ) ");
- }
- string keyword = "";
- if (!queryParam["keyword"].IsEmpty())
- {
- keyword = "%" + queryParam["keyword"].ToString() + "%";
- strSql.Append(" AND ( p.F_ProcessName like @keyword OR p.F_SchemeName like @keyword ) ");
- }
- if (!string.IsNullOrEmpty(schemeCode))
- {
- strSql.Append(" AND p.F_SchemeCode = @schemeCode ");
- }
-
- return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode });
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取委托人关联的流程进程列表
- /// </summary>
- /// <param name="userId">当前用户主键</param>
- /// <returns></returns>
- public List<UserInfo> GetDelegateProcess(string userId)
- {
- try
- {
- List<UserInfo> delegateUserlist = new List<UserInfo>();
- DateTime datatime = DateTime.Now;
- IEnumerable<NWFDelegateRuleEntity> wfDelegateRuleList = this.BaseRepository().FindList<NWFDelegateRuleEntity>(t => t.F_ToUserId == userId && t.F_BeginDate <= datatime && t.F_EndDate >= datatime);
- foreach (var item in wfDelegateRuleList)
- {
- UserInfo userinfo = new UserInfo();
- userinfo.userId = item.F_CreateUserId;
-
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- p.F_Id
- FROM
- LR_NWF_DelegateRelation d
- LEFT JOIN LR_NWF_SchemeInfo s ON s.F_Id = d.F_SchemeInfoId
- LEFT JOIN LR_NWF_Process p ON p.F_SchemeCode = s.F_Code
- WHERE
- p.F_Id IS NOT NULL
- AND p.F_IsFinished = 0
- AND d.F_DelegateRuleId = @DelegateRuleId ");
-
- DataTable dt = this.BaseRepository().FindTable(strSql.ToString(), new { DelegateRuleId = item.F_Id });
- userinfo.wfProcessId = "";
- foreach (DataRow dr in dt.Rows)
- {
- if (!string.IsNullOrEmpty(dr[0].ToString()))
- {
- if (!string.IsNullOrEmpty(userinfo.wfProcessId))
- {
- userinfo.wfProcessId += ",";
- }
- userinfo.wfProcessId += dr[0].ToString();
- }
- }
-
- if (!string.IsNullOrEmpty(userinfo.wfProcessId))
- {
- delegateUserlist.Add(userinfo);
- }
- }
- return delegateUserlist;
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
-
- #region 获取sql语句
- /// <summary>
- /// 获取我的流程信息列表SQL语句
- /// </summary>
- /// <returns></returns>
- public string GetMySql()
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- p.F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- LR_NWF_Process p
- WHERE
- p.F_CreateUserId = @userId AND p.F_IsChild = 0
- ");
-
- return strSql.ToString();
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的代办任务列表SQL语句
- /// </summary>
- /// <param name="userInfo">用户信息</param>
- /// <param name="isBatchAudit">true获取批量审核任务</param>
- /// <returns></returns>
- public string GetMyTaskSql(UserInfo userInfo, bool isBatchAudit = false)
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- t.F_IsUrge,
- t.F_ModifyDate as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- (
- SELECT
- F_TaskId
- FROM
- LR_NWF_TaskRelation r1
- LEFT JOIN LR_NWF_Task t1 ON r1.F_TaskId = t1.F_Id
- WHERE r1.F_Mark = 0 AND r1.F_Result = 0 AND (r1.F_UserId = @userId
- ");
-
-
- // 添加委托信息
- List<UserInfo> delegateList = GetDelegateProcess(userInfo.userId);
- foreach (var item in delegateList)
- {
- string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
- string userI2 = "'" + item.userId + "'";
-
- strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
- }
- strSql.Append(@") GROUP BY
- F_TaskId
- ) r
- LEFT JOIN LR_NWF_Task t ON t.F_Id = r.F_TaskId
- LEFT JOIN LR_NWF_Process p ON p.F_Id = t.F_ProcessId
- WHERE
- t.F_IsFinished = 0 AND (p.F_IsFinished = 0 OR t.F_Type = 2)");
-
- if (isBatchAudit)
- {
- strSql.Append(" AND t.F_IsBatchAudit = 1 ");
- }
-
- return strSql.ToString();
-
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 获取我的已办任务列表SQL语句
- /// </summary>
- /// <returns></returns>
- public string GetMyFinishTaskSql()
- {
- try
- {
- var strSql = new StringBuilder();
- strSql.Append(@"SELECT
- t.F_Id AS F_TaskId,
- t.F_Type AS F_TaskType,
- t.F_NodeName AS F_TaskName,
- r.F_Time as F_CreateDate,
- p.F_Id,
- p.F_SchemeId,
- p.F_SchemeCode,
- p.F_SchemeName,
- p.F_Title,
- p.F_Level,
- p.F_EnabledMark,
- p.F_IsAgain,
- p.F_IsFinished,
- p.F_IsChild,
- p.F_ParentTaskId,
- p.F_ParentProcessId,
- p.F_CreateUserId,
- p.F_CreateUserName,
- p.F_IsStart
- FROM
- LR_NWF_Task t
- LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id
- LEFT JOIN LR_NWF_Process p ON t.F_ProcessId = p.F_Id
- WHERE
- (r.F_Result = 1 OR r.F_Result = 2 OR r.F_Result = 4) AND r.F_UserId = @userId
- ");
-
- return strSql.ToString();
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- #endregion
-
- #endregion
-
- #region 保存信息
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFProcessEntity">流程进程</param>
- /// <param name="taskList">流程任务列表</param>
- /// <param name="taskMsgList">流程消息列表</param>
- /// <param name="taskLogEntity">任务日志</param>
- public void Save(NWFProcessEntity nWFProcessEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFTaskLogEntity taskLogEntity)
- {
- NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
- var db = this.BaseRepository().BeginTrans();
- try
- {
- if (nWFProcessEntityTmp == null)
- {
- db.Insert(nWFProcessEntity);
- }
- else
- {
- db.Update(nWFProcessEntity);
- }
- foreach (var task in taskList)
- {
- task.F_ModifyDate = DateTime.Now;
- db.Insert(task);
- int num = 1;
- if (task.nWFUserInfoList != null)
- {
- foreach (var taskUser in task.nWFUserInfoList)
- {
- NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
- nWFTaskRelationEntity.Create();
- nWFTaskRelationEntity.F_TaskId = task.F_Id;
- nWFTaskRelationEntity.F_UserId = taskUser.Id;
- nWFTaskRelationEntity.F_Mark = taskUser.Mark;
- nWFTaskRelationEntity.F_Result = 0;
- nWFTaskRelationEntity.F_Sort = num;
- db.Insert(nWFTaskRelationEntity);
- num++;
- }
- }
- }
- foreach (var taskMsg in taskMsgList)
- {
- db.Insert(taskMsg);
- }
-
- db.Insert(taskLogEntity);
-
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 保存流程进程信息
- /// </summary>
- /// <param name="taskLogEntity">任务日志</param>
- /// <param name="taskRelationEntity">任务执行人状态更新</param>
- /// <param name="taskEntityUpdate">任务状态更新</param>
- /// <param name="processEntity">流程进程状态更新</param>
- /// <param name="confluenceList">会签信息</param>
- /// <param name="closeTaskList">会签需要关闭的任务</param>
- /// <param name="taskList">新的任务列表</param>
- /// <param name="taskMsgList">新的任务消息列表</param>
- public void Save(NWFTaskLogEntity taskLogEntity, NWFTaskRelationEntity taskRelationEntity, NWFTaskEntity taskEntityUpdate, NWFProcessEntity processEntity, List<NWFConfluenceEntity> confluenceList, List<NWFTaskEntity> closeTaskList, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFProcessEntity pProcessEntity = null)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Insert(taskLogEntity);
- if (taskRelationEntity != null)
- db.Update(taskRelationEntity);
- db.Update(taskEntityUpdate);
-
- if (processEntity != null)
- {
- db.Update(processEntity);
- }
-
- if (pProcessEntity != null)
- {
- db.Update(pProcessEntity);
- }
-
- if (confluenceList != null)
- {
- foreach (var item in confluenceList)
- {
- if (item.isClear)
- {
- string processId = item.F_ProcessId;
- string nodeId = item.F_NodeId;
- db.Delete<NWFConfluenceEntity>(t => t.F_ProcessId == processId && t.F_NodeId == nodeId);
- // 增加一条会签审核记录
- NWFTaskLogEntity nWFTaskLogEntity = new NWFTaskLogEntity()
- {
- F_ProcessId = processId,
- F_OperationCode = "confluence",
- F_OperationName = "会签" + (item.confluenceRes == 1 ? "通过" : "不通过"),
- F_NodeId = item.F_NodeId,
- F_TaskType = 7
- };
- nWFTaskLogEntity.Create();
- db.Insert(nWFTaskLogEntity);
- }
- else
- {
- db.Insert(item);
- }
- }
- }
-
- if (closeTaskList != null)
- {
- foreach (var item in closeTaskList)
- {
- db.Update(item);
- }
- }
-
- foreach (var task in taskList)
- {
- task.F_ModifyDate = DateTime.Now;
- db.Insert(task);
- int num = 1;
- if (task.nWFUserInfoList != null)
- {
- foreach (var taskUser in task.nWFUserInfoList)
- {
- NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
- nWFTaskRelationEntity.Create();
- nWFTaskRelationEntity.F_TaskId = task.F_Id;
- nWFTaskRelationEntity.F_UserId = taskUser.Id;
- nWFTaskRelationEntity.F_Mark = taskUser.Mark;
- nWFTaskRelationEntity.F_Result = 0;
- nWFTaskRelationEntity.F_Sort = num;
- db.Insert(nWFTaskRelationEntity);
- num++;
- }
- }
- }
- foreach (var taskMsg in taskMsgList)
- {
- db.Insert(taskMsg);
- }
-
-
-
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFProcessEntity">流程进程</param>
- public void Save(NWFProcessEntity nWFProcessEntity)
- {
- try
- {
- this.BaseRepository().Insert(nWFProcessEntity);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFTaskLogEntity">任务日志数据</param>
- /// <param name="taskUserUpdateList">任务执行人需要更新状态数据</param>
- /// <param name="nWFTaskMsgEntity">任务消息</param>
- public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskRelationEntity> taskUserUpdateList, NWFTaskMsgEntity nWFTaskMsgEntity)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Insert(nWFTaskLogEntity);
-
- foreach (var item in taskUserUpdateList)
- {
- db.Update(item);
- }
- db.Insert(nWFTaskMsgEntity);
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
-
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFTaskLogEntity">任务日志数据</param>
- /// <param name="nWFTaskRelationEntity">任务执行人需要更新状态数据</param>
- /// <param name="taskEntity">任务</param>
- public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskRelationEntity nWFTaskRelationEntity, NWFTaskEntity taskEntity)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Insert(nWFTaskLogEntity);
- db.Update(nWFTaskRelationEntity);
- if (taskEntity != null)
- {
- taskEntity.F_ModifyDate = DateTime.Now;
- db.Update(taskEntity);
- }
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFTaskLogEntity">任务日志数据</param>
- /// <param name="taskList">需要更新的任务列表</param>
- /// <param name="taskMsgList">任务消息列表</param>
- public void Save(NWFTaskLogEntity nWFTaskLogEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Insert(nWFTaskLogEntity);
- foreach (var item in taskList)
- {
- item.F_ModifyDate = DateTime.Now;
- db.Update(item);
- }
- foreach (var item in taskMsgList)
- {
- db.Insert(item);
- }
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// 保存流程进程数据
- /// </summary>
- /// <param name="nWFTaskLogEntity">任务日志数据</param>
- /// <param name="taskList">需要更新的任务列表</param>
- /// <param name="taskMsgList">任务消息列表</param>
- public void Save(NWFTaskLogEntity nWFTaskLogEntity, NWFTaskEntity task, List<NWFTaskMsgEntity> taskMsgList)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Insert(nWFTaskLogEntity);
- task.F_ModifyDate = DateTime.Now;
- db.Update(task);
- foreach (var item in taskMsgList)
- {
- db.Insert(item);
- }
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 保存流程进程信息
- /// </summary>
- /// <param name="taskLogEntity">任务日志</param>
- /// <param name="taskRelationEntity">任务执行人状态更新</param>
- /// <param name="taskEntityUpdate">任务状态更新</param>
- /// <param name="processEntity">流程进程状态更新</param>
- /// <param name="taskList">新的任务列表</param>
- /// <param name="taskMsgList">新的任务消息列表</param>
- public void Save(NWFTaskLogEntity pTaskLogEntity, NWFTaskRelationEntity pTaskRelationEntity, NWFTaskEntity pTaskEntityUpdate, NWFProcessEntity pProcessEntity, List<NWFTaskEntity> pTaskList, List<NWFTaskMsgEntity> pTaskMsgList, NWFProcessEntity nWFProcessEntity, List<NWFTaskEntity> taskList, List<NWFTaskMsgEntity> taskMsgList, NWFTaskLogEntity taskLogEntity)
- {
- NWFProcessEntity nWFProcessEntityTmp = this.BaseRepository().FindEntity<NWFProcessEntity>(nWFProcessEntity.F_Id);
- IEnumerable<NWFTaskEntity> uTaskList = this.BaseRepository().FindList<NWFTaskEntity>(t => t.F_ProcessId == nWFProcessEntity.F_Id && t.F_NodeId == taskLogEntity.F_NodeId && t.F_IsFinished == 0);
- var db = this.BaseRepository().BeginTrans();
- try
- {
- if (nWFProcessEntityTmp == null)
- {
- db.Insert(nWFProcessEntity);
- }
- else
- {
- db.Update(nWFProcessEntity);
- }
- foreach (var task in taskList)
- {
- task.F_ModifyDate = DateTime.Now;
- db.Insert(task);
- int num = 1;
- if (task.nWFUserInfoList != null)
- {
- foreach (var taskUser in task.nWFUserInfoList)
- {
- NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
- nWFTaskRelationEntity.Create();
- nWFTaskRelationEntity.F_TaskId = task.F_Id;
- nWFTaskRelationEntity.F_UserId = taskUser.Id;
- nWFTaskRelationEntity.F_Mark = taskUser.Mark;
- nWFTaskRelationEntity.F_Result = 0;
- nWFTaskRelationEntity.F_Sort = num;
- db.Insert(nWFTaskRelationEntity);
- num++;
- }
- }
- }
- foreach (var taskMsg in taskMsgList)
- {
- db.Insert(taskMsg);
- }
-
- db.Insert(taskLogEntity);
- foreach (var item in uTaskList)
- {
- item.F_IsFinished = 1;
- db.Update(item);
- }
-
-
- // 父流程
- db.Insert(pTaskLogEntity);
- db.Update(pTaskRelationEntity);
- db.Update(pTaskEntityUpdate);
- if (pProcessEntity != null)
- {
- db.Update(pProcessEntity);
- }
-
- foreach (var task in pTaskList)
- {
- task.F_ModifyDate = DateTime.Now;
- db.Insert(task);
- int num = 1;
- if (task.nWFUserInfoList != null)
- {
- foreach (var taskUser in task.nWFUserInfoList)
- {
- NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
- nWFTaskRelationEntity.Create();
- nWFTaskRelationEntity.F_TaskId = task.F_Id;
- nWFTaskRelationEntity.F_UserId = taskUser.Id;
- nWFTaskRelationEntity.F_Mark = taskUser.Mark;
- nWFTaskRelationEntity.F_Result = 0;
- nWFTaskRelationEntity.F_Sort = num;
- db.Insert(nWFTaskRelationEntity);
- num++;
- }
- }
- }
- foreach (var taskMsg in pTaskMsgList)
- {
- db.Insert(taskMsg);
- }
-
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
- /// <summary>
- /// (流程撤销)
- /// </summary>
- /// <param name="processId">流程进程实例</param>
- /// <param name="taskList">流程任务列表</param>
- /// <param name="EnabledMark">2草稿3作废</param>
- public void Save(string processId, IEnumerable<NWFTaskEntity> taskList, int EnabledMark, NWFTaskLogEntity nWFTaskLogEntity = null)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
- nWFProcessEntity.F_Id = processId;
- nWFProcessEntity.F_EnabledMark = EnabledMark;
- db.Update(nWFProcessEntity);
- if (EnabledMark == 2)
- {
- db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
- }
- foreach (var task in taskList)
- {
- db.Delete(task);
- string taskId = task.F_Id;
- db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
- db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
- }
- if (nWFTaskLogEntity != null)
- {
- db.Insert(nWFTaskLogEntity);
- }
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 删除流程进程实体
- /// </summary>
- /// <param name="processId">流程进程主键</param>
- public void DeleteEntity(string processId)
- {
- try
- {
- this.BaseRepository().Delete<NWFProcessEntity>(t => t.F_Id == processId);
- }
- catch (Exception ex)
- {
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 删除流程进程所有信息(流程撤销)
- /// </summary>
- /// <param name="processId">流程进程实例</param>
- /// <param name="taskList">流程任务列表</param>
- public void Delete(string processId, IEnumerable<NWFTaskEntity> taskList)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- db.Delete<NWFProcessEntity>(t => t.F_Id == processId);
- db.Delete<NWFTaskLogEntity>(t => t.F_ProcessId == processId);
- foreach (var task in taskList)
- {
- db.Delete(task);
- string taskId = task.F_Id;
- db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
- db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
- }
-
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
-
- /// <summary>
- /// 撤销审核
- /// </summary>
- /// <param name="taskList">需要撤回的任务节点</param>
- /// <param name="taskUser">当前处理人</param>
- /// <param name="taskEntity">当前任务</param>
- /// <param name="taskLogEntity">日志信息</param>
- /// <param name="taskUserNew">当前任务节点的处理人(串行多人审核)</param>
- public void RevokeAudit(List<string> taskList, NWFTaskRelationEntity taskUser, NWFTaskEntity taskEntity, NWFTaskLogEntity taskLogEntity, NWFTaskRelationEntity taskUserNew = null)
- {
- var db = this.BaseRepository().BeginTrans();
- try
- {
- if (taskList != null)
- {
- foreach (var taskId in taskList)
- {
- db.Delete<NWFTaskEntity>(t => t.F_Id == taskId);
- db.Delete<NWFTaskRelationEntity>(t => t.F_TaskId == taskId);
- db.Delete<NWFTaskMsgEntity>(t => t.F_TaskId == taskId);
- }
- }
-
- if (taskEntity != null)
- {
- db.Update(taskEntity);
- }
-
- taskUser.F_Mark = 0;
- taskUser.F_Result = 0;
- db.Update(taskUser);
-
- db.Insert(taskLogEntity);
-
- if (taskUserNew != null)
- {
- taskUserNew.F_Mark = 1;
- taskUserNew.F_Result = 0;
- db.Update(taskUserNew);
- }
-
-
- // 更新下流程实例(处理重新发起状态)
- NWFProcessEntity nWFProcessEntity = new NWFProcessEntity();
- nWFProcessEntity.F_Id = taskLogEntity.F_ProcessId;
- nWFProcessEntity.F_IsAgain = 0;
- db.Update(nWFProcessEntity);
-
- db.Commit();
- }
- catch (Exception ex)
- {
- db.Rollback();
- if (ex is ExceptionEx)
- {
- throw;
- }
- else
- {
- throw ExceptionEx.ThrowServiceException(ex);
- }
- }
- }
-
- /// <summary>
- /// 保存任务
- /// </summary>
- /// <param name="taskList">任务列表</param>
- public void SaveTask(List<NWFTaskEntity> taskList)
- {
- var db = this.BaseRepository().BeginTrans();
-
- try
- {
- foreach (var task in taskList)
- {
- task.F_ModifyDate = DateTime.Now;
- db.Insert(task);
- int num = 1;
- if (task.nWFUserInfoList != null)
- {
- foreach (var taskUser in task.nWFUserInfoList)
- {
- NWFTaskRelationEntity nWFTaskRelationEntity = new NWFTaskRelationEntity();
- nWFTaskRelationEntity.Create();
- nWFTaskRelationEntity.F_TaskId = task.F_Id;
- nWFTaskRelationEntity.F_UserId = taskUser.Id;
- nWFTaskRelationEntity.F_Mark = taskUser.Mark;
- nWFTaskRelationEntity.F_Result = 0;
- nWFTaskRelationEntity.F_Sort = num;
- db.Insert(nWFTaskRelationEntity);
- num++;
- }
- }
- }
-
- db.Commit();
- }
- catch (Exception)
- {
- db.Rollback();
- throw;
- }
-
-
- }
- #endregion
- }
- }
|