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.
 
 
 
 
 
 

356 lines
12 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Text;
  9. namespace Learun.Application.Language
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
  13. /// Copyright (c) 2013-2018 上海力软信息技术有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2018-04-10 15:00
  16. /// 描 述:语言映照
  17. /// </summary>
  18. public class LGMapService : RepositoryFactory
  19. {
  20. #region 构造函数和属性
  21. private string fieldSql;
  22. public LGMapService()
  23. {
  24. fieldSql = @"
  25. t.F_Id,
  26. t.F_Name,
  27. t.F_Code,
  28. t.F_TypeCode
  29. ";
  30. }
  31. #endregion
  32. #region 获取数据
  33. /// <summary>
  34. /// 获取数据结合(code,name)
  35. /// <param name="Code">语言包编码</param>
  36. /// <summary>
  37. /// <returns></returns>
  38. public IEnumerable<LanguageModel> GetDataList(string Code)
  39. {
  40. try
  41. {
  42. var sql = "SELECT F_Code as id,F_Name as name FROM LR_Lg_Map t WHERE F_TypeCode='" + Code + "' AND t.F_Code <>'' AND t.F_Code<>'undefined'";
  43. return this.BaseRepository().FindList<LanguageModel>(sql);
  44. }
  45. catch (Exception ex)
  46. {
  47. if (ex is ExceptionEx)
  48. {
  49. throw;
  50. }
  51. else
  52. {
  53. throw ExceptionEx.ThrowServiceException(ex);
  54. }
  55. }
  56. }
  57. /// <summary>
  58. /// 获取列表数据
  59. /// <param name="TypeCode">编码</param>
  60. /// <summary>
  61. /// <returns></returns>
  62. public IEnumerable<LGMapEntity> GetListByTypeCode(string TypeCode)
  63. {
  64. try
  65. {
  66. var sql = "select * from LR_Lg_Map where F_TypeCode='" + TypeCode + "' AND t.F_Code <>'' AND t.F_Code<>'undefined'";
  67. return this.BaseRepository().FindList<LGMapEntity>(sql);
  68. }
  69. catch (Exception ex)
  70. {
  71. if (ex is ExceptionEx)
  72. {
  73. throw;
  74. }
  75. else
  76. {
  77. throw ExceptionEx.ThrowServiceException(ex);
  78. }
  79. }
  80. }
  81. /// <summary>
  82. /// 获取列表数据
  83. /// <summary>
  84. /// <returns></returns>
  85. public IEnumerable<LGMapEntity> GetList(string queryJson)
  86. {
  87. try
  88. {
  89. //参考写法
  90. //var queryParam = queryJson.ToJObject();
  91. // 虚拟参数
  92. //var dp = new DynamicParameters(new { });
  93. //dp.Add("startTime", queryParam["StartTime"].ToDate(), DbType.DateTime);
  94. var strSql = new StringBuilder();
  95. strSql.Append("SELECT ");
  96. strSql.Append(fieldSql);
  97. strSql.Append(" FROM LR_Lg_Map t WHERE 1=1 AND t.F_Code <>'' AND t.F_Code<>'undefined'");
  98. strSql.Append(" ORDER BY F_Code");
  99. return this.BaseRepository().FindList<LGMapEntity>(strSql.ToString());
  100. }
  101. catch (Exception ex)
  102. {
  103. if (ex is ExceptionEx)
  104. {
  105. throw;
  106. }
  107. else
  108. {
  109. throw ExceptionEx.ThrowServiceException(ex);
  110. }
  111. }
  112. }
  113. /// <summary>
  114. /// 获取列表分页数据
  115. /// <param name="pagination">分页参数</param>
  116. /// <param name="typeList">语言类型列表</param>
  117. /// <summary>
  118. /// <returns></returns>
  119. public DataTable GetPageList(Pagination pagination, string queryJson, string typeList)
  120. {
  121. try
  122. {
  123. string[] list = typeList.Split(',');
  124. var strSql = new StringBuilder();
  125. strSql.Append("SELECT ");
  126. strSql.Append("m.F_Code, m.F_Name as " + list[0] + " ");
  127. for (var i = 1; i < list.Length; i++)
  128. {
  129. strSql.Append(", m" + i + ".F_Name as " + list[i] + " ");
  130. }
  131. strSql.Append(" FROM LR_Lg_Map m ");
  132. for (var j = 1; j < list.Length; j++)
  133. {
  134. strSql.Append("LEFT JOIN LR_Lg_Map m" + j + " ON m.F_Code=m" + j + ".F_Code AND m" + j + ".F_TypeCode='" + list[j] + "' ");
  135. }
  136. strSql.Append(" WHERE m.F_TypeCode = '" + list[0] + "' AND m.F_Code <>'' AND m.F_Code<>'undefined'");
  137. var queryParam = queryJson.ToJObject();
  138. // 虚拟参数
  139. var dp = new DynamicParameters(new { });
  140. if (queryParam.Property("keyword") != null && queryParam.Property("keyword").ToString() != "")
  141. {
  142. dp.Add("F_Name", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
  143. strSql.Append(" AND m.F_Name like @F_Name ");
  144. }
  145. return this.BaseRepository().FindTable(strSql.ToString(), dp, pagination);
  146. }
  147. catch (Exception ex)
  148. {
  149. if (ex is ExceptionEx)
  150. {
  151. throw;
  152. }
  153. else
  154. {
  155. throw ExceptionEx.ThrowServiceException(ex);
  156. }
  157. }
  158. }
  159. /// <summary>
  160. /// 获取实体数据
  161. /// <param name="keyValue">主键</param>
  162. /// <summary>
  163. /// <returns></returns>
  164. public LGMapEntity GetEntity(string keyValue)
  165. {
  166. try
  167. {
  168. return this.BaseRepository().FindEntity<LGMapEntity>(keyValue);
  169. }
  170. catch (Exception ex)
  171. {
  172. if (ex is ExceptionEx)
  173. {
  174. throw;
  175. }
  176. else
  177. {
  178. throw ExceptionEx.ThrowServiceException(ex);
  179. }
  180. }
  181. }
  182. /// <summary>
  183. /// 根据名称获取列表
  184. /// <param name="keyValue">F_Name</param>
  185. /// <summary>
  186. /// <returns></returns>
  187. public IEnumerable<LGMapEntity> GetListByName(string keyValue)
  188. {
  189. try
  190. {
  191. var strSql = new StringBuilder();
  192. strSql.Append("SELECT ");
  193. strSql.Append(fieldSql);
  194. strSql.Append(" FROM LR_Lg_Map t WHERE 1=1 AND t.F_Code <>'' AND t.F_Code<>'undefined' AND t.F_Name='" + keyValue + "'");
  195. return this.BaseRepository().FindList<LGMapEntity>(strSql.ToString());
  196. }
  197. catch (Exception ex)
  198. {
  199. if (ex is ExceptionEx)
  200. {
  201. throw;
  202. }
  203. else
  204. {
  205. throw ExceptionEx.ThrowServiceException(ex);
  206. }
  207. }
  208. }
  209. /// <summary>
  210. /// 根据名称与类型获取列表
  211. /// <param name="keyValue">F_Name</param>
  212. /// <param name="typeCode">typeCode</param>
  213. /// <summary>
  214. /// <returns></returns>
  215. public IEnumerable<LGMapEntity> GetListByNameAndType(string keyValue, string typeCode)
  216. {
  217. try
  218. {
  219. var strSql = new StringBuilder();
  220. strSql.Append("SELECT ");
  221. strSql.Append(fieldSql);
  222. strSql.Append(" FROM LR_Lg_Map t WHERE 1=1 AND t.F_Code <>'' AND t.F_Code<>'undefined' AND t.F_Name='" + keyValue + "' AND t.F_TypeCode='" + typeCode + "'");
  223. return this.BaseRepository().FindList<LGMapEntity>(strSql.ToString());
  224. }
  225. catch (Exception ex)
  226. {
  227. if (ex is ExceptionEx)
  228. {
  229. throw;
  230. }
  231. else
  232. {
  233. throw ExceptionEx.ThrowServiceException(ex);
  234. }
  235. }
  236. }
  237. #endregion
  238. #region 提交数据
  239. /// <summary>
  240. /// 删除实体数据
  241. /// <param name="keyValue">主键</param>
  242. /// <summary>
  243. /// <returns></returns>
  244. public void DeleteEntity(string keyValue)
  245. {
  246. try
  247. {
  248. this.BaseRepository().Delete<LGMapEntity>(t => t.F_Code == keyValue);
  249. }
  250. catch (Exception ex)
  251. {
  252. if (ex is ExceptionEx)
  253. {
  254. throw;
  255. }
  256. else
  257. {
  258. throw ExceptionEx.ThrowServiceException(ex);
  259. }
  260. }
  261. }
  262. /// <summary>
  263. /// 保存实体数据(新增、修改)
  264. /// <param name="nameList">原列表</param>
  265. /// <param name="newNameList">新列表</param>
  266. /// <param name="code">F_Code</param>
  267. /// <summary>
  268. /// <returns></returns>
  269. public void SaveEntity(string nameList, string newNameList, string code)
  270. {
  271. var db = this.BaseRepository().BeginTrans();
  272. try
  273. {
  274. if (!string.IsNullOrEmpty(code))
  275. {//编辑
  276. JObject jo = JObject.Parse(nameList);
  277. IEnumerable<JProperty> properties = jo.Properties();
  278. //将原列表存入字典
  279. var dic = new Dictionary<string, string>();
  280. foreach (JProperty item in properties)
  281. {
  282. dic.Add(item.Name, item.Value.ToString());
  283. }
  284. //新列表
  285. JObject newjo = JObject.Parse(newNameList);
  286. IEnumerable<JProperty> newproperties = newjo.Properties();
  287. foreach (JProperty item in newproperties)
  288. {
  289. if (dic.ContainsKey(item.Name) && (item.Value.ToString() != dic[item.Name]))
  290. {
  291. var sql = "UPDATE LR_LG_MAP SET F_Name=@newName WHERE F_Name=@oldName AND F_Code=@code";
  292. db.ExecuteBySql(sql, new { newName = item.Value.ToString(), oldName = dic[item.Name], code = code });
  293. }
  294. else if (!dic.ContainsKey(item.Name))
  295. {
  296. LGMapEntity entity = new LGMapEntity();
  297. entity.Create();
  298. entity.F_Name = item.Value.ToString();
  299. entity.F_TypeCode = item.Name;
  300. entity.F_Code = code;
  301. db.Insert<LGMapEntity>(entity);
  302. }
  303. else
  304. {
  305. continue;
  306. }
  307. }
  308. }
  309. else
  310. {//新增
  311. //转为可遍历对象
  312. JObject jo = JObject.Parse(newNameList);
  313. IEnumerable<JProperty> properties = jo.Properties();
  314. var F_Code = Guid.NewGuid().ToString();
  315. //新增每一项
  316. foreach (JProperty item in properties)
  317. {
  318. LGMapEntity entity = new LGMapEntity();
  319. entity.Create();
  320. entity.F_Name = item.Value.ToString();
  321. entity.F_TypeCode = item.Name;
  322. entity.F_Code = F_Code;
  323. db.Insert<LGMapEntity>(entity);
  324. }
  325. }
  326. db.Commit();
  327. }
  328. catch (Exception ex)
  329. {
  330. db.Rollback();
  331. if (ex is ExceptionEx)
  332. {
  333. throw;
  334. }
  335. else
  336. {
  337. throw ExceptionEx.ThrowServiceException(ex);
  338. }
  339. }
  340. }
  341. #endregion
  342. }
  343. }