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.

620 lines
25 KiB

2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
  1. using Shentun.Peis.Enums;
  2. using Shentun.Peis.Models;
  3. using Shentun.Peis.RegisterCheckSuggestions;
  4. using Shentun.Peis.RegisterCheckSummarys;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Volo.Abp;
  11. using Volo.Abp.Domain.Repositories;
  12. using Volo.Abp.Domain.Services;
  13. using Volo.Abp.Identity;
  14. using Volo.Abp.Users;
  15. namespace Shentun.Peis.RegisterChecks
  16. {
  17. /// <summary>
  18. /// 登记检查单
  19. /// </summary>
  20. public class RegisterCheckManager : DomainService
  21. {
  22. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  23. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  24. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  25. private readonly IRepository<SysParmValue> _sysParmValueRepository;
  26. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  27. private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
  28. private readonly IRepository<IdentityUser, Guid> _usersRepository;
  29. private readonly IRepository<IdentityUserOrganizationUnit> _identityUserOrganizationUnitRepository;
  30. private readonly RegisterCheckSummaryManager _registerCheckSummaryManager;
  31. private readonly RegisterCheckSuggestionManager _registerCheckSuggestionManager;
  32. private readonly CurrentUser _currentUser;
  33. public RegisterCheckManager(IRepository<RegisterCheck, Guid> registerCheckRepository,
  34. IRepository<SysParmValue> sysParmValueRepository,
  35. IRepository<CustomerOrg, Guid> customerOrgRepository,
  36. IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
  37. CurrentUser currentUser,
  38. IRepository<RegisterCheckItem> registerCheckItemRepository,
  39. RegisterCheckSummaryManager registerCheckSummaryManager,
  40. RegisterCheckSuggestionManager registerCheckSuggestionManager,
  41. IRepository<PatientRegister, Guid> patientRegisterRepository,
  42. IRepository<IdentityUser, Guid> usersRepository,
  43. IRepository<IdentityUserOrganizationUnit> identityUserOrganizationUnitRepository)
  44. {
  45. this._registerCheckRepository = registerCheckRepository;
  46. this._sysParmValueRepository = sysParmValueRepository;
  47. this._customerOrgRepository = customerOrgRepository;
  48. this._primarykeyBuilderRepository = primarykeyBuilderRepository;
  49. this._currentUser = currentUser;
  50. this._registerCheckItemRepository = registerCheckItemRepository;
  51. this._registerCheckSummaryManager = registerCheckSummaryManager;
  52. this._registerCheckSuggestionManager = registerCheckSuggestionManager;
  53. _patientRegisterRepository = patientRegisterRepository;
  54. _usersRepository = usersRepository;
  55. _identityUserOrganizationUnitRepository = identityUserOrganizationUnitRepository;
  56. }
  57. /// <summary>
  58. /// 添加数据
  59. /// </summary>
  60. /// <param name="ent"></param>
  61. /// <returns></returns>
  62. public async Task<RegisterCheck> CreateAsync(RegisterCheck ent)
  63. {
  64. return await _registerCheckRepository.InsertAsync(ent);
  65. }
  66. /// <summary>
  67. /// 修改检查状态 0(为未检), 1(已检), 2(弃检)
  68. /// </summary>
  69. /// <param name="RegisterCheckId">检查单ID</param>
  70. /// <param name="CompleteFlag">检查状态</param>
  71. /// <returns></returns>
  72. public async Task<RegisterCheck> UpdateCompleteAsync(Guid RegisterCheckId, char CompleteFlag)
  73. {
  74. var registerCheckEnt = await _registerCheckRepository.GetAsync(RegisterCheckId);
  75. //if (registerCheckEnt == null)
  76. // throw new UserFriendlyException($"数据有误");
  77. if (CompleteFlag != RegisterCheckCompleteFlag.UnChecked && CompleteFlag != RegisterCheckCompleteFlag.GiveUpChecked)
  78. {
  79. throw new UserFriendlyException("只能删除结果和弃检时使用,禁止调用");
  80. }
  81. var patientRegister = await _patientRegisterRepository.GetAsync(registerCheckEnt.PatientRegisterId);
  82. if (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  83. {
  84. throw new UserFriendlyException("已总检,不能修改检查状态");
  85. }
  86. if (patientRegister.IsLock == 'Y')
  87. {
  88. throw new UserFriendlyException("人员登记信息已加锁,不能修改检查状态");
  89. }
  90. if (registerCheckEnt.IsLock == 'Y')
  91. {
  92. throw new UserFriendlyException("组合项目已加锁,不能修改检查状态");
  93. }
  94. var count = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == patientRegister.Id &&
  95. o.Id != RegisterCheckId && o.CompleteFlag != RegisterCheckCompleteFlag.UnChecked).Count();
  96. if (count == 0)
  97. {
  98. patientRegister.CompleteFlag = PatientRegisterCompleteFlag.Registration;
  99. await _patientRegisterRepository.UpdateAsync(patientRegister);
  100. }
  101. registerCheckEnt.CompleteFlag = CompleteFlag;
  102. if (registerCheckEnt.CompleteFlag == RegisterCheckCompleteFlag.UnChecked)
  103. {
  104. registerCheckEnt.CheckDoctorId = null;
  105. registerCheckEnt.ExecOrganizationUnitId = null;
  106. registerCheckEnt.CheckDate = null;
  107. }
  108. var result = await _registerCheckRepository.UpdateAsync(registerCheckEnt);
  109. if (registerCheckEnt.CompleteFlag == RegisterCheckCompleteFlag.UnChecked)
  110. {
  111. List<RegisterCheckItem> registerCheckItems = await _registerCheckItemRepository.GetListAsync(m => m.RegisterCheckId == RegisterCheckId);
  112. foreach (var item in registerCheckItems)
  113. {
  114. item.Result = "";
  115. }
  116. await _registerCheckItemRepository.UpdateManyAsync(registerCheckItems);
  117. await _registerCheckSummaryManager.CheckAndDeleteAsync(RegisterCheckId);
  118. await _registerCheckSuggestionManager.CheckAndDeleteAsync(RegisterCheckId);
  119. }
  120. return result;
  121. }
  122. /// <summary>
  123. /// 更新审核状态 Y 已审核 N 未审核
  124. /// </summary>
  125. /// <param name="RegisterCheckId">检查单ID</param>
  126. /// <param name="IsAudit">审核状态( Y 已审核 N 未审核)</param>
  127. /// <returns></returns>
  128. public async Task<RegisterCheck> UpdateIsAuditAsync(Guid RegisterCheckId, char IsAudit)
  129. {
  130. var registerCheckEnt = await _registerCheckRepository.GetAsync(RegisterCheckId);
  131. if (registerCheckEnt == null)
  132. throw new UserFriendlyException($"数据有误");
  133. registerCheckEnt.IsAudit = IsAudit;
  134. return await _registerCheckRepository.UpdateAsync(registerCheckEnt);
  135. }
  136. /// <summary>
  137. /// 更改检查医生(自动更新完成状态为已检)
  138. /// </summary>
  139. /// <param name="entitydto"></param>
  140. /// <param name="entity"></param>
  141. /// <returns></returns>
  142. /// <exception cref="UserFriendlyException"></exception>
  143. public async Task<RegisterCheck> UpdateCheckDoctorAsync(
  144. RegisterCheck entitydto,
  145. RegisterCheck entity)
  146. {
  147. if (entity == null)
  148. {
  149. throw new UserFriendlyException("请求参数有误");
  150. }
  151. if (entitydto.CheckDate == null)
  152. entity.CheckDate = DateTime.Now;
  153. else
  154. entity.CheckDate = entitydto.CheckDate;
  155. if (string.IsNullOrWhiteSpace(entitydto.CheckDoctorId))
  156. {
  157. entitydto.CheckDoctorId = _currentUser.Id.ToString();
  158. }
  159. entity.CheckDoctorId = entitydto.CheckDoctorId;
  160. entity.CompleteFlag = RegisterCheckCompleteFlag.Checked;
  161. return await _registerCheckRepository.UpdateAsync(entity);
  162. }
  163. public void UpdateCheckDoctorAndDateAsync(
  164. PatientRegister patientRegister,
  165. RegisterCheck entity,
  166. string checkDoctorId,
  167. DateTime? checkDate,
  168. Guid? execOrganizationUnitId
  169. )
  170. {
  171. if (entity == null)
  172. {
  173. throw new UserFriendlyException("请求参数有误");
  174. }
  175. if (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  176. {
  177. throw new UserFriendlyException("已总检不允许修改");
  178. }
  179. if (patientRegister.IsLock == 'Y')
  180. {
  181. throw new UserFriendlyException("人员已加锁不允许修改");
  182. }
  183. if (entity.IsLock == 'Y')
  184. {
  185. throw new UserFriendlyException("检查项目已加锁不允许修改");
  186. }
  187. if (checkDate == null)
  188. entity.CheckDate = DateTime.Now;
  189. else
  190. entity.CheckDate = checkDate;
  191. if (string.IsNullOrWhiteSpace(checkDoctorId))
  192. {
  193. checkDoctorId = _currentUser.Id.ToString();
  194. }
  195. entity.CheckDoctorId = checkDoctorId;
  196. entity.CompleteFlag = RegisterCheckCompleteFlag.Checked;
  197. if(execOrganizationUnitId != null && execOrganizationUnitId != Guid.Empty)
  198. {
  199. entity.ExecOrganizationUnitId = execOrganizationUnitId;
  200. }
  201. else
  202. {
  203. if(Guid.TryParse(entity.CheckDoctorId,out var checkDoctorIdGuid))
  204. {
  205. var identityUserOrganizationUnit = _identityUserOrganizationUnitRepository.GetAsync(o => o.UserId == checkDoctorIdGuid).Result;
  206. entity.ExecOrganizationUnitId = identityUserOrganizationUnit.OrganizationUnitId;
  207. }
  208. }
  209. }
  210. /// <summary>
  211. /// 更改危警值内容
  212. /// </summary>
  213. /// <param name="entitydto"></param>
  214. /// <param name="entity"></param>
  215. /// <returns></returns>
  216. /// <exception cref="UserFriendlyException"></exception>
  217. public async Task<RegisterCheck> UpdateCriticalValueAsync(
  218. RegisterCheck entitydto,
  219. RegisterCheck entity)
  220. {
  221. if (entity == null)
  222. {
  223. throw new UserFriendlyException("请求参数有误");
  224. }
  225. entity.CriticalRangeValue = entitydto.CriticalRangeValue;
  226. //if (entitydto.CriticalValueCreateDate == null)
  227. // entity.CriticalValueCreateDate = DateTime.Now;
  228. //else
  229. // entity.CriticalValueCreateDate = entitydto.CriticalValueCreateDate;
  230. //entity.CriticalValueContent = entitydto.CriticalValueContent;
  231. //if (entitydto.CriticalValueProcessDate == null)
  232. // entity.CriticalValueProcessDate = DateTime.Now;
  233. //else
  234. // entity.CriticalValueProcessDate = entitydto.CriticalValueProcessDate;
  235. entity.IsCriticalValue = entitydto.IsCriticalValue;
  236. //entity.CriticalValueProcessDoctor = entitydto.CriticalValueProcessDoctor;
  237. //entity.CriticalValueProcessFlag = entitydto.CriticalValueProcessFlag;
  238. return await _registerCheckRepository.UpdateAsync(entity);
  239. }
  240. /// <summary>
  241. /// 更改审核医生(自动更新审核状态为已审核)
  242. /// </summary>
  243. /// <param name="entitydto"></param>
  244. /// <param name="entity"></param>
  245. /// <returns></returns>
  246. /// <exception cref="UserFriendlyException"></exception>
  247. public async Task<RegisterCheck> UpdateAuditorDoctorAsync(
  248. RegisterCheck entitydto,
  249. RegisterCheck entity)
  250. {
  251. if (entity == null)
  252. {
  253. throw new UserFriendlyException("请求参数有误");
  254. }
  255. //取当前登录用户ID
  256. entity.AuditorUserId = _currentUser.Id;
  257. if (entitydto.AuditTime == null)
  258. entity.AuditTime = DateTime.Now;
  259. else
  260. entity.AuditTime = entitydto.AuditTime;
  261. entity.IsAudit = 'Y';
  262. return await _registerCheckRepository.UpdateAsync(entity);
  263. }
  264. ///// <summary>
  265. ///// 生成检查单号
  266. ///// </summary>
  267. ///// <param name="CustomerOrgId">单位ID </param>
  268. ///// <returns></returns>
  269. //public async Task<string> CreateCheckRequestNo(Guid? CustomerOrgId)
  270. //{
  271. // string PatientNo = "";
  272. // string prefix = ""; //前缀
  273. // int lastLength = 4;
  274. // List<SysParmValue> spvlist = await _sysParmValueRepository.GetListAsync();
  275. // if (CustomerOrgId == null || CustomerOrgId == Guid.Empty)
  276. // {
  277. // //个人
  278. // spvlist = spvlist.Where(m => m.OrganizationUnitId == Guid.Empty).ToList();
  279. // }
  280. // else
  281. // {
  282. // var OrganizationUnitId = (await _customerOrgRepository.FindAsync(m => m.Id == CustomerOrgId)).OrganizationUnitId;
  283. // if (OrganizationUnitId == null || OrganizationUnitId == Guid.Empty)
  284. // {
  285. // spvlist = spvlist.Where(m => m.OrganizationUnitId == Guid.Empty).ToList();
  286. // }
  287. // else
  288. // {
  289. // spvlist = spvlist.Where(m => m.OrganizationUnitId == OrganizationUnitId).ToList();
  290. // }
  291. // }
  292. // var check_barcode_format_prefix = spvlist.Where(m => m.SysParmId == "check_barcode_format_prefix").FirstOrDefault(); //条码号建立规则--单位登记条码号开始值
  293. // var check_barcode_format_length = spvlist.Where(m => m.SysParmId == "check_barcode_format_length").FirstOrDefault(); //条码号建立规则--编码方式
  294. // if (check_barcode_format_length == null && CustomerOrgId != null && CustomerOrgId != Guid.Empty)
  295. // {
  296. // //组织下未找到参数,查找全局
  297. // spvlist = await _sysParmValueRepository.GetListAsync(m => m.OrganizationUnitId == Guid.Empty);
  298. // check_barcode_format_prefix = spvlist.Where(m => m.SysParmId == "check_barcode_format_prefix").FirstOrDefault(); //条码号建立规则--单位登记条码号开始值
  299. // check_barcode_format_length = spvlist.Where(m => m.SysParmId == "check_barcode_format_length").FirstOrDefault(); //条码号建立规则--编码方式
  300. // }
  301. // if (check_barcode_format_length != null)
  302. // {
  303. // lastLength = Convert.ToInt32(check_barcode_format_length.ParmValue); //尾号长度
  304. // }
  305. // if (check_barcode_format_prefix != null)
  306. // {
  307. // prefix = check_barcode_format_prefix.ParmValue; //前缀
  308. // }
  309. // var primarykeyBuilderEnt = await _primarykeyBuilderRepository.FindAsync(f => f.PrimarykeyBuilderId == "register_check");
  310. // string maxnum = "0";
  311. // string date = DateTime.Now.ToString("yyyyMMdd");// 当天
  312. // //日期+尾号 个人1开始
  313. // #region 日期+尾号
  314. // if (primarykeyBuilderEnt != null)
  315. // {
  316. // if (primarykeyBuilderEnt.DateString == date)
  317. // {
  318. // //当天
  319. // //个人
  320. // maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
  321. // }
  322. // else
  323. // {
  324. // //已更换日期 重新初始化
  325. // //个人
  326. // maxnum = (Convert.ToInt32(maxnum) + 1).ToString();
  327. // }
  328. // //
  329. // primarykeyBuilderEnt.DateString = date;
  330. // primarykeyBuilderEnt.SerialNo = maxnum;
  331. // await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt);
  332. // }
  333. // else
  334. // {
  335. // //初始写入
  336. // maxnum = (Convert.ToInt32(maxnum) + 1).ToString();
  337. // primarykeyBuilderEnt = new PrimarykeyBuilder
  338. // {
  339. // DateString = date,
  340. // PrimarykeyBuilderId = "register_check",
  341. // SerialNo = maxnum,
  342. // };
  343. // await _primarykeyBuilderRepository.InsertAsync(primarykeyBuilderEnt);
  344. // }
  345. // #endregion
  346. // PatientNo = prefix + DateTime.Now.ToString("yyyyMMdd") + maxnum.PadLeft(lastLength, '0');
  347. // return PatientNo;
  348. //}
  349. /// <summary>
  350. /// 生成检查单号(规则,先找体检中心的配置,如未找到,就直接使用全局的)
  351. /// 模式(0 日期+尾号 1.顺序递增)
  352. /// </summary>
  353. /// <param name="OrganizationUnitId">体检中心ID</param>
  354. /// <returns></returns>
  355. public async Task<string> CreateCheckRequestNo(Guid OrganizationUnitId)
  356. {
  357. //register_check CheckRequestNo
  358. string CheckRequestNo = ""; //检查单号
  359. List<SysParmValue> spvlist = await _sysParmValueRepository.GetListAsync();
  360. var spv_tjzx = spvlist.Where(m => m.MedicalCenterId == OrganizationUnitId); //体检中心配置
  361. var spv_global = spvlist.Where(m => m.MedicalCenterId == Guid.Empty); //全局配置
  362. var check_request_no_rule_coding = "0"; // 模式(0 日期+尾号 1.顺序递增)
  363. var check_request_no_rule_tail_len = "4"; //尾号长度
  364. var check_request_no_rule_prefix = ""; //前缀
  365. if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").Count() > 0)
  366. {
  367. //获取体检中心配置
  368. check_request_no_rule_coding = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault().ParmValue;
  369. }
  370. if (string.IsNullOrWhiteSpace(check_request_no_rule_coding))
  371. {
  372. var check_request_no_rule_coding_ent = spv_global.Where(m => m.SysParmId == "check_request_no_rule_coding").FirstOrDefault();
  373. if (check_request_no_rule_coding_ent == null)
  374. {
  375. throw new UserFriendlyException("全局系统参数check_request_no_rule_coding未配置");
  376. }
  377. else
  378. {
  379. //获取全局配置
  380. check_request_no_rule_coding = check_request_no_rule_coding_ent.ParmValue;
  381. }
  382. }
  383. if (string.IsNullOrWhiteSpace(check_request_no_rule_coding))
  384. {
  385. throw new UserFriendlyException("检查申请单号编码方式不能为空");
  386. }
  387. if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").Count() > 0)
  388. {
  389. //获取体检中心配置
  390. check_request_no_rule_tail_len = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault().ParmValue;
  391. }
  392. if (string.IsNullOrWhiteSpace(check_request_no_rule_tail_len))
  393. {
  394. var check_request_no_rule_tail_len_ent = spv_global.Where(m => m.SysParmId == "check_request_no_rule_tail_len").FirstOrDefault();
  395. if (check_request_no_rule_tail_len_ent == null)
  396. {
  397. throw new UserFriendlyException("全局系统参数check_request_no_rule_tail_len未配置");
  398. }
  399. else
  400. {
  401. //获取全局配置
  402. check_request_no_rule_tail_len = check_request_no_rule_tail_len_ent.ParmValue;
  403. }
  404. }
  405. if (spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix").Count() > 0)
  406. {
  407. //获取体检中心配置
  408. check_request_no_rule_prefix = spv_tjzx.Where(m => m.SysParmId == "check_request_no_rule_prefix").FirstOrDefault().ParmValue;
  409. }
  410. if (string.IsNullOrWhiteSpace(check_request_no_rule_prefix))
  411. {
  412. var check_request_no_rule_prefix_ent = spv_global.Where(m => m.SysParmId == "check_request_no_rule_prefix").FirstOrDefault();
  413. if (check_request_no_rule_prefix_ent == null)
  414. {
  415. throw new UserFriendlyException("全局系统参数check_request_no_rule_prefix未配置");
  416. }
  417. else
  418. {
  419. //获取全局配置
  420. check_request_no_rule_prefix = check_request_no_rule_prefix_ent.ParmValue;
  421. }
  422. }
  423. if (string.IsNullOrWhiteSpace(check_request_no_rule_tail_len))
  424. {
  425. throw new UserFriendlyException("检查申请单号尾号长度不能为空");
  426. }
  427. int tailLen;
  428. if (!int.TryParse(check_request_no_rule_tail_len, out tailLen))
  429. {
  430. throw new UserFriendlyException("检查申请单号尾号长度必须是数字");
  431. };
  432. if (tailLen < 4)
  433. {
  434. throw new UserFriendlyException("检查申请单号尾号长度必须大于等于4");
  435. }
  436. var primarykeyBuilderEnt = await _primarykeyBuilderRepository.FirstOrDefaultAsync(f => f.PrimarykeyBuilderId == "check_request_no");
  437. string maxnum = "1";
  438. string date = DateTime.Now.ToString("yyMMdd");// 当天
  439. if (check_request_no_rule_coding == "0")
  440. {
  441. //日期+尾号
  442. #region 模式0 日期+尾号
  443. if (primarykeyBuilderEnt != null)
  444. {
  445. if (primarykeyBuilderEnt.DateString != date)
  446. {
  447. //新的日期 为1 maxnum
  448. primarykeyBuilderEnt.DateString = date;
  449. maxnum = "1";
  450. }
  451. else
  452. {
  453. maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
  454. }
  455. primarykeyBuilderEnt.SerialNo = maxnum; //更新新的序列号
  456. CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
  457. await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt);
  458. }
  459. else
  460. {
  461. //初始写入
  462. CheckRequestNo = check_request_no_rule_prefix + date + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
  463. primarykeyBuilderEnt = new PrimarykeyBuilder
  464. {
  465. PrimarykeyBuilderId = "check_request_no",
  466. DateString = date,
  467. SerialNo = maxnum
  468. };
  469. await _primarykeyBuilderRepository.InsertAsync(primarykeyBuilderEnt,true);
  470. }
  471. #endregion
  472. }
  473. else
  474. {
  475. //模式1 顺序递增
  476. #region 模式1 顺序递增
  477. if (primarykeyBuilderEnt != null)
  478. {
  479. maxnum = (Convert.ToInt32(primarykeyBuilderEnt.SerialNo) + 1).ToString();
  480. primarykeyBuilderEnt.SerialNo = maxnum; //更新num
  481. await _primarykeyBuilderRepository.UpdateAsync(primarykeyBuilderEnt);
  482. }
  483. else
  484. {
  485. //初始写入
  486. primarykeyBuilderEnt = new PrimarykeyBuilder
  487. {
  488. PrimarykeyBuilderId = "check_request_no",
  489. DateString = "",
  490. SerialNo = maxnum
  491. };
  492. await _primarykeyBuilderRepository.InsertAsync(primarykeyBuilderEnt,true);
  493. }
  494. CheckRequestNo = check_request_no_rule_prefix + maxnum.PadLeft(Convert.ToInt32(check_request_no_rule_tail_len), '0');
  495. #endregion
  496. }
  497. return CheckRequestNo;
  498. }
  499. /// <summary>
  500. /// 批量
  501. /// </summary>
  502. /// <param name="RegisterCheckIds">RegisterCheck表ID 集合</param>
  503. /// <returns></returns>
  504. /// <exception cref="UserFriendlyException"></exception>
  505. public async Task CheckAndDeleteAsync(List<Guid> RegisterCheckIds)
  506. {
  507. if (RegisterCheckIds.Count > 0)
  508. {
  509. var registerCheckCriticalValueList = await _registerCheckRepository.GetListAsync(m => RegisterCheckIds.Contains(m.Id));
  510. if (registerCheckCriticalValueList.Any())
  511. {
  512. await _registerCheckRepository.DeleteManyAsync(registerCheckCriticalValueList);
  513. }
  514. }
  515. else
  516. {
  517. throw new UserFriendlyException("数据不存在");
  518. }
  519. }
  520. }
  521. }