You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

413 lines
20 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Data.Common;
  8. using System.Text;
  9. namespace Learun.Application.OA.File.FileInfo
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  13. /// Copyright (c) 2013-2017
  14. /// 创建人:陈彬彬
  15. /// 日 期:2018.06.20
  16. /// 描 述:文件管理
  17. /// </summary>
  18. public class FileInfoService : RepositoryFactory
  19. {
  20. #region 获取数据
  21. public IEnumerable<FileInfoEntity> GetList(string userId)
  22. {
  23. string sql = "select * from LR_OA_FileInfo where F_CreateUserId = @userId and F_DeleteMark = 0";
  24. return this.BaseRepository().FindList<FileInfoEntity>(sql, new { userId = userId });
  25. }
  26. public IEnumerable<FileInfoEntity> GetList()
  27. {
  28. string sql = "select * from LR_OA_FileInfo where F_DeleteMark = 0";
  29. return this.BaseRepository().FindList<FileInfoEntity>(sql);
  30. }
  31. public IEnumerable<FileInfoEntity> GetListByJson(string queryJson)
  32. {
  33. var dp = new object();
  34. var queryParam = queryJson.ToJObject();
  35. var strSql = new StringBuilder();
  36. strSql.Append("select * from LR_OA_FileInfo where F_DeleteMark = 0 ");
  37. if (!queryParam["year"].IsEmpty())
  38. {
  39. dp = new { year = queryParam["year"].ToInt() };
  40. strSql.Append(" and DATEPART(yyyy,F_CreateDate) = @year ");
  41. }
  42. else
  43. {
  44. dp = new { year = DateTime.Now.Year };
  45. strSql.Append(" and DATEPART(yyyy,F_CreateDate) = @year ");
  46. }
  47. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), dp);
  48. }
  49. /// <summary>
  50. /// 所有文件(夹)列表
  51. /// </summary>
  52. /// <param name="folderId">文件夹Id</param>
  53. /// <param name="userId">用户Id</param>
  54. /// <returns></returns>
  55. public IEnumerable<FileInfoEntity> GetList(string folderId, string userId, string keyword, string share)
  56. {
  57. var strSql = new StringBuilder();
  58. string folderCondition = "";
  59. string fileCondition = "";
  60. if (!string.IsNullOrEmpty(folderId)&&folderId!="null")
  61. {
  62. folderCondition = " AND F_ParentId = @folderId";
  63. fileCondition = " AND F_FolderId = @folderId";
  64. }
  65. else
  66. {
  67. folderCondition = " and F_ParentId is null ";
  68. fileCondition = " AND F_FolderId = '0'";
  69. }
  70. strSql.Append(@"SELECT *
  71. FROM ( SELECT a.F_FolderId AS F_FileId ,
  72. F_ParentId AS F_FolderId ,
  73. F_FolderName AS F_FileName ,
  74. b.filesize AS F_FileSize ,
  75. 'folder' AS F_FileType ,
  76. a.F_CreateUserId,
  77. F_ModifyDate,
  78. F_IsShare
  79. FROM LR_OA_FileFolder a ");
  80. strSql.Append(" left join (select a.f_createuserid,a.f_folderid,sum(convert(float, f_filesize)) as filesize from adms7ultimate2_黑龙江艺术.dbo.LR_OA_FileInfo a group by a.f_createuserid,a.f_folderid having a.f_createuserid='System') b on b.f_folderid=a.f_folderid ");
  81. strSql.Append(" where F_DeleteMark = 0 ");
  82. strSql.Append(folderCondition);
  83. strSql.Append(" UNION ");
  84. strSql.Append(@"SELECT F_FileId ,
  85. F_FolderId ,
  86. F_FileName ,
  87. F_FileSize ,
  88. F_FileType ,
  89. F_CreateUserId,
  90. F_ModifyDate,
  91. F_IsShare
  92. FROM LR_OA_FileInfo where F_DeleteMark = 0 ");
  93. strSql.Append(fileCondition);
  94. if(share=="1")
  95. {
  96. strSql.Append(") t WHERE F_CreateUserId != @userId");
  97. }
  98. else
  99. {
  100. strSql.Append(") t WHERE F_CreateUserId = @userId");
  101. }
  102. strSql.Append(" ORDER BY CASE WHEN F_FileType = 'folder' THEN 1 ELSE 2 END, F_ModifyDate ASC");
  103. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId, folderId = folderId });
  104. }
  105. /// <summary>
  106. /// 所有文件(夹)列表
  107. /// </summary>
  108. /// <param name="folderId">文件夹Id</param>
  109. /// <param name="userId">用户Id</param>
  110. /// <returns></returns>
  111. public IEnumerable<FileInfoEntity> GetList(string folderId, string userId, string queryJson)
  112. {
  113. var strSql = new StringBuilder();
  114. string folderCondition = "";
  115. string fileCondition = "";
  116. if (!string.IsNullOrEmpty(folderId))
  117. {
  118. folderCondition = " AND F_ParentId = @folderId";
  119. fileCondition = " AND F_FolderId = @folderId";
  120. }
  121. else
  122. {
  123. folderCondition = " and F_ParentId is null ";
  124. fileCondition = " AND F_FolderId = '0'";
  125. }
  126. strSql.Append(@"SELECT *
  127. FROM ( SELECT F_FolderId AS F_FileId ,
  128. F_ParentId AS F_FolderId ,
  129. F_FolderName AS F_FileName ,
  130. '' AS F_FileSize ,
  131. 'folder' AS F_FileType ,
  132. F_CreateUserId,
  133. F_ModifyDate,
  134. F_IsShare
  135. FROM LR_OA_FileFolder where F_DeleteMark = 0");
  136. strSql.Append(folderCondition);
  137. strSql.Append(" UNION ");
  138. strSql.Append(@"SELECT F_FileId ,
  139. F_FolderId ,
  140. F_FileName ,
  141. F_FileSize ,
  142. F_FileType ,
  143. F_CreateUserId,
  144. F_ModifyDate,
  145. F_IsShare
  146. FROM LR_OA_FileInfo where F_DeleteMark = 0 ");
  147. strSql.Append(fileCondition);
  148. strSql.Append(") t WHERE F_CreateUserId = @userId");
  149. var queryParam = queryJson.ToJObject();
  150. // 虚拟参数
  151. var dp = new DynamicParameters(new { });
  152. if (!queryParam["keyword"].IsEmpty())
  153. {
  154. string keyword = "%" + queryParam["keyword"].ToString() + "%";
  155. strSql.Append(" AND F_FileName like '" + keyword + "' ");
  156. }
  157. strSql.Append(" ORDER BY CASE WHEN F_FileType = 'folder' THEN 1 ELSE 2 END, F_ModifyDate ASC");
  158. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId, folderId = folderId });
  159. }
  160. /// <summary>
  161. /// 文档列表
  162. /// </summary>
  163. /// <param name="userId">用户Id</param>
  164. /// <returns></returns>
  165. public IEnumerable<FileInfoEntity> GetDocumentList(string userId,string queryJson)
  166. {
  167. var strSql = new StringBuilder();
  168. strSql.Append(@"SELECT F_FileId ,
  169. F_FolderId ,
  170. F_FileName ,
  171. F_FileSize ,
  172. F_FileType ,
  173. F_CreateUserId ,
  174. F_ModifyDate,
  175. F_IsShare
  176. FROM LR_OA_FileInfo
  177. WHERE F_DeleteMark = 0
  178. AND F_FileType IN ( 'log', 'txt', 'pdf', 'doc', 'docx', 'ppt', 'pptx',
  179. 'xls', 'xlsx' )
  180. AND F_CreateUserId = @userId");
  181. var queryParam = queryJson.ToJObject();
  182. // 虚拟参数
  183. var dp = new DynamicParameters(new { });
  184. if (!queryParam["keyword"].IsEmpty())
  185. {
  186. string keyword = "%" + queryParam["keyword"].ToString() + "%";
  187. strSql.Append(" AND F_FileName like '" + keyword + "' ");
  188. }
  189. strSql.Append(" ORDER BY F_ModifyDate ASC");
  190. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  191. }
  192. /// <summary>
  193. /// 图片列表
  194. /// </summary>
  195. /// <param name="userId">用户Id</param>
  196. /// <returns></returns>
  197. public IEnumerable<FileInfoEntity> GetImageList(string userId,string queryJson)
  198. {
  199. var strSql = new StringBuilder();
  200. strSql.Append(@"SELECT F_FileId ,
  201. F_FolderId ,
  202. F_FileName ,
  203. F_FileSize ,
  204. F_FileType ,
  205. F_CreateUserId ,
  206. F_ModifyDate,
  207. F_IsShare
  208. FROM LR_OA_FileInfo
  209. WHERE F_DeleteMark = 0
  210. AND F_FileType IN ( 'ico', 'gif', 'jpeg', 'jpg', 'png', 'psd' )
  211. AND F_CreateUserId = @userId");
  212. var queryParam = queryJson.ToJObject();
  213. // 虚拟参数
  214. var dp = new DynamicParameters(new { });
  215. if (!queryParam["keyword"].IsEmpty())
  216. {
  217. string keyword = "%" + queryParam["keyword"].ToString() + "%";
  218. strSql.Append(" AND F_FileName like '" + keyword + "' ");
  219. }
  220. strSql.Append(" ORDER BY F_ModifyDate ASC");
  221. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  222. }
  223. /// <summary>
  224. /// 回收站文件(夹)列表
  225. /// </summary>
  226. /// <param name="userId">用户Id</param>
  227. /// <returns></returns>
  228. public IEnumerable<FileInfoEntity> GetRecycledList(string userId)
  229. {
  230. var strSql = new StringBuilder();
  231. strSql.Append(@"SELECT *
  232. FROM ( SELECT F_FolderId AS F_FileId ,
  233. F_ParentId AS F_FolderId ,
  234. F_FolderName AS F_FileName ,
  235. '' AS F_FileSize ,
  236. 'folder' AS F_FileType ,
  237. F_CreateUserId,
  238. F_ModifyDate
  239. FROM LR_OA_FileFolder where F_DeleteMark = 1 and F_ParentId is null
  240. UNION
  241. SELECT F_FileId ,
  242. F_FolderId ,
  243. F_FileName ,
  244. F_FileSize ,
  245. F_FileType ,
  246. F_CreateUserId,
  247. F_ModifyDate
  248. FROM LR_OA_FileInfo where F_DeleteMark = 1 and F_FolderId = '0'
  249. ) t WHERE F_CreateUserId = @userId");
  250. strSql.Append(" ORDER BY F_ModifyDate DESC");
  251. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  252. }
  253. /// <summary>
  254. /// 我的文件(夹)共享列表
  255. /// </summary>
  256. /// <param name="userId">用户Id</param>
  257. /// <returns></returns>
  258. public IEnumerable<FileInfoEntity> GetMyShareList(string userId,string queryJson)
  259. {
  260. var strSql = new StringBuilder();
  261. strSql.Append(@"SELECT *
  262. FROM ( SELECT F_FolderId AS F_FileId ,
  263. F_ParentId AS F_FolderId ,
  264. F_FolderName AS F_FileName ,
  265. '' AS F_FileSize ,
  266. 'folder' AS F_FileType ,
  267. F_CreateUserId,
  268. F_ModifyDate
  269. FROM LR_OA_FileFolder WHERE F_DeleteMark = 0 AND F_IsShare = 1 AND F_ParentId is null
  270. UNION
  271. SELECT F_FileId ,
  272. F_FolderId ,
  273. F_FileName ,
  274. F_FileSize ,
  275. F_FileType ,
  276. F_CreateUserId,
  277. F_ModifyDate
  278. FROM LR_OA_FileInfo WHERE F_DeleteMark = 0 AND F_IsShare = 1 AND F_FolderId = '0'
  279. ) t where F_CreateUserId = @userId ");
  280. var queryParam = queryJson.ToJObject();
  281. // 虚拟参数
  282. var dp = new DynamicParameters(new { });
  283. if (!queryParam["keyword"].IsEmpty())
  284. {
  285. string keyword = "%" + queryParam["keyword"].ToString() + "%";
  286. strSql.Append(" AND F_FileName like '" + keyword + "' ");
  287. }
  288. strSql.Append(" ORDER BY F_ModifyDate DESC");
  289. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  290. }
  291. /// <summary>
  292. /// 他人文件(夹)共享列表
  293. /// </summary>
  294. /// <param name="userId">用户Id</param>
  295. /// <returns></returns>
  296. public IEnumerable<FileInfoEntity> GetOthersShareList(string userId,string queryJson)
  297. {
  298. var strSql = new StringBuilder();
  299. strSql.Append(@"SELECT *
  300. FROM ( SELECT F_FolderId AS F_FileId ,
  301. F_ParentId AS F_FolderId ,
  302. F_FolderName AS F_FileName ,
  303. '' AS F_FileSize ,
  304. 'folder' AS F_FileType ,
  305. F_CreateUserId,
  306. F_CreateUserName,
  307. F_ShareTime AS F_ModifyDate
  308. FROM LR_OA_FileFolder WHERE F_DeleteMark = 0 AND F_IsShare = 1 AND F_ParentId is null
  309. UNION
  310. SELECT F_FileId ,
  311. F_FolderId ,
  312. F_FileName ,
  313. F_FileSize ,
  314. F_FileType ,
  315. F_CreateUserId,
  316. F_CreateUserName,
  317. F_ShareTime AS F_ModifyDate
  318. FROM LR_OA_FileInfo WHERE F_DeleteMark = 0 AND F_IsShare = 1 AND F_FolderId = '0'
  319. ) t where F_CreateUserId != @userId ");
  320. var queryParam = queryJson.ToJObject();
  321. // 虚拟参数
  322. var dp = new DynamicParameters(new { });
  323. if (!queryParam["keyword"].IsEmpty())
  324. {
  325. string keyword = "%" + queryParam["keyword"].ToString() + "%";
  326. strSql.Append(" AND F_FileName like '" + keyword + "' ");
  327. }
  328. strSql.Append(" ORDER BY F_ModifyDate DESC");
  329. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  330. }
  331. /// <summary>
  332. /// 文件实体
  333. /// </summary>
  334. /// <param name="keyValue">主键值</param>
  335. /// <returns></returns>
  336. public FileInfoEntity GetEntity(string keyValue)
  337. {
  338. return this.BaseRepository().FindEntity<FileInfoEntity>(keyValue);
  339. }
  340. #endregion
  341. #region 提交数据
  342. /// <summary>
  343. /// 还原文件
  344. /// </summary>
  345. /// <param name="keyValue">主键</param>
  346. public void RestoreFile(string keyValue)
  347. {
  348. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  349. fileInfoEntity.Modify(keyValue);
  350. fileInfoEntity.F_DeleteMark = 0;
  351. this.BaseRepository().Update(fileInfoEntity);
  352. }
  353. /// <summary>
  354. /// 删除文件
  355. /// </summary>
  356. /// <param name="keyValue">主键</param>
  357. public void RemoveForm(string keyValue)
  358. {
  359. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  360. fileInfoEntity.Modify(keyValue);
  361. fileInfoEntity.F_DeleteMark = 1;
  362. this.BaseRepository().Update(fileInfoEntity);
  363. }
  364. /// <summary>
  365. /// 彻底删除文件
  366. /// </summary>
  367. /// <param name="keyValue">主键</param>
  368. public void ThoroughRemoveForm(string keyValue)
  369. {
  370. this.BaseRepository().Delete<FileInfoEntity>(t => t.F_FileId == keyValue);
  371. }
  372. /// <summary>
  373. /// 保存文件表单(新增、修改)
  374. /// </summary>
  375. /// <param name="keyValue">主键值</param>
  376. /// <param name="fileInfoEntity">文件信息实体</param>
  377. /// <returns></returns>
  378. public void SaveForm(string keyValue, FileInfoEntity fileInfoEntity)
  379. {
  380. if (!string.IsNullOrEmpty(keyValue))
  381. {
  382. fileInfoEntity.Modify(keyValue);
  383. this.BaseRepository().Update(fileInfoEntity);
  384. }
  385. else
  386. {
  387. fileInfoEntity.Create();
  388. this.BaseRepository().Insert(fileInfoEntity);
  389. }
  390. }
  391. /// <summary>
  392. /// 共享文件
  393. /// </summary>
  394. /// <param name="keyValue">主键</param>
  395. /// <param name="IsShare">是否共享:1-共享 0取消共享</param>
  396. public void ShareFile(string keyValue, int IsShare)
  397. {
  398. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  399. fileInfoEntity.F_FileId = keyValue;
  400. fileInfoEntity.F_IsShare = IsShare;
  401. fileInfoEntity.F_ShareTime = DateTime.Now;
  402. this.BaseRepository().Update(fileInfoEntity);
  403. }
  404. #endregion
  405. }
  406. }