郑州市第一人民医院

DistriGoodsController.cs 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using MadRunFabric.Common;
  7. using Microsoft.AspNetCore.Authorization;
  8. using Microsoft.Extensions.Logging;
  9. using DistributionApi.IRepositories;
  10. using Api.SignToken;
  11. using System.Security.Claims;
  12. using MadRunFabric.Model;
  13. using System.Text.RegularExpressions;
  14. using Microsoft.Extensions.Configuration;
  15. namespace DistributionApi.Controllers
  16. {
  17. /// <summary>
  18. /// 配送物品管理
  19. /// </summary>
  20. [Authorize]
  21. [ApiVersion("6.0")]
  22. [Route("api/[controller]")]
  23. [Produces("application/json")]
  24. public class DistriGoodsController : BaseController
  25. {
  26. private readonly ILogger<DistriGoodsController> _logger;
  27. private readonly IConfiguration _configuration;
  28. private readonly ISys_User_AccountRepository _sys_user_accountRepository;
  29. private readonly ISignTokenService _signTokenService;
  30. private readonly IDistri_GoodsRepository _distri_goodsrepository;
  31. private readonly IDistri_Goods_TypeRepository _distri_goods_typerepository;
  32. public DistriGoodsController(
  33. ILogger<DistriGoodsController> logger,
  34. IConfiguration configuration,
  35. ISys_User_AccountRepository sys_user_accountRepository,
  36. ISignTokenService signTokenService,
  37. IDistri_GoodsRepository distri_goodsrepository,
  38. IDistri_Goods_TypeRepository distri_goods_typerepository
  39. )
  40. {
  41. _logger = logger;
  42. _configuration = configuration;
  43. _sys_user_accountRepository = sys_user_accountRepository;
  44. _signTokenService = signTokenService;
  45. _distri_goodsrepository = distri_goodsrepository;
  46. _distri_goods_typerepository = distri_goods_typerepository;
  47. }
  48. /// <summary>
  49. /// 获取配送物品列表分页 by page
  50. /// </summary>
  51. /// <param name="keyword"></param>
  52. /// <param name="stime"></param>
  53. /// <param name="etime"></param>
  54. /// <param name="pageindex"></param>
  55. /// <param name="pagesize"></param>
  56. /// <returns></returns>
  57. [HttpGet("getlistbypage")]
  58. public async Task<IActionResult> GetListByPageAsync(string keyword, string projectid, string kindid, int pageindex = 1, int pagesize = 10)
  59. {
  60. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  61. //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  62. //var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  63. string allprojectrole = _configuration["allprojectrole"];
  64. var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole);
  65. var userinfo = JsonHelper.JsonToEntity<UserAccountInfoModel>(userinfos.ToJson());
  66. List<string> kindids = new List<string>();
  67. if (!string.IsNullOrEmpty(kindid))
  68. {
  69. //获取物品分类id list<string>
  70. var listGoodType = (await _distri_goods_typerepository.Get(x => x.isdelete == 0)); //.ToList();
  71. if (!string.IsNullOrEmpty(projectid))
  72. listGoodType = listGoodType.Where(x => x.projectid == projectid); //.ToList();
  73. kindids = GetGoodsTypeIds(listGoodType.ToList(), kindid);
  74. }
  75. //获取数据
  76. int recordCount = 0;
  77. var result = _distri_goodsrepository.GetListsByPage(keyword, projectid, userinfo, kindids, pageindex, pagesize, out recordCount);
  78. var obj = new
  79. {
  80. rows = result.ToList(),
  81. total = recordCount
  82. };
  83. return Success("获取成功", obj);
  84. }
  85. /// <summary>
  86. /// 获取配送物品列表 - 下拉
  87. /// </summary>
  88. /// <param name="keyword"></param>
  89. /// <param name="projectid"></param>
  90. /// <param name="kindid">物品分类</param>
  91. /// <returns></returns>
  92. [HttpGet("getlist")]
  93. public async Task<IActionResult> GetListAsync(string keyword, string projectid,string kindid)
  94. {
  95. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  96. var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  97. var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  98. //获取物品分类id list<string>
  99. var listGoodType = (await _distri_goods_typerepository.Get(x => x.projectid == projectid)).ToList();
  100. List<string> kindids = GetGoodsTypeIds(listGoodType, kindid);
  101. //获取数据
  102. var result = _distri_goodsrepository.GetLists(keyword, projectid, userinfo, kindids);
  103. return Success("获取成功", result.ToList());
  104. }
  105. /// <summary>
  106. /// 获取配送物品详情
  107. /// </summary>
  108. [HttpGet("getsingle")]
  109. public IActionResult GetSingleAsync(string id)
  110. {
  111. var model = _distri_goodsrepository.GetDetails(id);
  112. return Success("获取成功", model);
  113. }
  114. /// <summary>
  115. /// 添加配送物品
  116. /// </summary>
  117. [HttpPost("add")]
  118. public async Task<IActionResult> AddAsync(string projectid, string kindid, string buildingid, string floorid, string goodsname, int typeid, bool isremind, string remark, int sortnum)
  119. {
  120. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  121. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  122. #region 判断验证
  123. if (string.IsNullOrEmpty(projectid))
  124. return Error("请选择项目");
  125. if (string.IsNullOrWhiteSpace(kindid))
  126. return Error("请选择物品种类");
  127. if (typeid == 0)
  128. return Error("请选择紧急程度");
  129. #endregion
  130. var model = new Distri_Goods();
  131. #region model 添加配送物品对象
  132. model.projectid = projectid;
  133. model.kindid = kindid;
  134. model.typeid = typeid;
  135. model.goodsname = string.IsNullOrEmpty(goodsname) ? "" : Regex.Replace(goodsname, @"\s", "");
  136. model.isremind = isremind;
  137. model.remark = string.IsNullOrEmpty(remark) ? "" : Regex.Replace(remark, @"\s", "");
  138. model.buildingid = buildingid;
  139. model.floorid = floorid;
  140. model.sortnum = sortnum;
  141. model.createtby = usercode;
  142. #endregion
  143. bool bl = await _distri_goodsrepository.Add(model);
  144. if (bl)
  145. {
  146. return Success("保存成功");
  147. }
  148. else
  149. return Error("保存失败");
  150. }
  151. /// <summary>
  152. /// 修改配送物品
  153. /// </summary>
  154. [HttpPost("update")]
  155. public async Task<IActionResult> UpdateAsync(string id, string projectid, string kindid, string buildingid, string floorid, string goodsname, int typeid, bool isremind, string remark, int sortnum)
  156. {
  157. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  158. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  159. var model = (await _distri_goodsrepository.GetSingle(p => p.id == id));
  160. if (model != null)
  161. {
  162. #region 判断验证
  163. if (string.IsNullOrEmpty(projectid))
  164. return Error("请选择项目");
  165. if (string.IsNullOrWhiteSpace(kindid))
  166. return Error("请选择物品种类");
  167. if (typeid == 0)
  168. return Error("请选择紧急程度");
  169. #endregion
  170. #region model 添加配送物品对象
  171. model.projectid = projectid;
  172. model.kindid = kindid;
  173. model.typeid = typeid;
  174. model.goodsname = string.IsNullOrEmpty(goodsname) ? "" : Regex.Replace(goodsname, @"\s", "");
  175. model.isremind = isremind;
  176. model.remark = string.IsNullOrEmpty(remark) ? "" : Regex.Replace(remark, @"\s", "");
  177. model.buildingid = buildingid;
  178. model.floorid = floorid;
  179. model.sortnum = sortnum;
  180. model.createtby = usercode;
  181. #endregion
  182. bool b = await _distri_goodsrepository.UpdateOne(model);
  183. if (b)
  184. {
  185. return Success("保存成功");
  186. }
  187. else
  188. return Error("保存失败");
  189. }
  190. return Error("操作失败");
  191. }
  192. /// <summary>
  193. /// 删除配送物品
  194. /// </summary>
  195. /// <param name="ids"></param>
  196. /// <returns></returns>
  197. [HttpPost("delete")]
  198. public async Task<IActionResult> DeleteAsync(string[] ids)
  199. {
  200. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  201. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  202. //使用逻辑删除
  203. var res = 0;
  204. if (ids != null && ids.Length > 0)
  205. {
  206. foreach (var id in ids)
  207. {
  208. var model = await _distri_goodsrepository.GetSingle(id);
  209. model.isdelete = 1;
  210. model.deleteby = usercode;
  211. model.deletetime = DateTime.Now;
  212. if (await _distri_goodsrepository.UpdateOne(model))
  213. {
  214. res += 1;
  215. }
  216. }
  217. if (res == ids.Length)
  218. return Success("删除成功");
  219. else if (res > 0 && res < ids.Length)
  220. return Error("部分删除失败");
  221. else
  222. return Error("删除失败");
  223. }
  224. else
  225. return Error("请选择要删除的记录");
  226. }
  227. #region 方法
  228. /// <summary>
  229. /// 获取物品分类id list<string> - 递归
  230. /// </summary>
  231. /// <param name="list"></param>
  232. /// <param name="pid"></param>
  233. /// <returns></returns>
  234. List<string> listIds = new List<string>();
  235. public List<string> GetGoodsTypeIds(List<Distri_Goods_Type> list, string kindid)
  236. {
  237. string kindid_init = kindid;
  238. var lists = list.Where(x => x.parent_id == kindid).ToList();
  239. if (lists != null && lists.Count > 0)
  240. {
  241. //有多级子级
  242. foreach (var item in lists)
  243. {
  244. if (item != null)
  245. {
  246. string id = item.id;
  247. listIds.Add(item.id);
  248. GetGoodsTypeIds(list, id);
  249. }
  250. }
  251. }
  252. else {
  253. listIds.Add(kindid_init);
  254. }
  255. return listIds;
  256. }
  257. #endregion
  258. }
  259. }