CustomerService.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  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.Result.Base;
  13. using NXWMS.Model.Common;
  14. using NXWMS.String.Enums;
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using WestDistance.DapperORM.Repository.Repositorys;
  21. namespace NXWMS.Service.NXWMS.Base
  22. {
  23. /// <summary>
  24. /// 客户服务
  25. /// </summary>
  26. [AutoInject(typeof(ICustomerService), InjectType.Scope)]
  27. public class CustomerService : ServiceBase, ICustomerService
  28. {
  29. /// <summary>
  30. /// 系统操作仓储中转
  31. /// </summary>
  32. private IDataRepositoryContext _dataContext;
  33. /// <summary>
  34. /// SQL节点仓储
  35. /// </summary>
  36. private ISQLNodeRepository _iSQLNodeRepository;
  37. /// <summary>
  38. /// 配置
  39. /// </summary>
  40. private IConfiguration _configuration;
  41. public CustomerService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  42. {
  43. this._dataContext = dataRepositoryContext;
  44. this._configuration = configuration;
  45. this._iSQLNodeRepository = iSQLNodeRepository;
  46. }
  47. public OperateResultInfo<PageQueryResultInfo<CustomerResult>> GetList(CustomerSearchCondition info)
  48. {
  49. var sqlAndBuilder = new StringBuilder();
  50. var sqlOrBuilder = new StringBuilder();
  51. if (info.PageIndex == 0 || info.PageSize == 0)
  52. {
  53. return FailMessageStatus("请传递分页码和分页个数!",
  54. new PageQueryResultInfo<CustomerResult>());
  55. }
  56. var sql = $@"SELECT
  57. CreateName = (SELECT USER_NAME FROM SYS_USER A WHERE A.USER_ID=CREATE_BY),
  58. UpdateName = (SELECT USER_NAME FROM SYS_USER B WHERE B.USER_ID=UPDATE_BY),
  59. UsedFlagName = {_iSQLNodeRepository.GetEnumIntCaseString<UsedFlag>("USED_FLAG")},
  60. {info.ItemSQL} FROM BAS_CUSTOMER WHERE 1=1 AND DEL_FLAG = 0 ";
  61. sqlAndBuilder = info.Id != null ?
  62. info.Id > 0 ?
  63. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_ID", info.Id, DBOperationString._Equal)) :
  64. sqlAndBuilder : sqlAndBuilder;
  65. sqlAndBuilder = info.IsUsed == null ?
  66. sqlAndBuilder :
  67. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("USED_FLAG", info.IsUsed, DBOperationString._Equal));
  68. sqlAndBuilder = string.IsNullOrWhiteSpace(info.CustomerCode) ?
  69. sqlAndBuilder :
  70. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_CODE", info.CustomerCode, DBOperationString._ContainIn));
  71. sqlAndBuilder = string.IsNullOrWhiteSpace(info.CustomerName) ?
  72. sqlAndBuilder :
  73. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_NAME", info.CustomerName, DBOperationString._ContainIn));
  74. sqlAndBuilder = string.IsNullOrWhiteSpace(info.CustomerType) ?
  75. sqlAndBuilder :
  76. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_TYPE", info.CustomerType, DBOperationString._ContainIn));
  77. sqlAndBuilder = string.IsNullOrWhiteSpace(info.Province) ?
  78. sqlAndBuilder :
  79. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("PROVINCE", info.Province, DBOperationString._ContainIn));
  80. sqlAndBuilder = string.IsNullOrWhiteSpace(info.City) ?
  81. sqlAndBuilder :
  82. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CITY", info.City, DBOperationString._ContainIn));
  83. sql = sql + (sqlAndBuilder.Length > 0 ? _iSQLNodeRepository.GetAndString(sqlAndBuilder, false) : "");
  84. var result = new DataRepository<CustomerResult>(_dataContext).QueryPage(sql,
  85. "CREATE_TIME", info.PageSize, info.PageIndex, true);
  86. var totalResult = new DataRepository<CustomerResult>(_dataContext).Query(sql);
  87. return SuccessStatus(new PageQueryResultInfo<CustomerResult>
  88. {
  89. RowData = result,
  90. PageConditionInfo = info,
  91. TotalCount = totalResult.Count(),
  92. TotalPageCount = (int)Math.Ceiling((double)totalResult.Count() / info.PageSize)
  93. });
  94. }
  95. public OperateResultInfo Add(CustomerCondition info)
  96. {
  97. if (string.IsNullOrWhiteSpace(info.CustomerCode) && string.IsNullOrWhiteSpace(info.CustomerType))
  98. {
  99. return FailMessageStatus("参数错误!");
  100. }
  101. if (new DataRepository<BAS_CUSTOMER>(_dataContext).Query().Where(m => m.CUSTOMER_CODE == info.CustomerCode
  102. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).Any())
  103. {
  104. return FailMessageStatus("客户编码已经存在,请输入其它编码!");
  105. }
  106. var now = DateTime.Now;
  107. var entity = new BAS_CUSTOMER
  108. {
  109. CREATE_BY = info.OperationUserId,
  110. CREATE_TIME = now,
  111. UPDATE_BY = info.OperationUserId,
  112. UPDATE_TIME = now,
  113. DESCRIBE = info.Describe,
  114. USED_FLAG = Convert.ToInt32(info.IsUsed),
  115. DEL_FLAG = 0,
  116. DEFAULT_DISTRIBUTION_RULE = info.DefaultDistributionRule,
  117. DEFAULT_PUT_SHELF_RULE = info.DefaultDistributionRule,
  118. ADDRESS = info.Address,
  119. CUSTOMER_CODE = info.CustomerCode,
  120. POSTAL_CODE = info.PostalCode,
  121. AREA = info.Area,
  122. CITY = info.City,
  123. CONTRACT = info.Contract,
  124. CONTRACT_PHONE = info.ContractPhone,
  125. CUSTOMER_NAME = info.CustomerName,
  126. CUSTOMER_TYPE = info.CustomerType,
  127. PROVINCE = info.Province,
  128. ROUTE = info.Route,
  129. STREET = info.Street,
  130. };
  131. var affectedRows = new DataRepository<BAS_CUSTOMER>(_dataContext).Add(entity, new string[1] { "CUSTOMER_ID" });
  132. return GetStatus(affectedRows);
  133. }
  134. public OperateResultInfo Deleted(CustomerCondition info)
  135. {
  136. var sqlAndBuilder = new StringBuilder();
  137. sqlAndBuilder = info.Id != null ?
  138. info.Id > 0 ?
  139. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_ID", info.Id, DBOperationString._Equal)) :
  140. sqlAndBuilder : sqlAndBuilder;
  141. sqlAndBuilder = string.IsNullOrWhiteSpace(info.CustomerCode) ?
  142. sqlAndBuilder :
  143. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_CODE", info.CustomerCode, DBOperationString._Equal));
  144. sqlAndBuilder = string.IsNullOrWhiteSpace(info.Ids) ?
  145. sqlAndBuilder :
  146. sqlAndBuilder.Append(_iSQLNodeRepository.GetAddCondition("CUSTOMER_ID", info.Ids, DBOperationString._In));
  147. if (sqlAndBuilder.Length == 0)
  148. {
  149. return FailMessageStatus("参数错误!");
  150. }
  151. var now = DateTime.Now;
  152. var sql = $@"UPDATE BAS_CUSTOMER SET DEL_FLAG=1,UPDATE_BY={info.OperationUserId},UPDATE_TIME='{now}'
  153. WHERE 1=1 {sqlAndBuilder}";
  154. var affectedRows = new DataRepository<BAS_CUSTOMER>(_dataContext).Execute(sql);
  155. return GetStatus(affectedRows, info.Ids.Split(',').Length);
  156. }
  157. public OperateResultInfo Edit(CustomerCondition info)
  158. {
  159. if (info == null)
  160. {
  161. return FailStatus();
  162. }
  163. if (string.IsNullOrWhiteSpace(info.CustomerCode) || string.IsNullOrWhiteSpace(info.CustomerType))
  164. {
  165. return FailMessageStatus("参数错误!");
  166. }
  167. var regionData = new DataRepository<BAS_CUSTOMER>(_dataContext).Query().Where(m => m.CUSTOMER_CODE == info.CustomerCode
  168. && m.DEL_FLAG == 0 && m.USED_FLAG == 1).FirstOrDefault();
  169. if (regionData == null)
  170. {
  171. return FailMessageStatus("库位编码已经存在,请输入其它编码!");
  172. }
  173. var whereList = new List<FieldKeyInfo>()
  174. .AddFieldKeyInfo(nameof(BAS_CUSTOMER.CUSTOMER_CODE), info.CustomerCode, EnumCSharpPropertyType.STRING, DBOperationString._Equal,
  175. !string.IsNullOrWhiteSpace(info.CustomerCode))
  176. .AddFieldKeyInfo(nameof(BAS_CUSTOMER.CUSTOMER_ID), info.Id, EnumCSharpPropertyType.INT, DBOperationString._Equal,
  177. info.Id != null);
  178. var result = new DataRepository<BAS_CUSTOMER>(_dataContext).Query(whereList).FirstOrDefault();
  179. if (result != null)
  180. {
  181. var now = DateTime.Now;
  182. result.DESCRIBE = info.Describe;
  183. result.ADDRESS = info.Address;
  184. result.AREA = info.Area;
  185. result.CITY = info.City;
  186. result.CONTRACT = info.Contract;
  187. result.CONTRACT_PHONE = info.ContractPhone;
  188. result.CUSTOMER_CODE = info.CustomerCode;
  189. result.CUSTOMER_NAME = info.CustomerName;
  190. result.CUSTOMER_TYPE = info.CustomerType;
  191. result.DEFAULT_DISTRIBUTION_RULE = info.DefaultDistributionRule;
  192. result.DEFAULT_PUT_SHELF_RULE = info.DefaultPutShelfRule;
  193. result.DESCRIBE = info.Describe;
  194. result.POSTAL_CODE = info.PostalCode;
  195. result.PROVINCE = info.Province;
  196. result.ROUTE = info.Route;
  197. result.STREET = info.Street;
  198. result.CUSTOMER_ID = result.CUSTOMER_ID;
  199. result.UPDATE_BY = info.OperationUserId;
  200. result.UPDATE_TIME = now;
  201. result.USED_FLAG = info.IsUsed ? 1 : 0;
  202. var affectedRows = new DataRepository<BAS_CUSTOMER>(_dataContext).Update(result, "CUSTOMER_ID", "NEWID");
  203. return GetStatus(affectedRows);
  204. }
  205. return FailMessageStatus("未查找到数据!");
  206. }
  207. public OperateResultInfo Remove(CustomerCondition info)
  208. {
  209. if (info == null)
  210. {
  211. return FailStatus();
  212. }
  213. if (string.IsNullOrWhiteSpace(info.CustomerCode) || string.IsNullOrWhiteSpace(info.CustomerType))
  214. {
  215. return FailMessageStatus("参数错误!");
  216. }
  217. var whereList = new List<FieldKeyInfo>()
  218. .AddFieldKeyInfo(nameof(BAS_CUSTOMER.CUSTOMER_CODE), info.CustomerCode, EnumCSharpPropertyType.STRING, DBOperationString._Equal,
  219. !string.IsNullOrWhiteSpace(info.CustomerCode))
  220. .AddFieldKeyInfo(nameof(BAS_CUSTOMER.CUSTOMER_ID), info.Id, EnumCSharpPropertyType.INT, DBOperationString._Equal,
  221. info.Id != null);
  222. var result = new DataRepository<BAS_CUSTOMER>(_dataContext).Query(whereList).FirstOrDefault();
  223. if (result != null)
  224. {
  225. var affectedRows = new DataRepository<BAS_CUSTOMER>(_dataContext).Remove("CUSTOMER_ID", result.CUSTOMER_ID.ToString());
  226. return GetStatus(affectedRows);
  227. }
  228. return FailMessageStatus("未查找到数据!");
  229. }
  230. }
  231. }