OverseaVehicleRepository.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. using Aspose.Words.Lists;
  2. using AutoMapper;
  3. using OASystem.Domain;
  4. using OASystem.Domain.AesEncryption;
  5. using OASystem.Domain.Dtos.Resource;
  6. using OASystem.Domain.Entities.Groups;
  7. using OASystem.Domain.Entities.Resource;
  8. using OASystem.Domain.ViewModels.Resource;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace OASystem.Infrastructure.Repositories.Resource
  15. {
  16. /// <summary>
  17. /// 境外用车信息 仓储
  18. /// </summary>
  19. public class OverseaVehicleRepository : BaseRepository<Res_OverseaVehicle, Res_OverseaVehicle>
  20. {
  21. private readonly IMapper _mapper;
  22. public OverseaVehicleRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
  23. {
  24. _mapper = mapper;
  25. }
  26. /// <summary>
  27. /// Init
  28. /// </summary>
  29. /// <param name="dto"></param>
  30. /// <returns></returns>
  31. public async Task<JsonView> InitAsync()
  32. {
  33. var currencyDatas = await _sqlSugar.Queryable<Sys_SetData>()
  34. .Where(x => x.STid == 66 && x.IsDel == 0)
  35. .Select(x =>
  36. new
  37. {
  38. x.Id,
  39. x.Name
  40. })
  41. .ToListAsync();
  42. var serviceTypeDatas = EnumHelper.ToSelectList<VehicleServiceTypeEnum>(false);
  43. var init = new {
  44. currencyDatas,
  45. serviceTypeDatas
  46. };
  47. return new JsonView(init, 1, "操作成功!");
  48. }
  49. /// <summary>
  50. /// List
  51. /// </summary>
  52. /// <param name="dto"></param>
  53. /// <returns></returns>
  54. public async Task<JsonView> ListAsync(OverseaVehicleListDto dto)
  55. {
  56. var search = dto.Search.Trim();
  57. RefAsync<int> total = 0;
  58. var infos = await _sqlSugar.Queryable<Res_OverseaVehicle>()
  59. .Where(x => x.IsDel == 0)
  60. .WhereIF(!string.IsNullOrEmpty(search), x => x.ContinentName.Contains(search) || x.CountryName.Contains(search) || x.CityName.Contains(search))
  61. .OrderByDescending(x => x.CreateTime)
  62. .Select(x => new OverseaVehicleListView() {
  63. Id = x.Id,
  64. ContinentName = x.ContinentName,
  65. CountryName = x.CountryName,
  66. CityName = x.CityName,
  67. GuidePrice = x.GuidePrice,
  68. OtherPrice1 = x.OtherPrice1,
  69. OtherPrice2 = x.OtherPrice2,
  70. Currency = x.Currency.ToString(),
  71. LastUpdateUserName = x.LastUpdateUserId.ToString(),
  72. LastUpdateTime = x.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
  73. Remark = x.Remark
  74. })
  75. .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
  76. if (total == 0)
  77. {
  78. return new JsonView(infos, total, "暂无数据!");
  79. }
  80. foreach (var item in infos)
  81. {
  82. if (int.TryParse(item.Currency,out int currencyId))
  83. {
  84. item.Currency = _sqlSugar.Queryable<Sys_SetData>().Where(y => y.Id == currencyId).First()?.Name ?? "-";
  85. }
  86. if (int.TryParse(item.LastUpdateUserName, out int lastUpdateUserId))
  87. {
  88. item.LastUpdateUserName = _sqlSugar.Queryable<Sys_Users>().Where(y => y.Id == lastUpdateUserId).First()?.CnName ?? "-";
  89. }
  90. item.CarInfos = _sqlSugar.Queryable<Res_OverseaVehicleTypePrice>()
  91. .Where(x => x.IsDel == 0 && x.OvId == item.Id)
  92. .Select(x => new OverseaVehicleTypeListView() {
  93. Id = x.Id,
  94. CarTypeName = x.CarTypeName,
  95. ServiceType = x.ServiceType,
  96. Price = x.Price,
  97. Remark = x.Remark
  98. })
  99. .ToList();
  100. }
  101. return new JsonView(infos, total, "操作成功!");
  102. }
  103. /// <summary>
  104. /// 详细信息
  105. /// </summary>
  106. /// <param name="id"></param>
  107. /// <returns></returns>
  108. public async Task<JsonView> InfoAsync(int id)
  109. {
  110. if (id < 1) return new JsonView(false, "请传入有效的ID!");
  111. var info = await _sqlSugar.Queryable<Res_OverseaVehicle>()
  112. .Where(it => it.Id == id && it.IsDel == 0)
  113. .FirstAsync();
  114. if (info == null) return new JsonView(false, "暂无数据!");
  115. var subInfos = await _sqlSugar.Queryable<Res_OverseaVehicleTypePrice>()
  116. .Where(it => it.OvId == id && it.IsDel == 0)
  117. .ToListAsync();
  118. var view = _mapper.Map<OverseaVehicleInfoView>(info);
  119. view.CarInfos = _mapper.Map<List<OverseaVehicleTypeInfoView>>(subInfos);
  120. return new JsonView(view, 1, "操作成功!");
  121. }
  122. /// <summary>
  123. /// 添加
  124. /// </summary>
  125. /// <param name="dto"></param>
  126. /// <returns></returns>
  127. public async Task<JsonView> AddAsync(OverseaVehicleAddOrEditDto dto)
  128. {
  129. //参数处理
  130. var now = DateTime.Now;
  131. var info = _mapper.Map<Res_OverseaVehicle>(dto);
  132. info.CreateUserId = dto.CurrUserId;
  133. info.LastUpdateUserId = dto.CurrUserId;
  134. info.LastUpdateTime = now;
  135. var subInfos = _mapper.Map<List<Res_OverseaVehicleTypePrice>>(dto.CarInfos);
  136. if (subInfos == null && subInfos.Count < 1)
  137. {
  138. return new JsonView(false, $"请填写车型信息!");
  139. }
  140. _sqlSugar.BeginTran();
  141. try
  142. {
  143. var infoIsNul = await _sqlSugar.Queryable<Res_OverseaVehicle>()
  144. .Where(x => x.IsDel == 0)
  145. .Where(x => x.ContinentName.Equals(dto.ContinentName.Trim()))
  146. .Where(x => x.CountryName.Equals(dto.CountryName.Trim()))
  147. .Where(x => x.CityName.Equals(dto.CityName.Trim()))
  148. .AnyAsync();
  149. if (infoIsNul)
  150. {
  151. return new JsonView(false, $"该城市已存在,不可重复添加!");
  152. }
  153. var infoId = await _sqlSugar.Insertable(info).ExecuteReturnIdentityAsync();
  154. if (infoId < 1)
  155. {
  156. _sqlSugar.RollbackTran();
  157. return new JsonView(false, $"车信息,操作失败!");
  158. }
  159. foreach (var subInfo in subInfos) {
  160. subInfo.OvId = infoId;
  161. subInfo.CreateUserId = dto.CurrUserId;
  162. subInfo.LastUpdateUserId = dto.CurrUserId;
  163. subInfo.LastUpdateTime = DateTime.Now;
  164. }
  165. var subCount = await _sqlSugar.Insertable(subInfos).ExecuteCommandAsync();
  166. if (subCount < 1)
  167. {
  168. _sqlSugar.RollbackTran();
  169. return new JsonView(false, $"车型信息,操作失败!");
  170. }
  171. }
  172. catch (Exception ex)
  173. {
  174. _sqlSugar.RollbackTran();
  175. return new JsonView(false, $"操作失败!ex:{ex.Message}");
  176. }
  177. _sqlSugar.CommitTran();
  178. return new JsonView(true, "操作成功!");
  179. }
  180. /// <summary>
  181. /// 编辑
  182. /// </summary>
  183. /// <param name="dto"></param>
  184. /// <returns></returns>
  185. public async Task<JsonView> EditAsync(OverseaVehicleAddOrEditDto dto)
  186. {
  187. //参数处理
  188. var now = DateTime.Now;
  189. var info = _mapper.Map<Res_OverseaVehicle>(dto);
  190. info.LastUpdateUserId = dto.CurrUserId;
  191. info.LastUpdateTime = now;
  192. var subInfos = _mapper.Map<List<Res_OverseaVehicleTypePrice>>(dto.CarInfos);
  193. if (subInfos == null && subInfos.Count < 1)
  194. {
  195. return new JsonView(false, $"请填写车型信息!");
  196. }
  197. _sqlSugar.BeginTran();
  198. try
  199. {
  200. var infoId = await _sqlSugar.Updateable(info)
  201. .UpdateColumns(it => new
  202. {
  203. it.ContinentName,
  204. it.CountryName,
  205. it.CityName,
  206. it.GuidePrice,
  207. it.OtherPrice1,
  208. it.OtherPrice2,
  209. it.Currency,
  210. it.LastUpdateUserId,
  211. it.LastUpdateTime,
  212. it.Remark
  213. })
  214. .Where(it => it.Id == info.Id)
  215. .ExecuteCommandAsync();
  216. if (infoId < 1)
  217. {
  218. _sqlSugar.RollbackTran();
  219. return new JsonView(false, $"车信息,操作失败!");
  220. }
  221. foreach (var subInfo in subInfos)
  222. {
  223. subInfo.LastUpdateUserId = dto.CurrUserId;
  224. subInfo.LastUpdateTime = DateTime.Now;
  225. }
  226. var subCount = await _sqlSugar.Updateable(subInfos)
  227. .UpdateColumns(it => new
  228. {
  229. it.CarTypeName,
  230. it.ServiceType,
  231. it.Price,
  232. it.LastUpdateUserId,
  233. it.LastUpdateTime,
  234. it.Remark
  235. })
  236. .WhereColumns (it => new { it.Id })
  237. .ExecuteCommandAsync();
  238. if (subCount < 1)
  239. {
  240. _sqlSugar.RollbackTran();
  241. return new JsonView(false, $"车型信息,操作失败!");
  242. }
  243. }
  244. catch (Exception ex)
  245. {
  246. _sqlSugar.RollbackTran();
  247. return new JsonView(false, $"操作失败!ex:{ex.Message}");
  248. }
  249. _sqlSugar.CommitTran();
  250. return new JsonView(true, "操作成功!");
  251. }
  252. /// <summary>
  253. /// 删除
  254. /// </summary>
  255. /// <param name="dto"></param>
  256. /// <returns></returns>
  257. public async Task<JsonView> DelAsync(OverseaVehicleDelDto dto)
  258. {
  259. //参数处理
  260. var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  261. _sqlSugar.BeginTran();
  262. try
  263. {
  264. var infoId = await _sqlSugar.Updateable<Res_OverseaVehicle>()
  265. .SetColumns(x => x.IsDel == 1)
  266. .SetColumns(x => x.DeleteUserId == dto.CurrUserId)
  267. .SetColumns(x => x.DeleteTime == now)
  268. .Where(it => it.Id == dto.Id)
  269. .ExecuteCommandAsync();
  270. if (infoId < 1)
  271. {
  272. _sqlSugar.RollbackTran();
  273. return new JsonView(false, $"车信息,操作失败!");
  274. }
  275. var subCount = await _sqlSugar.Updateable<Res_OverseaVehicleTypePrice>()
  276. .SetColumns(x => x.IsDel == 1)
  277. .SetColumns(x => x.DeleteUserId == dto.CurrUserId)
  278. .SetColumns(x => x.DeleteTime == now)
  279. .Where(it => it.OvId == dto.Id)
  280. .ExecuteCommandAsync();
  281. if (subCount < 1)
  282. {
  283. _sqlSugar.RollbackTran();
  284. return new JsonView(false, $"车型信息,操作失败!");
  285. }
  286. }
  287. catch (Exception ex)
  288. {
  289. _sqlSugar.RollbackTran();
  290. return new JsonView(false, $"操作失败!ex:{ex.Message}");
  291. }
  292. _sqlSugar.CommitTran();
  293. return new JsonView(true, "操作成功!");
  294. }
  295. }
  296. }