FlowVo.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using System.Collections;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using Business.FileFlow.Entity;
  5. using Common;
  6. namespace Business.FileFlow.Vo
  7. {
  8. public class FlowVo
  9. {
  10. /// <summary>
  11. /// 参数赋值
  12. /// </summary>
  13. /// <param name="flow">实体类FlowEty</param>
  14. /// <returns>参数数组</returns>
  15. private SqlParameter[] SetPara(FlowEty flow)
  16. {
  17. return new[]
  18. {
  19. new SqlParameter("@id", flow.Id),
  20. new SqlParameter("@name", flow.Name),
  21. new SqlParameter("@actionIDs", flow.ActionIDs),
  22. new SqlParameter("@remark", flow.Remark),
  23. new SqlParameter("@delflag", flow.DelFlag),
  24. new SqlParameter("@addUserID", flow.AddUserId),
  25. new SqlParameter("@addtime", flow.AddTime),
  26. new SqlParameter("@updateUserID", flow.UpdateUserId),
  27. new SqlParameter("@lastTime", flow.LastTime)
  28. };
  29. }
  30. /// <summary>
  31. /// 新增flow记录
  32. /// </summary>
  33. /// <param name="flow">实体类FlowEty</param>
  34. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  35. public string InsertFlow(FlowEty flow)
  36. {
  37. var sql =
  38. "insert into flow(id,name,actionIDs,remark,delflag,addUserID,addtime,updateUserID,lastTime) values(@id,@name,@actionIDs,@remark,@delflag,@addUserID,@addtime,@updateUserID,@lastTime)";
  39. return SqlHelper.ExecSql(sql, SetPara(flow));
  40. }
  41. /// <summary>
  42. /// 获取全部流程信息
  43. /// </summary>
  44. /// <param name="searchText">查询字段</param>
  45. /// <returns>数据表</returns>
  46. public DataTable AllFlow(string searchText)
  47. {
  48. var sql =
  49. "select p.id,p.name,p.actionIDs,p.remark,p.lastTime,s.username as addusername ,ss.username as updateusername from flow p left join SysUser s on s.userid=p.addUserID left join SysUser ss on ss.userid=p.updateUserID where p.delflag ='false' ";
  50. if (!string.IsNullOrEmpty(searchText))
  51. {
  52. //根据查询字段 进行查询
  53. sql +=
  54. string.Format(
  55. "and( p.name like '%{0}%' or p.remark like '%{0}%' or s.username like '%{0}%' or ss.username like '%{0}%')",
  56. searchText);
  57. }
  58. sql += " order by p.lastTime DESC";
  59. return SqlHelper.ExecSqlDateTable(sql);
  60. }
  61. /// <summary>
  62. /// 更新流程信息
  63. /// </summary>
  64. /// <param name="flow">实体类FlowEty</param>
  65. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  66. public string UpdateFlow(FlowEty flow)
  67. {
  68. var sq1 =
  69. "update flow set name=@name,actionIDs=@actionIDs,remark=@remark,lastTime=@lastTime,updateUserID=@updateUserID where id=@id";
  70. return SqlHelper.ExecSql(sq1, SetPara(flow));
  71. }
  72. /// <summary>
  73. /// 根据id删除流程信息
  74. /// </summary>
  75. /// <param name="id">流程id</param>
  76. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  77. public string DelFlow(string id)
  78. {
  79. var sql = "update flow set delflag='true' where id in (" + id + ")";
  80. return SqlHelper.ExecSql(sql);
  81. }
  82. /// <summary>
  83. /// 根据流程id 获取某一步的操作ID
  84. /// </summary>
  85. /// <param name="flowid">流程id</param>
  86. /// <param name="num">第几步</param>
  87. /// <returns>操作id</returns>
  88. public string GetAction(string flowid)
  89. {
  90. string sql = "select actionIDs from flow where id=@id";
  91. return SqlHelper.ExecSqlSc(sql, new SqlParameter("@id", flowid));
  92. }
  93. /// <summary>
  94. /// 根据流程ID获取流程名字
  95. /// </summary>
  96. /// <param name="flowid"></param>
  97. /// <returns></returns>
  98. public string GetFlowNameById(string flowid)
  99. {
  100. string sql = "select name from flow where id=@id";
  101. return SqlHelper.ExecSqlSc(sql, new SqlParameter("@id", flowid));
  102. }
  103. /// <summary>
  104. /// 根据id返回FlowEty实体类
  105. /// </summary>
  106. /// <param name="id">flowid</param>
  107. public FlowEty GetFlowById(string id)
  108. {
  109. var con = new SqlConnection(SqlHelper.ConStr);
  110. var cmd = new SqlCommand { Connection = con, CommandType = CommandType.Text, CommandText = "select * from flow where id=@id and delflag='false'" };
  111. cmd.Parameters.AddWithValue("@id", id);
  112. var flow = new FlowEty();
  113. try
  114. {
  115. con.Open();
  116. }
  117. catch
  118. {
  119. return flow;
  120. }
  121. using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
  122. {
  123. if (!reader.HasRows)
  124. return flow;
  125. while (reader.Read())
  126. {
  127. flow.Id = SqlHelper.ReaderString("id", reader);
  128. flow.Num = SqlHelper.ReaderInt("num", reader);
  129. flow.Name = SqlHelper.ReaderString("name", reader);
  130. flow.Remark = SqlHelper.ReaderString("remark", reader);
  131. flow.DelFlag = SqlHelper.ReaderBool("delflag", reader);
  132. flow.AddUserId = SqlHelper.ReaderString("addUserID", reader);
  133. flow.AddTime = SqlHelper.ReaderDateTime("addtime", reader);
  134. flow.UpdateUserId = SqlHelper.ReaderString("updateUserID", reader);
  135. flow.LastTime = SqlHelper.ReaderDateTime("lastTime", reader);
  136. flow.ActionIDs = SqlHelper.ReaderString("actionIDs", reader);
  137. }
  138. }
  139. return flow;
  140. }
  141. /// <summary>
  142. /// 根据actionID获取操作顺序名字
  143. /// </summary>
  144. /// <param name="actionIDs">流程的actionIDs</param>
  145. /// <param name="actionTable">所有流程操作数据表</param>
  146. /// <returns>流程操作顺序名字</returns>
  147. public string ActionNString(string actionIDs ,DataTable actionTable)
  148. {
  149. Hashtable temphash = FlowAction(actionIDs); //保存流程操作的顺序号及名字
  150. string actionName = string.Empty;
  151. for (int i = 0; i < temphash.Count; i++) //根据顺序号,组织流程操作名字
  152. {
  153. DataRow[] temprow = actionTable.Select("id='" + temphash[i.ToString()] + "'");
  154. actionName += temprow[0]["name"] + "-->";
  155. }
  156. return actionName.Substring(0, actionName.Length - 3);
  157. }
  158. /// <summary>
  159. /// 根据actionID获取操作顺序名字
  160. /// </summary>
  161. /// <param name="actionIDs">流程的actionIDs</param>
  162. /// <param name="actionTable">所有流程操作数据表</param>
  163. /// <param name="now">当前执行步骤id</param>
  164. /// <returns>流程操作顺序名字</returns>
  165. public string ActionNString(string actionIDs, DataTable actionTable,int now)
  166. {
  167. string actionName = string.Empty;
  168. Hashtable temphash = FlowAction(actionIDs);
  169. for (int i = 0; i < temphash.Count; i++) //根据顺序号,组织流程操作名字
  170. {
  171. DataRow[] temprow = actionTable.Select("id='" + temphash[i.ToString()] + "'");
  172. if (now == i)
  173. {
  174. actionName += "<font color=\"red\">" + temprow[0]["name"] + "</font>-->";
  175. }
  176. else
  177. {
  178. actionName += temprow[0]["name"] + "-->";
  179. }
  180. }
  181. return actionName.Substring(0, actionName.Length - 3);
  182. }
  183. /// <summary>
  184. /// 根据actionIDs分离对应的序号和操作id
  185. /// </summary>
  186. /// <param name="actionIDs">actionIDs</param>
  187. /// <returns>Hashtable</returns>
  188. public Hashtable FlowAction(string actionIDs)
  189. {
  190. string[] temp = actionIDs.Split(',');
  191. var temphash = new Hashtable(); //保存流程操作的顺序号及名字
  192. foreach (string s in temp)
  193. {
  194. string[] action = s.Split(':');
  195. temphash[action[0]] = action[1];
  196. }
  197. return temphash;
  198. }
  199. /// <summary>
  200. /// 根据操作步骤获取操作ID和名字
  201. /// </summary>
  202. /// <param name="actionIDs">流程操作ids</param>
  203. /// <param name="actionTable">所有流程操作数据表</param>
  204. /// <param name="now">步骤</param>
  205. /// <returns>ActionEty实体类</returns>
  206. public ActionEty NowActionId(string actionIDs, DataTable actionTable, string now)
  207. {
  208. string[] temp = actionIDs.Split(',');
  209. var actionEty = new ActionEty(); //保存流程操作的顺序号及名字
  210. foreach (string s in temp)
  211. {
  212. string[] action = s.Split(':');
  213. if (action[0]==now)
  214. {
  215. DataRow[] temprow = actionTable.Select("id='" + action[1] + "'");
  216. actionEty.Id = action[1]; //操作id
  217. actionEty.Name = temprow[0]["name"].ToString(); //操作名字
  218. return actionEty;
  219. }
  220. }
  221. return actionEty;
  222. }
  223. }
  224. }