RegionService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. using DapperORMCore.Context.DataContext;
  2. using DapperORMCore.Model.BaseModel;
  3. using DapperORMCore.Model.CoreModel;
  4. using DapperORMCore.Repository.IRepositorys;
  5. using DapperORMCore.String.Consts;
  6. using DapperORMCore.String.Enums;
  7. using Microsoft.Extensions.Configuration;
  8. using NXWMS.Code;
  9. using NXWMS.DataAccess.Entity;
  10. using NXWMS.IService.NXWMS.Base;
  11. using NXWMS.Model.AppModels.Condition.Base;
  12. using NXWMS.Model.AppModels.Condition.SysSettings;
  13. using NXWMS.Model.AppModels.Result.Base;
  14. using NXWMS.Model.Common;
  15. using NXWMS.String.Enums;
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Threading.Tasks;
  21. using WestDistance.DapperORM.Repository.Repositorys;
  22. namespace NXWMS.Service.NXWMS.Base
  23. {
  24. /// <summary>
  25. /// 库区服务
  26. /// </summary>
  27. [AutoInject(typeof(IRegionService), InjectType.Scope)]
  28. public class RegionService : ServiceBase, IRegionService
  29. {
  30. /// <summary>
  31. /// 系统操作仓储中转
  32. /// </summary>
  33. private IDataRepositoryContext _dataContext;
  34. /// <summary>
  35. /// SQL节点仓储
  36. /// </summary>
  37. private ISQLNodeRepository _iSQLNodeRepository;
  38. /// <summary>
  39. /// 配置
  40. /// </summary>
  41. private IConfiguration _configuration;
  42. public RegionService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  43. {
  44. this._dataContext = dataRepositoryContext;
  45. this._configuration = configuration;
  46. this._iSQLNodeRepository = iSQLNodeRepository;
  47. }
  48. public OperateResultInfo<PageQueryResultInfo<RegionResult>> GetList(RegionSearchCondition info)
  49. {
  50. var sqlAndBuilder = new StringBuilder();
  51. var sqlOrBuilder = new StringBuilder();
  52. var sql = $@"SELECT
  53. CreateName = (SELECT USER_NAME FROM SYS_USER A WHERE A.USER_ID=CREATE_BY),
  54. UpdateName = (SELECT USER_NAME FROM SYS_USER B WHERE B.USER_ID=UPDATE_BY),
  55. UsedFlagName = {_iSQLNodeRepository.GetEnumIntCaseString<UsedFlag>("USED_FLAG")},
  56. {info.ItemSQL} FROM BAS_REGION WHERE 1=1 AND DEL_FLAG = 0 ";
  57. sqlAndBuilder = info.Id != null ?
  58. info.Id > 0 ?
  59. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_ID", info.Id, DBOperationString._Equal)) :
  60. sqlAndBuilder : sqlAndBuilder;
  61. sqlAndBuilder = info.IsUsed == null ?
  62. sqlAndBuilder :
  63. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("USED_FLAG", info.IsUsed, DBOperationString._Equal));
  64. sqlAndBuilder = string.IsNullOrWhiteSpace(info.RegionCode) ?
  65. sqlAndBuilder :
  66. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_CODE", info.RegionCode, DBOperationString._ContainIn));
  67. sqlAndBuilder = string.IsNullOrWhiteSpace(info.RegionName) ?
  68. sqlAndBuilder :
  69. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_NAME", info.RegionName, DBOperationString._ContainIn));
  70. sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
  71. IEnumerable<RegionResult> result;
  72. IEnumerable<RegionResult> totalResult;
  73. totalResult = new DataRepository<RegionResult>(_dataContext).Query(sql);
  74. if (info.PageIndex == 0 || info.PageSize == 0)
  75. {
  76. result = totalResult.ToList();
  77. }
  78. else
  79. {
  80. result = new DataRepository<RegionResult>(_dataContext).QueryPage(sql,
  81. "CREATE_TIME", info.PageSize, info.PageIndex, true);
  82. }
  83. return SuccessStatus(new PageQueryResultInfo<RegionResult>
  84. {
  85. RowData = result,
  86. PageConditionInfo = info,
  87. TotalCount = totalResult.Count(),
  88. TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
  89. });
  90. }
  91. public OperateResultInfo Add(RegionCondition info)
  92. {
  93. if (info == null)
  94. {
  95. return FailStatus();
  96. }
  97. if (string.IsNullOrWhiteSpace(info.RegionCode) && string.IsNullOrWhiteSpace(info.AreaCode) && string.IsNullOrWhiteSpace(info.WarehouseCode))
  98. {
  99. return FailMessageStatus("参数错误!");
  100. }
  101. if (new DataRepository<BAS_REGION>(_dataContext).Query().Where(m => m.REGION_CODE == info.RegionCode
  102. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).Any())
  103. {
  104. return FailMessageStatus("库位编码已经存在,请输入其它编码!");
  105. }
  106. var areaData = new DataRepository<BAS_AREA>(_dataContext).Query().Where(m => m.AREA_CODE == info.AreaCode
  107. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).FirstOrDefault();
  108. if (areaData == null)
  109. {
  110. return FailMessageStatus("请选择正确可使用的库区编码!");
  111. }
  112. var WarehouseData = new DataRepository<BAS_WAREHOUSE>(_dataContext).Query().Where(m => m.WAREHOUSE_CODE == info.WarehouseCode
  113. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).FirstOrDefault();
  114. if (WarehouseData == null)
  115. {
  116. return FailMessageStatus("请选择正确可使用的仓库编码!");
  117. }
  118. var now = DateTime.Now;
  119. var entity = new BAS_REGION
  120. {
  121. CREATE_BY = info.OperationUserId,
  122. CREATE_TIME = now,
  123. UPDATE_BY = info.OperationUserId,
  124. UPDATE_TIME = now,
  125. REGION_CODE = info.RegionCode,
  126. REGION_NAME = info.RegionName,
  127. AREA_CODE = info.AreaCode,
  128. AREA_NAME = areaData.AREA_NAME,
  129. WAREHOUSE_CODE = info.WarehouseCode,
  130. WAREHOUSE_NAME = WarehouseData.WAREHOUSE_NAME,
  131. DESCRIBE = info.Describe,
  132. USED_FLAG = Convert.ToInt32(info.IsUsed),
  133. DEL_FLAG = 0,
  134. };
  135. var affectedRows = new DataRepository<BAS_REGION>(_dataContext).Add(entity, new string[1] { "REGION_ID" });
  136. return GetStatus(affectedRows);
  137. }
  138. public OperateResultInfo Deleted(RegionCondition info)
  139. {
  140. var sqlAndBuilder = new StringBuilder();
  141. sqlAndBuilder = info.Id != null ?
  142. info.Id > 0 ?
  143. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_ID", info.Id, DBOperationString._Equal)) :
  144. sqlAndBuilder : sqlAndBuilder;
  145. sqlAndBuilder = string.IsNullOrWhiteSpace(info.RegionCode) ?
  146. sqlAndBuilder :
  147. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_CODE", info.RegionCode, DBOperationString._Equal));
  148. sqlAndBuilder = string.IsNullOrWhiteSpace(info.Ids) ?
  149. sqlAndBuilder :
  150. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("REGION_ID", info.Ids, DBOperationString._In));
  151. if (sqlAndBuilder.Length == 0)
  152. {
  153. return FailMessageStatus("参数错误!");
  154. }
  155. var now = DateTime.Now;
  156. var sql = $@"UPDATE BAS_REGION SET DEL_FLAG=1,UPDATE_BY={info.OperationUserId},UPDATE_TIME='{now}'
  157. WHERE 1=1 {sqlAndBuilder}";
  158. var affectedRows = new DataRepository<BAS_REGION>(_dataContext).Execute(sql);
  159. return GetStatus(affectedRows, info.Ids.Split(',').Length);
  160. }
  161. public OperateResultInfo Edit(RegionCondition info)
  162. {
  163. if (string.IsNullOrWhiteSpace(info.RegionCode) && info.Id == null)
  164. {
  165. return FailMessageStatus("参数错误!");
  166. }
  167. var whereList = new List<FieldKeyInfo>()
  168. .AddFieldKeyInfo(nameof(BAS_REGION.REGION_CODE), info.RegionCode, EnumCSharpPropertyType.STRING, DBOperationString._Equal,
  169. string.IsNullOrWhiteSpace(info.RegionCode))
  170. .AddFieldKeyInfo(nameof(BAS_REGION.REGION_ID), info.Id, EnumCSharpPropertyType.INT, DBOperationString._Equal,
  171. info.Id != null);
  172. var result = new DataRepository<BAS_REGION>(_dataContext).Query(whereList).FirstOrDefault();
  173. if (result != null)
  174. {
  175. var areaData = new DataRepository<BAS_AREA>(_dataContext).Query().Where(m => m.AREA_CODE == info.AreaCode
  176. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).FirstOrDefault();
  177. if (areaData == null)
  178. {
  179. return FailMessageStatus("请选择正确可使用的库区编码!");
  180. }
  181. var WarehouseData = new DataRepository<BAS_WAREHOUSE>(_dataContext).Query().Where(m => m.WAREHOUSE_CODE == info.WarehouseCode
  182. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).FirstOrDefault();
  183. if (WarehouseData == null)
  184. {
  185. return FailMessageStatus("请选择正确可使用的仓库编码!");
  186. }
  187. var now = DateTime.Now;
  188. result.DESCRIBE = info.Describe;
  189. result.REGION_ID = result.REGION_ID;
  190. result.REGION_CODE = info.RegionCode;
  191. result.REGION_NAME = info.RegionName;
  192. result.AREA_CODE = info.AreaCode;
  193. result.AREA_NAME = areaData.AREA_NAME;
  194. result.WAREHOUSE_CODE = info.WarehouseCode;
  195. result.WAREHOUSE_NAME = WarehouseData.WAREHOUSE_NAME;
  196. result.UPDATE_BY = info.OperationUserId;
  197. result.UPDATE_TIME = now;
  198. result.USED_FLAG = info.IsUsed ? 1 : 0;
  199. var affectedRows = new DataRepository<BAS_REGION>(_dataContext).Update(result, "REGION_ID", "NEWID");
  200. return GetStatus(affectedRows);
  201. }
  202. return FailMessageStatus("未查找到数据!");
  203. }
  204. public OperateResultInfo Remove(RegionCondition info)
  205. {
  206. if (string.IsNullOrWhiteSpace(info.RegionCode) && info.Id == null)
  207. {
  208. return FailMessageStatus("参数错误!");
  209. }
  210. var whereList = new List<FieldKeyInfo>()
  211. .AddFieldKeyInfo(nameof(BAS_REGION.REGION_CODE), info.RegionCode, EnumCSharpPropertyType.STRING, DBOperationString._Equal,
  212. !string.IsNullOrWhiteSpace(info.RegionCode))
  213. .AddFieldKeyInfo(nameof(BAS_REGION.REGION_ID), info.Id, EnumCSharpPropertyType.INT, DBOperationString._Equal,
  214. info.Id != null);
  215. var result = new DataRepository<BAS_REGION>(_dataContext).Query(whereList).FirstOrDefault();
  216. if (result != null)
  217. {
  218. var affectedRows = new DataRepository<BAS_REGION>(_dataContext).Remove("REGION_ID", result.REGION_ID.ToString());
  219. return GetStatus(affectedRows);
  220. }
  221. return FailMessageStatus("未查找到数据!");
  222. }
  223. }
  224. }