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.

884 lines
43 KiB

  1. using System;
  2. using System.Data;
  3. using System.Text;
  4. using System.Data.SqlClient;
  5. using DBUtility;//Please add references
  6. namespace OT.DAL
  7. {
  8. /// <summary>
  9. /// 資料訪問類:OTB_SYS_Document
  10. /// </summary>
  11. public partial class OTB_SYS_Document
  12. {
  13. public OTB_SYS_Document()
  14. { }
  15. #region Method
  16. /// <summary>
  17. /// 新增
  18. /// </summary>
  19. public bool Add(OT.Model.OTB_SYS_Document model)
  20. {
  21. StringBuilder strSql = new StringBuilder();
  22. strSql.Append(" declare @parentID char(36) ");
  23. strSql.Append(" select @parentID = [GUID] from OTB_SYS_Document ");
  24. strSql.Append(" where [FilePath] = @FileRoot and [filetype] = 'Directory' ");
  25. strSql.Append(" insert into OTB_SYS_Document([GUID],[PUID],[FileName], SubFileName, FilePath, FileSize, PixelW, PixelH, FileContent, IsProtected, IsPublic, Memo, FileCreateDate, FileType, CreateUser, CreateDate, ModifyUser, ModifyDate, [status], FileRoot,SourceRelationID) ");
  26. strSql.Append(" values(@GUID,@parentID,@FileName,@SubFileName,@FilePath,@FileSize,@PixelW,@PixelH,@FileContent,@IsProtected,@IsPublic,@Memo,@FileCreateDate,'File',@CreateUser,GETDATE(),@ModifyUser,GETDATE(),3,@FileRoot,@SourceRelationID) ");
  27. strSql.Append(" insert into OTB_SYS_DocumentRule(OrganizationID,RUID,FUID,[User],[Group],FileType,[Rule],CreateUser,CreateDate) ");
  28. strSql.Append(" values( @Organization,NEWID(),@GUID,@CreateUser,'admin','File','-v-w-x-d-a',@CreateUser,GETDATE() ) ");
  29. SqlParameter[] parameters = {
  30. new SqlParameter("@GUID", SqlDbType.Char,36),
  31. new SqlParameter("@PUID", SqlDbType.Char,36),
  32. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  33. new SqlParameter("@SubFileName", SqlDbType.VarChar,10),
  34. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  35. new SqlParameter("@FileSize", SqlDbType.Int),
  36. new SqlParameter("@PixelW", SqlDbType.NVarChar,20),
  37. new SqlParameter("@PixelH", SqlDbType.NVarChar,20),
  38. new SqlParameter("@FileContent", SqlDbType.VarChar,-1),
  39. new SqlParameter("@IsProtected", SqlDbType.NVarChar,1),
  40. new SqlParameter("@IsPublic", SqlDbType.NVarChar,1),
  41. new SqlParameter("@Memo", SqlDbType.NVarChar,-1),
  42. new SqlParameter("@FileCreateDate", SqlDbType.DateTime),
  43. new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
  44. new SqlParameter("@ModifyUser", SqlDbType.VarChar,50),
  45. new SqlParameter("@FileRoot", SqlDbType.NVarChar,200),
  46. new SqlParameter("@Organization", SqlDbType.VarChar,50),
  47. new SqlParameter("@SourceRelationID", SqlDbType.Char,36)
  48. };
  49. parameters[0].Value = model.GUID;
  50. parameters[1].Value = model.PUID;
  51. parameters[2].Value = model.FileName;
  52. parameters[3].Value = model.SubFileName;
  53. parameters[4].Value = model.FilePath;
  54. parameters[5].Value = model.FileSize;
  55. parameters[6].Value = model.PixelW;
  56. parameters[7].Value = model.PixelH;
  57. parameters[8].Value = model.FileContent;
  58. parameters[9].Value = model.IsProtected;
  59. parameters[10].Value = model.IsPublic;
  60. parameters[11].Value = model.Memo;
  61. parameters[12].Value = model.FileCreateDate;
  62. parameters[13].Value = model.CreateUser;
  63. parameters[14].Value = model.ModifyUser;
  64. parameters[15].Value = model.FileRoot;
  65. parameters[16].Value = model.Organization;
  66. parameters[17].Value = model.SourceRelationID;
  67. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  68. if (rows > 0)
  69. {
  70. return true;
  71. }
  72. else
  73. {
  74. return false;
  75. }
  76. }
  77. public bool Update(OT.Model.OTB_SYS_Document model)
  78. {
  79. StringBuilder strSql = new StringBuilder();
  80. strSql.Append(" update OTB_SYS_Document set [FileName] = @FileName, SubFileName = @SubFileName, FilePath = @FilePath, FileSize = @FileSize, PixelW = @PixelW, PixelH = @PixelH, FileContent = @FileContent, IsProtected = @IsProtected, IsPublic = @IsPublic, Memo = @Memo, FileCreateDate = @FileCreateDate, ModifyUser = @ModifyUser, ModifyDate = GETDATE(), [status] = 2, FileRoot = @FileRoot ");
  81. strSql.Append(" where [GUID] = @GUID and Isnull([status],0) <> 99");
  82. SqlParameter[] parameters = {
  83. new SqlParameter("@GUID", SqlDbType.Char,36),
  84. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  85. new SqlParameter("@SubFileName", SqlDbType.VarChar,10),
  86. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  87. new SqlParameter("@FileSize", SqlDbType.Int),
  88. new SqlParameter("@PixelW", SqlDbType.NVarChar,20),
  89. new SqlParameter("@PixelH", SqlDbType.NVarChar,20),
  90. new SqlParameter("@FileContent", SqlDbType.Text),
  91. new SqlParameter("@IsProtected", SqlDbType.NVarChar,1),
  92. new SqlParameter("@IsPublic", SqlDbType.NVarChar,1),
  93. new SqlParameter("@Memo", SqlDbType.NVarChar),
  94. new SqlParameter("@FileCreateDate", SqlDbType.DateTime),
  95. new SqlParameter("@ModifyUser", SqlDbType.VarChar,50),
  96. new SqlParameter("@FileRoot", SqlDbType.NVarChar,200)};
  97. parameters[0].Value = model.GUID;
  98. parameters[1].Value = model.FileName;
  99. parameters[2].Value = model.SubFileName;
  100. parameters[3].Value = model.FilePath;
  101. parameters[4].Value = model.FileSize;
  102. parameters[5].Value = model.PixelW;
  103. parameters[6].Value = model.PixelH;
  104. parameters[7].Value = model.FileContent;
  105. parameters[8].Value = model.IsProtected;
  106. parameters[9].Value = model.IsPublic;
  107. parameters[10].Value = model.Memo;
  108. parameters[11].Value = model.FileCreateDate;
  109. parameters[12].Value = model.ModifyUser;
  110. parameters[13].Value = model.FileRoot;
  111. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  112. if (rows > 0)
  113. {
  114. return true;
  115. }
  116. else
  117. {
  118. return false;
  119. }
  120. }
  121. public bool AddDirectory(OT.Model.OTB_SYS_Document model)
  122. {
  123. StringBuilder strSql = new StringBuilder();
  124. strSql.Append(" declare @parentID char(36) ");
  125. strSql.Append(" select @parentID = [GUID] from OTB_SYS_Document ");
  126. strSql.Append(" where [FilePath] = @FileRoot and [filetype] = 'Directory' ");
  127. strSql.Append(" INSERT INTO OTB_SYS_Document([GUID],[PUID],[FileName],[FileRoot],[FilePath],[FileType],[CreateUser],[CreateDate]) ");
  128. strSql.Append(" VALUES(@GUID,@parentID,@FileName,@FileRoot,@FilePath,'Directory',@CreateUser,GETDATE()) ");
  129. strSql.Append(" insert into OTB_SYS_DocumentRule(OrganizationID,RUID,FUID,[User],[Group],FileType,[Rule],CreateUser,CreateDate) ");
  130. strSql.Append(" values( @Organization,NEWID(),@GUID,@CreateUser,'admin','Directory','-v-w-x-d-a',@CreateUser,GETDATE() ) ");
  131. SqlParameter[] parameters = {
  132. new SqlParameter("@GUID", SqlDbType.Char,36),
  133. new SqlParameter("@PUID", SqlDbType.Char,36),
  134. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  135. new SqlParameter("@FileRoot", SqlDbType.NVarChar,500),
  136. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  137. new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
  138. new SqlParameter("@Organization", SqlDbType.VarChar,50)};
  139. parameters[0].Value = model.GUID;
  140. parameters[1].Value = model.PUID;
  141. parameters[2].Value = model.FileName;
  142. parameters[3].Value = model.FileRoot;
  143. parameters[4].Value = model.FilePath;
  144. parameters[5].Value = model.CreateUser;
  145. parameters[6].Value = model.Organization;
  146. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  147. if (rows > 0)
  148. {
  149. return true;
  150. }
  151. else
  152. {
  153. return false;
  154. }
  155. }
  156. public bool UpdateDirectory(OT.Model.OTB_SYS_Document model)
  157. {
  158. StringBuilder strSql = new StringBuilder();
  159. strSql.Append(" INSERT INTO OTB_SYS_Document([GUID],[PUID],[FileName],[FileRoot],[FilePath],[FileType],[CreateUser],[CreateDate]) ");
  160. strSql.Append(" VALUES(@GUID,@PUID,@FileName,@FileRoot,@FilePath,'Directory',@CreateUser,GETDATE()) ");
  161. strSql.Append(" insert into OTB_SYS_DocumentRule(OrganizationID,RUID,FUID,[User],FileType,[Rule],CreateUser,CreateDate) ");
  162. strSql.Append(" values( @Organization,NEWID(),@GUID,@CreateUser,'File','-v-w-x-d-a',@CreateUser,GETDATE() ) ");
  163. strSql.Append(" update OTB_SYS_Document ");
  164. strSql.Append(" set [PUID] = @PUID ");
  165. strSql.Append(" ,[FileName] = @FileName ");
  166. strSql.Append(" ,ModifyUser = @ModifyUser ");
  167. strSql.Append(" ,ModifyDate = GETDATE() ");
  168. strSql.Append(" where [GUID] = @GUID and FileType = 'Directory' ");
  169. SqlParameter[] parameters = {
  170. new SqlParameter("@GUID", SqlDbType.Char,36),
  171. new SqlParameter("@PUID", SqlDbType.Char,36),
  172. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  173. new SqlParameter("@ModifyUser", SqlDbType.VarChar,50)};
  174. parameters[0].Value = model.GUID;
  175. parameters[1].Value = model.PUID;
  176. parameters[2].Value = model.FileName;
  177. parameters[3].Value = model.ModifyUser;
  178. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  179. if (rows > 0)
  180. {
  181. return true;
  182. }
  183. else
  184. {
  185. return false;
  186. }
  187. }
  188. /// <summary>
  189. /// 重設更新狀態
  190. /// </summary>
  191. public bool resetStatus(string GUID)
  192. {
  193. StringBuilder strSql = new StringBuilder();
  194. strSql.Append(" update OTB_SYS_Document set [status] = '0' where Isnull([status],0) <> 99");
  195. int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString());
  196. if (rowsAffected > 0)
  197. {
  198. return true;
  199. }
  200. else
  201. {
  202. return false;
  203. }
  204. }
  205. /// <summary>
  206. /// 刪除一條資料
  207. /// </summary>
  208. public bool Delete(string GUID)
  209. {
  210. StringBuilder strSql = new StringBuilder();
  211. strSql.Append("delete from OTB_SYS_Document ");
  212. strSql.Append(" where [Status]='0' ");
  213. int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString());
  214. if (rowsAffected > 0)
  215. {
  216. return true;
  217. }
  218. else
  219. {
  220. return false;
  221. }
  222. }
  223. /// <summary>
  224. /// 刪除一條資料
  225. /// </summary>
  226. public bool DeleteByGuid(string GUID)
  227. {
  228. StringBuilder strSql = new StringBuilder();
  229. strSql.Append("delete from OTB_SYS_Document ");
  230. strSql.Append(" where GUID='" + GUID + "' ");
  231. int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString());
  232. if (rowsAffected > 0)
  233. {
  234. return true;
  235. }
  236. else
  237. {
  238. return false;
  239. }
  240. }
  241. /// <summary>
  242. /// 更新圖庫資料
  243. /// </summary>
  244. public bool UpdateImgDB(string strPath)
  245. {
  246. StringBuilder strSql = new StringBuilder();
  247. #region Marked
  248. //strSql.Append(" declare @id char(36) ");
  249. //strSql.Append(" select top 1 @id = [GUID] from OTB_SYS_Document ");
  250. ////strSql.Append(" where [FileName] = @FileName AND SubFileName = @SubFileName AND [status] = '0' ");
  251. //strSql.Append(" where [FilePath] = @FilePath AND [status] = '0' ");
  252. //strSql.Append(" if @id <> '' ");
  253. //strSql.Append(" begin");
  254. //strSql.Append(" update OTB_SYS_Document ");
  255. //strSql.Append(" set [FileName] = @FileName, SubFileName = @SubFileName, FilePath = @FilePath, FileSize = @FileSize, PixelW = @PixelW, PixelH = @PixelH, FileContent = @FileContent, IsProtected = @IsProtected, IsPublic = @IsPublic, Memo = @Memo, ModifyDate = GETDATE(), [Status] = '1' ");
  256. //strSql.Append(" where [GUID] = @id ");
  257. //strSql.Append(" end ");
  258. //strSql.Append(" else ");
  259. //strSql.Append(" begin ");
  260. //strSql.Append(" insert into OTB_SYS_Document([GUID], [FileName], SubFileName, FilePath, FileSize, PixelW, PixelH, FileContent, IsProtected, IsPublic, Memo, CreateUser, CreateDate, ModifyUser, ModifyDate, [Status]) ");
  261. //strSql.Append(" values(@GUID,@FileName,@SubFileName,@FilePath,@FileSize,@PixelW,@PixelH,@FileContent,@IsProtected,@IsPublic,@Memo,@CreateUser,GETDATE(),@ModifyUser,GETDATE(),'1') ");
  262. //strSql.Append(" end ");
  263. ////strSql.Append(" delete from OTB_SYS_Document ");
  264. ////strSql.Append(" where [Status] = '0' ");
  265. //SqlParameter[] parameters = {
  266. // new SqlParameter("@GUID", SqlDbType.Char,36),
  267. // new SqlParameter("@FileName", SqlDbType.NVarChar,50),
  268. // new SqlParameter("@SubFileName", SqlDbType.VarChar,10),
  269. // new SqlParameter("@FilePath", SqlDbType.NVarChar,200),
  270. // new SqlParameter("@FileSize", SqlDbType.Int),
  271. // new SqlParameter("@PixelW", SqlDbType.NVarChar,20),
  272. // new SqlParameter("@PixelH", SqlDbType.NVarChar,20),
  273. // new SqlParameter("@FileContent", SqlDbType.Text),
  274. // new SqlParameter("@IsProtected", SqlDbType.NVarChar,1),
  275. // new SqlParameter("@IsPublic", SqlDbType.NVarChar,1),
  276. // new SqlParameter("@Memo", SqlDbType.Text),
  277. // new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
  278. // new SqlParameter("@ModifyUser", SqlDbType.VarChar,50)};
  279. //parameters[0].Value = model.GUID;
  280. //parameters[1].Value = model.FileName;
  281. //parameters[2].Value = model.SubFileName;
  282. //parameters[3].Value = model.FilePath;
  283. //parameters[4].Value = model.FileSize;
  284. //parameters[5].Value = model.PixelW;
  285. //parameters[6].Value = model.PixelH;
  286. //parameters[7].Value = model.FileContent;
  287. //parameters[8].Value = model.IsProtected;
  288. //parameters[9].Value = model.IsPublic;
  289. //parameters[10].Value = model.Memo;
  290. //parameters[11].Value = model.CreateUser;
  291. //parameters[12].Value = model.ModifyUser;
  292. #endregion
  293. strPath = strPath.Replace("'", "''"); //資料庫存取單引號字串時將單引號取代成雙引號
  294. strSql.Append(" update OTB_SYS_Document_Temp ");
  295. strSql.Append(" set [status] = null ");
  296. //strSql.Append(" update OTB_SYS_Document ");
  297. //strSql.Append(" set [status] = null ");
  298. strSql.Append(" update OTB_SYS_Document_Temp ");
  299. strSql.Append(" set [status] = 1 ");
  300. strSql.Append(" from OTB_SYS_Document_Temp A inner join OTB_SYS_Document B ");
  301. strSql.Append(" on A.FilePath = B.FilePath AND A.FileCreateDate = B.FileCreateDate AND A.FileRoot = B.FileRoot AND A.FileSize = B.FileSize AND A.PixelW = B.PixelW AND A.PixelH = B.PixelH ;");
  302. strSql.Append(" update OTB_SYS_Document_Temp ");
  303. strSql.Append(" set [status] = 2 ");
  304. strSql.Append(" from OTB_SYS_Document_Temp A inner join OTB_SYS_Document B ");
  305. strSql.Append(" on A.FilePath = B.FilePath AND A.[status] is null;");
  306. strSql.Append(" update OTB_SYS_Document_Temp ");
  307. strSql.Append(" set [status] = 3 ");
  308. strSql.Append(" where [status] is null; ");
  309. //判斷資料夾存在設定狀態4 modify by ted 2014/11/4
  310. strSql.Append(" update OTB_SYS_Document ");
  311. strSql.Append(" set [status] = 4 ");
  312. strSql.Append(" where FileRoot like '" + strPath + "%' ;");
  313. //檔案名稱存在就給狀態1 modify by ted 2014/11/4
  314. strSql.Append(" update OTB_SYS_Document ");
  315. strSql.Append(" set [status] = 1 ");
  316. strSql.Append(" where FilePath in (select FilePath From OTB_SYS_Document_Temp where [status] = 1 ); ");
  317. strSql.Append(" update OTB_SYS_Document ");
  318. strSql.Append(" set [FileName] = A.[FileName], SubFileName = A.SubFileName, FilePath = A.FilePath, FileSize = A.FileSize, PixelW = A.PixelW, PixelH = A.PixelH, FileContent = A.FileContent, Memo = A.Memo, FileCreateDate = A.FileCreateDate, CreateDate = GETDATE(), ModifyDate = GETDATE(), [status] = 2, FileRoot = A.FileRoot ");
  319. strSql.Append(" from OTB_SYS_Document_Temp A inner join OTB_SYS_Document B ");
  320. strSql.Append(" on A.FilePath = B.FilePath AND A.[status] = 2 ;");
  321. strSql.Append(" insert into OTB_SYS_Document([GUID], [FileName], SubFileName, FilePath, FileSize, PixelW, PixelH, FileContent, IsProtected, IsPublic, Memo, FileCreateDate, CreateUser, CreateDate, ModifyUser, ModifyDate, [status], FileRoot) ");
  322. strSql.Append(" select [GUID], [FileName], SubFileName, FilePath, FileSize, PixelW, PixelH, FileContent, IsProtected, IsPublic, Memo, FileCreateDate, CreateUser, GETDATE(), ModifyUser, GETDATE(), 3, FileRoot from OTB_SYS_Document_Temp ");
  323. strSql.Append(" where [status] = 3; ");
  324. //刪除資料表當中狀態4,狀態4為更新後不存在的檔案 modify by ted 2014/11/4
  325. strSql.Append(" delete from OTB_SYS_Document ");
  326. strSql.Append(" where [status] = 4; ");
  327. strSql.Append(" update OTB_SYS_Document ");
  328. strSql.Append(" set [status] = null ");
  329. strSql.Append(" where FileRoot like '" + strPath + "%'; ");
  330. //strSql.Append(" update OTB_SYS_Document ");
  331. //strSql.Append(" set [status] = 1 ");
  332. //strSql.Append(" where [status] is null ");
  333. int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
  334. if (rows > 0)
  335. {
  336. return true;
  337. }
  338. else
  339. {
  340. return false;
  341. }
  342. }
  343. public bool InsertImgTempDB(OT.Model.OTB_SYS_Document model)
  344. {
  345. StringBuilder strSql = new StringBuilder();
  346. strSql.Append(" insert into OTB_SYS_Document_Temp([GUID], [FileName], SubFileName, FilePath, FileSize, PixelW, PixelH, FileContent, IsProtected, IsPublic, Memo, FileCreateDate, CreateUser, CreateDate, ModifyUser, ModifyDate, [status], FileRoot) ");
  347. strSql.Append(" values(@GUID,@FileName,@SubFileName,@FilePath,@FileSize,@PixelW,@PixelH,@FileContent,@IsProtected,@IsPublic,@Memo,@FileCreateDate,@CreateUser,GETDATE(),@ModifyUser,GETDATE(),null,@FileRoot) ");
  348. SqlParameter[] parameters = {
  349. new SqlParameter("@GUID", SqlDbType.Char,36),
  350. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  351. new SqlParameter("@SubFileName", SqlDbType.VarChar,10),
  352. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  353. new SqlParameter("@FileSize", SqlDbType.Int),
  354. new SqlParameter("@PixelW", SqlDbType.NVarChar,20),
  355. new SqlParameter("@PixelH", SqlDbType.NVarChar,20),
  356. new SqlParameter("@FileContent", SqlDbType.Text),
  357. new SqlParameter("@IsProtected", SqlDbType.NVarChar,1),
  358. new SqlParameter("@IsPublic", SqlDbType.NVarChar,1),
  359. new SqlParameter("@Memo", SqlDbType.Text),
  360. new SqlParameter("@FileCreateDate", SqlDbType.DateTime),
  361. new SqlParameter("@CreateUser", SqlDbType.VarChar,50),
  362. new SqlParameter("@ModifyUser", SqlDbType.VarChar,50),
  363. new SqlParameter("@FileRoot", SqlDbType.NVarChar,200)};
  364. parameters[0].Value = model.GUID;
  365. parameters[1].Value = model.FileName;
  366. parameters[2].Value = model.SubFileName;
  367. parameters[3].Value = model.FilePath;
  368. parameters[4].Value = model.FileSize;
  369. parameters[5].Value = model.PixelW;
  370. parameters[6].Value = model.PixelH;
  371. parameters[7].Value = model.FileContent;
  372. parameters[8].Value = model.IsProtected;
  373. parameters[9].Value = model.IsPublic;
  374. parameters[10].Value = model.Memo;
  375. parameters[11].Value = model.FileCreateDate;
  376. parameters[12].Value = model.CreateUser;
  377. parameters[13].Value = model.ModifyUser;
  378. parameters[14].Value = model.FileRoot;
  379. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  380. if (rows > 0)
  381. {
  382. return true;
  383. }
  384. else
  385. {
  386. return false;
  387. }
  388. }
  389. /// <summary>
  390. /// 清空暫存資料表
  391. /// </summary>
  392. /// <returns></returns>
  393. public bool ClearTempDB()
  394. {
  395. StringBuilder strSql = new StringBuilder();
  396. strSql.Append("truncate table OTB_SYS_Document_Temp ");
  397. int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString());
  398. return true;
  399. }
  400. /// <summary>
  401. /// 根據GetImg讀取Src路徑
  402. /// </summary>
  403. /// <returns></returns>
  404. public OT.Model.OTB_SYS_Document GetImgSrc(string GUID)
  405. {
  406. StringBuilder strSql = new StringBuilder();
  407. OT.Model.OTB_SYS_Document otb_document_model = new Model.OTB_SYS_Document();
  408. strSql.Append("select FilePath,SubFileName from OTB_SYS_Document ");
  409. strSql.Append(" where GUID ='" + GUID + "' ");
  410. DataSet ds = DbHelperSQL.Query(strSql.ToString());
  411. if (ds.Tables[0].Rows.Count > 0)
  412. {
  413. otb_document_model.FilePath = ds.Tables[0].Rows[0]["FilePath"].ToString();
  414. otb_document_model.SubFileName = ds.Tables[0].Rows[0]["SubFileName"].ToString();
  415. }
  416. return otb_document_model;
  417. }
  418. /// <summary>
  419. /// 取得指定目錄下的圖片資料
  420. /// </summary>
  421. /// <returns></returns>
  422. public DataSet GetFilePath(string strOrganization, string strFileRoot, string CreateUser, string Group, string Dep, string SourceID)
  423. {
  424. StringBuilder strSql = new StringBuilder();
  425. //strSql.Append(" select [GUID],[PUID],[Filename],[FileRoot],[FilePath],D.[FileType],isnull([User],'') as [User] ,isnull([Group],'') as [Group],isnull([Department],'') as [Department],isnull([Rule],'') as [Rule],isnull([UnRule],'') as [UnRule] from OTB_SYS_Document D ");
  426. //strSql.Append(" left join (select [FUID],[User],[Group],[Department],[FileType],[Rule],[UnRule] FROM OTB_SYS_DocumentRule where [OrganizationID] = @Organization and [USER] = @CreateUser) R ");
  427. //strSql.Append(" on D.[GUID] = R.FUID ");
  428. //strSql.Append(" where D.FileType = 'Directory' AND D.FileRoot = @FileRoot");
  429. //資料夾權限
  430. strSql.Append(" SELECT * FROM ");
  431. strSql.Append(" ( ");
  432. strSql.Append(" select ROW_NUMBER() OVER(PARTITION BY [GUID] ORDER BY [USER] desc ,[Group] desc,[Department] desc) AS RowNo, [GUID],[PUID],[Filename],[FileRoot],[FilePath],D.[FileType],isnull([User],'') as [User] ,isnull([Group],'') as [Group],isnull([Department],'') as [Department],isnull([Rule],'-') as [Rule],isnull([UnRule],'-') as [UnRule] from OTB_SYS_Document D ");
  433. strSql.Append(" left join (select [FUID],[User],[Group],[Department],[FileType],[Rule],[UnRule] FROM OTB_SYS_DocumentRule ");
  434. strSql.Append(" where [OrganizationID] = @Organization ");
  435. strSql.Append(" and (([USER] = @CreateUser AND @CreateUser <> '') ");
  436. strSql.Append(" or ([Group] in (select RuleID from OTB_SYS_MembersToRule where MemberID = @CreateUser) AND @CreateUser <> '') ");
  437. strSql.Append(" or ([Department] = @Dep AND @Dep <> '') ) ");
  438. strSql.Append(" and FileType = 'Directory' ) R ");
  439. strSql.Append(" on D.[GUID] = R.FUID ");
  440. strSql.Append(" where D.FileType = 'Directory' AND D.[FileRoot] = @FileRoot AND D.[IsDelete] = 'N' ");
  441. strSql.Append(" ) AS T ");
  442. strSql.Append(" WHERE T.RowNo = 1 ");
  443. //strSql.Append(" select D.*,isnull([User],'') as [User] ,isnull([Group],'') as [Group],isnull([Department],'') as [Department],isnull(r.[Rule],'') as [Rule],isnull([UnRule],'') as [UnRule] ");
  444. //strSql.Append(" ,ISNULL((select top 1 [Rule] from OTB_SYS_DocumentRule where [OrganizationID] = @Organization and [FUID] = D.[PUID] ");
  445. //strSql.Append(" and ((ISNULL([USER],'') = @CreateUser AND @CreateUser <> '') ");
  446. //strSql.Append(" or (ISNULL([Group],'') = @Group AND @Group <> '') ");
  447. //strSql.Append(" or (ISNULL([Department],'') = @Dep AND @Dep <> ''))),'') as [dir_Rule] from OTB_SYS_Document D ");
  448. //strSql.Append(" left join (select [FUID],[User],[Group],[Department],[FileType],[Rule],[UnRule] FROM OTB_SYS_DocumentRule where [OrganizationID] = @Organization and [USER] = @CreateUser) R ");
  449. //strSql.Append(" on D.[GUID] = R.FUID ");
  450. //strSql.Append(" where D.FileType = 'File' AND D.FileRoot = @FileRoot and IsNull(D.[status],0) <> 99 ");
  451. strSql.Append(" SELECT * FROM ");
  452. strSql.Append(" ( ");
  453. strSql.Append(" select ROW_NUMBER() OVER(PARTITION BY [GUID] ORDER BY [USER] desc ,[Group] desc,[Department] desc) AS RowNo, [GUID],[PUID],[Filename],[CFName],[EFName],[SubFileName],[FileRoot],[FilePath],[FileSize],[PixelW],[PixelH],[FileContent],D.[Memo],D.[FileType],isnull([User],'') as [User] ,isnull([Group],'') as [Group],isnull([Department],'') as [Department],isnull(R.[Rule],'-') as [Rule],isnull(R.[UnRule],'-') as [UnRule],isnull(dir.[Rule],'-v') as [dir_Rule],isnull(dir.[UnRule],'-') as [dir_UnRule] from OTB_SYS_Document D ");
  454. strSql.Append(" left join (select [FUID],[User],[Group],[Department],[FileType],[Rule],[UnRule] FROM OTB_SYS_DocumentRule ");
  455. strSql.Append(" where [OrganizationID] = @Organization ");
  456. strSql.Append(" and (([USER] = @CreateUser AND @CreateUser <> '') ");
  457. strSql.Append(" or ([Group] in (select RuleID from OTB_SYS_MembersToRule where MemberID = @CreateUser) AND @Group <> '') ");
  458. strSql.Append(" or ([Department] = @Dep AND @Dep <> '') ) ");
  459. strSql.Append(" and FileType = 'File' ");
  460. strSql.Append(" ) R ");
  461. strSql.Append(" on D.[GUID] = R.FUID ");
  462. strSql.Append(" left join (select [FUID],[Rule],[UnRule] FROM OTB_SYS_DocumentRule ");
  463. strSql.Append(" where [OrganizationID] = @Organization ");
  464. strSql.Append(" and (([USER] = @CreateUser AND @CreateUser <> '') ");
  465. strSql.Append(" or ([Group] in (select RuleID from OTB_SYS_MembersToRule where MemberID = @CreateUser) AND @Group <> '') ");
  466. strSql.Append(" or ([Department] = @Group AND @Dep <> '') ) ");
  467. strSql.Append(" and FileType = 'Directory' ");
  468. strSql.Append(" ) dir ");
  469. strSql.Append(" on D.[PUID] = dir.[FUID] ");
  470. if (string.IsNullOrEmpty(SourceID))
  471. {
  472. strSql.Append(" where D.FileType = 'File' AND D.FileRoot = @FileRoot AND IsNull(D.[status],0) <> 99 AND D.[IsDelete] = 'N' ");
  473. }
  474. else
  475. {
  476. strSql.Append(" where D.FileType = 'File' AND D.FileRoot = @FileRoot AND IsNull(D.[status],0) <> 99 AND D.[IsDelete] = 'N' AND (SourceRelationID = @SourceID OR @SourceID IS NULL OR @SourceID='') ");
  477. }
  478. strSql.Append(" ) AS T ");
  479. strSql.Append(" WHERE T.RowNo = 1 ");
  480. SqlParameter[] parameters = {
  481. new SqlParameter("@Organization", SqlDbType.NVarChar,50),
  482. new SqlParameter("@FileRoot", SqlDbType.NVarChar,200),
  483. new SqlParameter("@CreateUser", SqlDbType.NVarChar,50),
  484. new SqlParameter("@Group", SqlDbType.NVarChar,50),
  485. new SqlParameter("@Dep", SqlDbType.NVarChar,50),
  486. new SqlParameter("@SourceID", SqlDbType.NVarChar,50)
  487. };
  488. parameters[0].Value = strOrganization;
  489. parameters[1].Value = strFileRoot;
  490. parameters[2].Value = CreateUser;
  491. parameters[3].Value = Group;
  492. parameters[4].Value = Dep;
  493. parameters[5].Value = SourceID;
  494. return DbHelperSQL.Query(strSql.ToString(), parameters);
  495. }
  496. /// <summary>
  497. /// 根據檔案路徑取得GUID
  498. /// </summary>
  499. /// <returns></returns>
  500. public string GetGuIdByFilePath(string strFilePath)
  501. {
  502. strFilePath = strFilePath.Replace("'", "''");
  503. OT.Model.OTB_SYS_Document otb_document_model = new Model.OTB_SYS_Document();
  504. StringBuilder strSql = new StringBuilder();
  505. strSql.Append("select top 1 [GUID] from OTB_SYS_Document ");
  506. strSql.Append(" where FilePath = N'" + strFilePath + "' and Isnull([status],0) <> 99");
  507. DataSet ds = DbHelperSQL.Query(strSql.ToString());
  508. if (ds.Tables[0].Rows.Count > 0)
  509. {
  510. return ds.Tables[0].Rows[0]["GUID"].ToString();
  511. }
  512. else
  513. {
  514. return "";
  515. }
  516. }
  517. /// <summary>
  518. /// 即時更新儲存圖檔資訊
  519. /// </summary>
  520. /// <returns></returns>
  521. public bool SaveMemo(string strFileId, string strFileName, string strCFName, string strEFName, string strNumber, string strFilePath, string strUpdateMemo, string strModifyUser)
  522. {
  523. StringBuilder strSql = new StringBuilder();
  524. strSql.Append(" update OTB_SYS_Document ");
  525. strSql.Append(" set ");
  526. if (strCFName != "" || strEFName != "")
  527. {
  528. strSql.Append(" FileName = @FileName, ");
  529. strSql.Append(" CFName = @CFName, ");
  530. strSql.Append(" EFName = @EFName, ");
  531. strSql.Append(" FileNumber = @strNumber, ");
  532. strSql.Append(" FilePath = @FilePath, ");
  533. }
  534. strSql.Append(" Memo = @Memo, ");
  535. strSql.Append(" ModifyUser = @ModifyUser, ");
  536. strSql.Append(" ModifyDate = GETDATE() ");
  537. strSql.Append(" where [GUID] = @GUID");
  538. SqlParameter[] parameters = {
  539. new SqlParameter("@GUID", SqlDbType.Char,36),
  540. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  541. new SqlParameter("@CFName", SqlDbType.NVarChar,100),
  542. new SqlParameter("@EFName", SqlDbType.NVarChar,100),
  543. new SqlParameter("@strNumber", SqlDbType.NVarChar,20),
  544. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  545. new SqlParameter("@Memo", SqlDbType.NVarChar),
  546. new SqlParameter("@ModifyUser", SqlDbType.NVarChar,50)};
  547. parameters[0].Value = strFileId;
  548. parameters[1].Value = strFileName;
  549. parameters[2].Value = strCFName;
  550. parameters[3].Value = strEFName;
  551. parameters[4].Value = strNumber;
  552. parameters[5].Value = strFilePath;
  553. parameters[6].Value = strUpdateMemo;
  554. parameters[7].Value = strModifyUser;
  555. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  556. if (rows > 0)
  557. {
  558. return true;
  559. }
  560. else
  561. {
  562. return false;
  563. }
  564. }
  565. /// <summary>
  566. /// DirMove資料夾移動
  567. /// </summary>
  568. /// <returns></returns>
  569. public bool DirMove(string strorifilename, string strnewfilename, string strnewfileroot, string strnewfilepath, string strModifyUser)
  570. {
  571. StringBuilder strSql = new StringBuilder();
  572. strSql.Append(" update OTB_SYS_Document ");
  573. strSql.Append(" set FileName = @newFileName, ");
  574. strSql.Append(" FileRoot = @newFileRoot, ");
  575. strSql.Append(" FilePath = @newFilePath, ");
  576. strSql.Append(" ModifyUser = @ModifyUser, ");
  577. strSql.Append(" ModifyDate = GETDATE() ");
  578. strSql.Append(" where [FilePath] = @oriFilePath and Isnull([status],0) <> 99");
  579. SqlParameter[] parameters = {
  580. new SqlParameter("@oriFilePath", SqlDbType.NVarChar,500),
  581. new SqlParameter("@newFileName", SqlDbType.NVarChar,200),
  582. new SqlParameter("@newFileRoot", SqlDbType.NVarChar,200),
  583. new SqlParameter("@newFilePath", SqlDbType.NVarChar,500),
  584. new SqlParameter("@ModifyUser", SqlDbType.NVarChar,50)};
  585. parameters[0].Value = strorifilename;
  586. parameters[1].Value = strnewfilename;
  587. parameters[2].Value = strnewfileroot;
  588. parameters[3].Value = strnewfilepath;
  589. parameters[4].Value = strModifyUser;
  590. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  591. if (rows > 0)
  592. {
  593. return true;
  594. }
  595. else
  596. {
  597. return false;
  598. }
  599. }
  600. /// <summary>
  601. /// DirectoryRename資料夾重新命名
  602. /// </summary>
  603. /// <returns></returns>
  604. public bool DirectoryRename(string strGUID, string strDirName, string strOldPathName, string strNewPathName, string strModifyUser)
  605. {
  606. strOldPathName.Replace("'", "''");
  607. strNewPathName.Replace("'", "''");
  608. StringBuilder strSql = new StringBuilder();
  609. strSql.Append(" update OTB_SYS_Document ");
  610. strSql.Append(" set FileRoot = Replace(FileRoot,@strOldPathName,@strNewPathName), ");
  611. strSql.Append(" FilePath = Replace(FilePath,@strOldPathName,@strNewPathName), ");
  612. strSql.Append(" ModifyUser = @ModifyUser, ");
  613. strSql.Append(" ModifyDate = GETDATE() ");
  614. strSql.Append(" where [FileRoot] LIKE @strOldPathName + '%' and Isnull([status],0) <> 99 ");
  615. //更新資料夾名稱 add by Ted 2015/03/09
  616. strSql.Append(" update OTB_SYS_Document ");
  617. strSql.Append(" set [FileName] = @DirName ");
  618. strSql.Append(" , [FilePath] = Replace(FilePath,@strOldPathName,@strNewPathName) ");
  619. strSql.Append(" , ModifyUser = @ModifyUser ");
  620. strSql.Append(" , ModifyDate = GETDATE() ");
  621. strSql.Append(" where [GUID] = @GUID ");
  622. SqlParameter[] parameters = {
  623. new SqlParameter("@strOldPathName", SqlDbType.NVarChar,500),
  624. new SqlParameter("@strNewPathName", SqlDbType.NVarChar,500),
  625. new SqlParameter("@ModifyUser", SqlDbType.NVarChar,50),
  626. new SqlParameter("@GUID", SqlDbType.Char,36),
  627. new SqlParameter("@DirName", SqlDbType.NVarChar,200)};
  628. parameters[0].Value = strOldPathName;
  629. parameters[1].Value = strNewPathName;
  630. parameters[2].Value = strModifyUser;
  631. parameters[3].Value = strGUID;
  632. parameters[4].Value = strDirName;
  633. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  634. if (rows > 0)
  635. {
  636. return true;
  637. }
  638. else
  639. {
  640. return false;
  641. }
  642. }
  643. /// <summary>
  644. /// SingleFileMove 單圖檔移動
  645. /// </summary>
  646. /// <returns></returns>
  647. public bool SingleFileMove(string guid, string filename, string fileroot, string filepath, string strModifyUser)
  648. {
  649. StringBuilder strSql = new StringBuilder();
  650. strSql.Append(" update OTB_SYS_Document ");
  651. strSql.Append(" set FileRoot = @fileroot, ");
  652. strSql.Append(" FilePath = @filepath, ");
  653. strSql.Append(" FileName = @filename, ");
  654. strSql.Append(" ModifyUser = @ModifyUser, ");
  655. strSql.Append(" ModifyDate = GETDATE() ");
  656. strSql.Append(" where [GUID] = @guid");
  657. SqlParameter[] parameters = {
  658. new SqlParameter("@guid", SqlDbType.Char,36),
  659. new SqlParameter("@filename", SqlDbType.NVarChar,200),
  660. new SqlParameter("@fileroot", SqlDbType.NVarChar,500),
  661. new SqlParameter("@filepath", SqlDbType.NVarChar,500),
  662. new SqlParameter("@ModifyUser", SqlDbType.NVarChar,50)};
  663. parameters[0].Value = guid;
  664. parameters[1].Value = filename;
  665. parameters[2].Value = fileroot;
  666. parameters[3].Value = filepath;
  667. parameters[4].Value = strModifyUser;
  668. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  669. if (rows > 0)
  670. {
  671. return true;
  672. }
  673. else
  674. {
  675. return false;
  676. }
  677. }
  678. /// <summary>
  679. /// 初始化資料夾狀態
  680. /// </summary>
  681. /// <returns></returns>
  682. public bool InitDirectory()
  683. {
  684. StringBuilder strSql = new StringBuilder();
  685. //--初始化資料夾狀態
  686. strSql.Append(" UPDATE OTB_SYS_Document SET [status] = '-1' WHERE FileType = 'Directory' ");
  687. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), "");
  688. if (rows >= 0)
  689. {
  690. return true;
  691. }
  692. else
  693. {
  694. return false;
  695. }
  696. }
  697. /// <summary>
  698. /// 更新資料夾
  699. /// </summary>
  700. /// <returns></returns>
  701. public bool UpdateDirectoryToDB(OT.Model.OTB_SYS_Document model)
  702. {
  703. StringBuilder strSql = new StringBuilder();
  704. strSql.Append(" DECLARE @COUNT INT, ");
  705. strSql.Append(" @PUID CHAR(36) ");
  706. strSql.Append(" SELECT @COUNT = COUNT(0) FROM OTB_SYS_Document ");
  707. strSql.Append(" WHERE FilePath = @FilePath AND FileType = 'Directory' ");
  708. //--判斷是否有上層
  709. strSql.Append(" SELECT @PUID = [GUID] FROM OTB_SYS_Document WHERE FilePath = @FileRoot AND FileType = 'Directory' ");
  710. strSql.Append(" IF @COUNT = 0 ");
  711. strSql.Append(" BEGIN ");
  712. //strSql.Append(" IF (@PUID IS NULL OR @PUID = '') SET @PUID = NEWID(); ");
  713. //--新增資料夾
  714. strSql.Append(" declare @New_GUID char(36) ");
  715. strSql.Append(" set @New_GUID = NEWID() ");
  716. strSql.Append(" INSERT INTO OTB_SYS_Document([GUID],[PUID],[FileName],[FileRoot],[FilePath],[FileType],[CreateUser],[CreateDate]) ");
  717. strSql.Append(" VALUES(@New_GUID,@PUID,@FileName,@FileRoot,@FilePath,'Directory',@CreateUser,GETDATE()) ");
  718. //--更新新增資料夾狀態
  719. strSql.Append(" UPDATE OTB_SYS_Document SET [status] = '3' WHERE [GUID] = @New_GUID AND FileType = 'Directory' ");
  720. strSql.Append(" END ");
  721. strSql.Append(" ELSE ");
  722. strSql.Append(" BEGIN ");
  723. //--更新PUID
  724. strSql.Append(" UPDATE OTB_SYS_Document ");
  725. strSql.Append(" SET [PUID] = @PUID ");
  726. strSql.Append(" ,[FileName] = @FileName ");
  727. strSql.Append(" ,[FileRoot] = @FileRoot ");
  728. strSql.Append(" ,[FilePath] = @FilePath ");
  729. strSql.Append(" ,[FileType] = 'Directory' ");
  730. strSql.Append(" ,[CreateUser] = @CreateUser ");
  731. strSql.Append(" ,[CreateDate] = GETDATE() ");
  732. strSql.Append(" WHERE FilePath = @FilePath AND FileType = 'Directory' ");
  733. //--更新新增資料夾狀態
  734. strSql.Append(" UPDATE OTB_SYS_Document SET [status] = '1' WHERE [FileName] = @FileName AND [FilePath] = @FilePath AND FileType = 'Directory' ");
  735. strSql.Append(" END ");
  736. //--更新檔案所屬資料夾
  737. strSql.Append(" SELECT @PUID = [GUID] FROM OTB_SYS_Document WHERE FilePath = @FilePath AND FileType = 'Directory' ");
  738. strSql.Append(" UPDATE OTB_SYS_Document ");
  739. strSql.Append(" SET PUID = @PUID ");
  740. strSql.Append(" WHERE FileRoot = @FilePath AND FileType = 'File' ");
  741. //更新資料夾權限
  742. strSql.Append(" insert into OTB_SYS_DocumentRule(OrganizationID,RUID,FUID,[User],[Group],FileType,[Rule],CreateUser,CreateDate) ");
  743. strSql.Append(" select @Organization,NEWID(),[GUID],CreateUser,'admin',FileType,'-v-w-x-d-a',CreateUser,GETDATE() from OTB_SYS_Document ");
  744. strSql.Append(" where not exists (select [FUID] from OTB_SYS_DocumentRule where [FUID] = [GUID] and [Group] = 'admin') ");
  745. SqlParameter[] parameters = {
  746. new SqlParameter("@FileName", SqlDbType.NVarChar,200),
  747. new SqlParameter("@FileRoot", SqlDbType.NVarChar,500),
  748. new SqlParameter("@FilePath", SqlDbType.NVarChar,500),
  749. new SqlParameter("@CreateUser", SqlDbType.NVarChar,50),
  750. new SqlParameter("@Organization", SqlDbType.NVarChar,50)};
  751. parameters[0].Value = model.FileName;
  752. parameters[1].Value = model.FileRoot;
  753. parameters[2].Value = model.FilePath;
  754. parameters[3].Value = model.CreateUser;
  755. parameters[4].Value = model.Organization;
  756. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  757. if (rows >= 0)
  758. {
  759. return true;
  760. }
  761. else
  762. {
  763. return false;
  764. }
  765. }
  766. /// <summary>
  767. /// 刪除資料夾
  768. /// </summary>
  769. /// <returns></returns>
  770. public bool DeleteDirectory()
  771. {
  772. StringBuilder strSql = new StringBuilder();
  773. //--刪除狀態為-1的資料夾(代表不存在實體)
  774. strSql.Append(" DELETE FROM OTB_SYS_Document WHERE [status] = '-1' ");
  775. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), "");
  776. if (rows >= 0)
  777. {
  778. return true;
  779. }
  780. else
  781. {
  782. return false;
  783. }
  784. }
  785. #endregion Method
  786. }
  787. }