Commit 544fd30bb8bcf571861c1d9c21a4dc0bd89a833f

Authored by “wangming”
1 parent 6dd1b9bf

feat: 增强LqKdKdjlbService的删除逻辑,添加消耗记录和储扣记录检查

- 在批量删除和单条删除方法中添加对消耗记录和储扣记录的检查,防止删除已消耗或有储扣的开单记录
- 引入新的实体类以支持检查逻辑,确保数据一致性和完整性
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
... ... @@ -20,15 +20,17 @@ using NCC.Extend.Entitys.Dto.Common;
20 20 using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
21 21 using NCC.Extend.Entitys.Dto.LqKdKdjlb;
22 22 using NCC.Extend.Entitys.Enum;
  23 +using NCC.Extend.Entitys.lq_hytk_hytk;
23 24 using NCC.Extend.Entitys.lq_hytk_mx;
24 25 using NCC.Extend.Entitys.lq_jinsanjiao_user;
25 26 using NCC.Extend.Entitys.lq_kd_deductinfo;
  27 +using NCC.Extend.Entitys.lq_xh_hyhk;
  28 +using NCC.Extend.Entitys.lq_xh_pxmx;
26 29 using NCC.Extend.Entitys.lq_kd_jksyj;
27 30 using NCC.Extend.Entitys.lq_kd_kdjlb;
28 31 using NCC.Extend.Entitys.lq_kd_kjbsyj;
29 32 using NCC.Extend.Entitys.lq_kd_pxmx;
30 33 using NCC.Extend.Entitys.lq_khxx;
31   -using NCC.Extend.Entitys.lq_xh_pxmx;
32 34 using NCC.Extend.Entitys.lq_xmzl;
33 35 using NCC.Extend.Interfaces.LqKdKdjlb;
34 36 using NCC.Extend.Utils;
... ... @@ -841,6 +843,22 @@ namespace NCC.Extend.LqKdKdjlb
841 843 {
842 844 //开启事务
843 845 _db.BeginTran();
  846 + // 检查是否有消耗记录
  847 + var billingItemIds = await _db.Queryable<LqKdPxmxEntity>().Where(p => ids.Contains(p.Glkdbh)).Select(p => p.Id).ToListAsync();
  848 + if (billingItemIds.Any())
  849 + {
  850 + var consumeRecords = await _db.Queryable<LqXhPxmxEntity>().Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()).Where(x => billingItemIds.Contains(x.BillingItemId)).AnyAsync();
  851 + if (consumeRecords)
  852 + {
  853 + throw NCCException.Oh("选中的开单记录中有已消耗的记录,不能删除");
  854 + }
  855 + }
  856 + // 检查是否有储扣记录
  857 + var deductRecords = await _db.Queryable<LqKdDeductinfoEntity>().Where(x => ids.Contains(x.BillingId) && x.IsEffective == StatusEnum.有效.GetHashCode()).AnyAsync();
  858 + if (deductRecords)
  859 + {
  860 + throw NCCException.Oh("选中的开单记录中有储扣记录,不能删除");
  861 + }
844 862 //批量删除开单记录表
845 863 await _db.Deleteable<LqKdKdjlbEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
846 864  
... ... @@ -1038,6 +1056,26 @@ namespace NCC.Extend.LqKdKdjlb
1038 1056 {
1039 1057 //开启事务
1040 1058 _db.BeginTran();
  1059 + //先查询开单品项明细
  1060 + var lqPxmxList = _db.Queryable<LqKdPxmxEntity>().Where(x => x.Glkdbh == id).ToList();
  1061 + //判断是否有对应的消耗记录
  1062 + var consumeRecords = await _db.Queryable<LqXhPxmxEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.BillingItemId)).AnyAsync();
  1063 + if (consumeRecords)
  1064 + {
  1065 + throw NCCException.Oh("选中的开单记录中有已消耗的记录,不能删除");
  1066 + }
  1067 + //判断是否有对应的退卡记录
  1068 + var refundRecords = await _db.Queryable<LqHytkMxEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.BillingItemId)).AnyAsync();
  1069 + if (refundRecords)
  1070 + {
  1071 + throw NCCException.Oh("选中的开单记录中有退卡记录,不能删除");
  1072 + }
  1073 + //判断是否有对应的储扣记录
  1074 + var deductRecords = await _db.Queryable<LqKdDeductinfoEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.DeductId)).AnyAsync();
  1075 + if (deductRecords)
  1076 + {
  1077 + throw NCCException.Oh("选中的开单记录中有储扣记录,不能删除");
  1078 + }
1041 1079  
1042 1080 //删除开单记录表记录
1043 1081 await _db.Deleteable<LqKdKdjlbEntity>().Where(d => d.Id == id).ExecuteCommandAsync();
... ...