Blame view

netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs 31 KB
d98270e2   “wangming”   Enhance LqEventSe...
1
2
3
4
5
6
7
8
9
10
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Threading.Tasks;
  using Mapster;
  using Microsoft.AspNetCore.Mvc;
  using Microsoft.Extensions.Logging;
  using NCC.ClayObject;
  using NCC.Common.Configuration;
  using NCC.Common.Core.Manager;
96009bc9   hexiaodong   hxd
11
12
13
  using NCC.Common.Enum;
  using NCC.Common.Extension;
  using NCC.Common.Filter;
d98270e2   “wangming”   Enhance LqEventSe...
14
15
16
  using NCC.Common.Helper;
  using NCC.Common.Model.NPOI;
  using NCC.DataEncryption;
96009bc9   hexiaodong   hxd
17
18
  using NCC.Dependency;
  using NCC.DynamicApiController;
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
19
  using NCC.Extend.Entitys.Dto.LqXhHyhk;
d98270e2   “wangming”   Enhance LqEventSe...
20
21
22
23
24
25
  using NCC.Extend.Entitys.Dto.LqXhJksyj;
  using NCC.Extend.Entitys.Dto.LqXhKjbsyj;
  using NCC.Extend.Entitys.Dto.LqXhPxmx;
  using NCC.Extend.Entitys.lq_kd_kdjlb;
  using NCC.Extend.Entitys.lq_kd_pxmx;
  using NCC.Extend.Entitys.lq_khxx;
efde7d04   “wangming”   更新多个文件,删除不再使用的CSS...
26
27
28
29
  using NCC.Extend.Entitys.lq_xh_hyhk;
  using NCC.Extend.Entitys.lq_xh_jksyj;
  using NCC.Extend.Entitys.lq_xh_kjbsyj;
  using NCC.Extend.Entitys.lq_xh_pxmx;
d98270e2   “wangming”   Enhance LqEventSe...
30
31
  using NCC.Extend.Interfaces.LqXhHyhk;
  using NCC.FriendlyException;
96009bc9   hexiaodong   hxd
32
  using NCC.JsonSerialization;
d98270e2   “wangming”   Enhance LqEventSe...
33
34
  using SqlSugar;
  using Yitter.IdGenerator;
96009bc9   hexiaodong   hxd
35
36
37
38
  
  namespace NCC.Extend.LqXhHyhk
  {
      /// <summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
39
      /// 耗卡记录表服务
96009bc9   hexiaodong   hxd
40
      /// </summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
41
      [ApiDescriptionSettings(Tag = "绿纤耗卡记录表服务", Name = "LqXhHyhk", Order = 200, Groups = new[] { "Default" })]
96009bc9   hexiaodong   hxd
42
43
44
45
46
47
48
49
50
      [Route("api/Extend/[controller]")]
      public class LqXhHyhkService : ILqXhHyhkService, IDynamicApiController, ITransient
      {
          private readonly ISqlSugarRepository<LqXhHyhkEntity> _lqXhHyhkRepository;
          private readonly ISqlSugarRepository<LqXhJksyjEntity> _lqXhJksyjRepository;
          private readonly ISqlSugarRepository<LqXhKjbsyjEntity> _lqXhKjbsyjRepository;
          private readonly ISqlSugarRepository<LqXhPxmxEntity> _lqXhPxmxRepository;
          private readonly SqlSugarScope _db;
          private readonly IUserManager _userManager;
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
51
          private readonly ILogger<LqXhHyhkService> _logger;
96009bc9   hexiaodong   hxd
52
53
54
55
56
57
58
59
60
  
          /// <summary>
          /// 初始化一个<see cref="LqXhHyhkService"/>类型的新实例
          /// </summary>
          public LqXhHyhkService(
              ISqlSugarRepository<LqXhHyhkEntity> lqXhHyhkRepository,
              ISqlSugarRepository<LqXhJksyjEntity> lqXhJksyjRepository,
              ISqlSugarRepository<LqXhKjbsyjEntity> lqXhKjbsyjRepository,
              ISqlSugarRepository<LqXhPxmxEntity> lqXhPxmxRepository,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
61
              IUserManager userManager,
d98270e2   “wangming”   Enhance LqEventSe...
62
63
              ILogger<LqXhHyhkService> logger
          )
96009bc9   hexiaodong   hxd
64
          {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
65
              _lqXhHyhkRepository = lqXhHyhkRepository;
96009bc9   hexiaodong   hxd
66
67
68
69
70
              _db = _lqXhHyhkRepository.Context;
              _lqXhJksyjRepository = lqXhJksyjRepository;
              _lqXhKjbsyjRepository = lqXhKjbsyjRepository;
              _lqXhPxmxRepository = lqXhPxmxRepository;
              _userManager = userManager;
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
71
              _logger = logger;
96009bc9   hexiaodong   hxd
72
73
          }
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
74
          #region 获取会员耗卡
96009bc9   hexiaodong   hxd
75
76
77
          /// <summary>
          /// 获取会员耗卡
          /// </summary>
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
78
79
80
          /// <remarks>
          /// 获取耗卡记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
          /// 按照耗卡的完整格式返回数据,不包含汇总信息
d98270e2   “wangming”   Enhance LqEventSe...
81
          ///
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
82
83
84
85
86
87
88
89
90
91
92
          /// 返回数据结构:
          /// - 主表信息:耗卡基础信息、门店信息、会员信息等
          /// - 品项明细列表:每个品项包含完整的项目信息(项目次数、是否有效、来源类型等)
          /// - 健康师业绩列表:按品项关联的健康师业绩信息
          /// - 科技部老师业绩列表:按品项关联的科技部老师业绩信息
          /// </remarks>
          /// <param name="id">耗卡记录主键ID</param>
          /// <returns>耗卡记录完整信息</returns>
          /// <response code="200">查询成功</response>
          /// <response code="404">耗卡记录不存在</response>
          /// <response code="500">服务器内部错误</response>
96009bc9   hexiaodong   hxd
93
94
95
          [HttpGet("{id}")]
          public async Task<dynamic> GetInfo(string id)
          {
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
96
97
98
99
100
101
102
103
104
105
106
107
              try
              {
                  // 1. 查询主表信息
                  var entity = await _db.Queryable<LqXhHyhkEntity>().FirstAsync(p => p.Id == id);
                  if (entity == null)
                  {
                      throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在");
                  }
  
                  var output = entity.Adapt<LqXhHyhkInfoOutput>();
  
                  // 2. 查询品项明细列表
b45d55f7   “wangming”   Refactor LqEventS...
108
                  var lqXhPxmxList = await _db.Queryable<LqXhPxmxEntity>().Where(w => w.ConsumeInfoId == entity.Id).ToListAsync();
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
109
110
  
                  // 3. 查询健康师业绩列表
d98270e2   “wangming”   Enhance LqEventSe...
111
                  var lqXhJksyjList = await _db.Queryable<LqXhJksyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync();
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
112
113
  
                  // 4. 查询科技部老师业绩列表
d98270e2   “wangming”   Enhance LqEventSe...
114
                  var lqXhKjbsyjList = await _db.Queryable<LqXhKjbsyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync();
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
115
116
117
118
119
120
121
122
  
                  // 5. 构建品项明细输出,每个品项关联对应的业绩信息
                  var pxmxOutputList = new List<LqXhPxmxInfoOutput>();
                  foreach (var pxmx in lqXhPxmxList)
                  {
                      var pxmxOutput = new LqXhPxmxInfoOutput
                      {
                          id = pxmx.Id,
b45d55f7   “wangming”   Refactor LqEventS...
123
124
                          consumeInfoId = pxmx.ConsumeInfoId,
                          billingItemId = pxmx.BillingItemId,
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
125
126
127
                          px = pxmx.Px,
                          pxmc = pxmx.Pxmc,
                          pxjg = pxmx.Pxjg,
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
128
129
130
131
132
                          memberId = pxmx.MemberId,
                          createTime = pxmx.CreateTIme,
                          projectNumber = pxmx.ProjectNumber,
                          isEnabled = pxmx.IsEnabled,
                          sourceType = pxmx.SourceType,
d98270e2   “wangming”   Enhance LqEventSe...
133
                          totalPrice = pxmx.TotalPrice,
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
134
135
136
137
138
139
140
141
142
143
144
145
                      };
  
                      // 关联该品项的健康师业绩
                      var jksyjForPx = lqXhJksyjList.Where(j => j.Kdpxid == pxmx.Id).ToList();
                      pxmxOutput.lqXhJksyjList = jksyjForPx.Adapt<List<LqXhJksyjInfoOutput>>();
  
                      // 关联该品项的科技部老师业绩
                      var kjbsyjForPx = lqXhKjbsyjList.Where(k => k.Hkpxid == pxmx.Id).ToList();
                      pxmxOutput.lqXhKjbsyjList = kjbsyjForPx.Adapt<List<LqXhKjbsyjInfoOutput>>();
  
                      pxmxOutputList.Add(pxmxOutput);
                  }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
146
  
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
147
148
                  // 6. 设置输出结果
                  output.lqXhPxmxList = pxmxOutputList;
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
149
  
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
150
151
152
                  // 7. 设置全局业绩列表(用于兼容性,但主要使用品项关联的业绩)
                  output.lqXhJksyjList = lqXhJksyjList.Adapt<List<LqXhJksyjInfoOutput>>();
                  output.lqXhKjbsyjList = lqXhKjbsyjList.Adapt<List<LqXhKjbsyjInfoOutput>>();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
153
  
2b23ca5e   “wangming”   更新退卡相关功能,重构退卡信息表及...
154
155
156
157
158
159
160
                  return output;
              }
              catch (Exception ex)
              {
                  _logger.LogError(ex, "获取耗卡记录失败,ID:{Id}", id);
                  throw NCCException.Oh(ErrorCode.COM1000, "获取耗卡记录失败");
              }
96009bc9   hexiaodong   hxd
161
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
162
          #endregion
96009bc9   hexiaodong   hxd
163
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
164
          #region 获取会员耗卡列表
96009bc9   hexiaodong   hxd
165
          /// <summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
166
167
168
169
          /// 获取会员耗卡列表
          /// </summary>
          /// <param name="input">请求参数</param>
          /// <returns></returns>
96009bc9   hexiaodong   hxd
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
          [HttpGet("")]
          public async Task<dynamic> GetList([FromQuery] LqXhHyhkListQueryInput input)
          {
              var sidx = input.sidx == null ? "id" : input.sidx;
              List<string> queryHksj = input.hksj != null ? input.hksj.Split(',').ToObeject<List<string>>() : null;
              DateTime? startHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.First()) : null;
              DateTime? endHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.Last()) : null;
              var data = await _db.Queryable<LqXhHyhkEntity>()
                  .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
                  .WhereIF(!string.IsNullOrEmpty(input.md), p => p.Md.Equals(input.md))
                  .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh))
                  .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc))
                  .WhereIF(!string.IsNullOrEmpty(input.hy), p => p.Hy.Equals(input.hy))
                  .WhereIF(!string.IsNullOrEmpty(input.hyzh), p => p.Hyzh.Contains(input.hyzh))
                  .WhereIF(!string.IsNullOrEmpty(input.hymc), p => p.Hymc.Contains(input.hymc))
                  .WhereIF(!string.IsNullOrEmpty(input.gklx), p => p.Gklx.Equals(input.gklx))
                  .WhereIF(!string.IsNullOrEmpty(input.xfje), p => p.Xfje.Contains(input.xfje))
                  .WhereIF(!string.IsNullOrEmpty(input.sgfy), p => p.Sgfy.Contains(input.sgfy))
                  .WhereIF(!string.IsNullOrEmpty(input.sfykjb), p => p.Sfykjb.Equals(input.sfykjb))
                  .WhereIF(queryHksj != null, p => p.Hksj >= new DateTime(startHksj.ToDate().Year, startHksj.ToDate().Month, startHksj.ToDate().Day, 0, 0, 0))
                  .WhereIF(queryHksj != null, p => p.Hksj <= new DateTime(endHksj.ToDate().Year, endHksj.ToDate().Month, endHksj.ToDate().Day, 23, 59, 59))
                  .WhereIF(!string.IsNullOrEmpty(input.czry), p => p.Czry.Equals(input.czry))
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
192
                  .Select(it => new LqXhHyhkListOutput
96009bc9   hexiaodong   hxd
193
194
                  {
                      id = it.Id,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
195
196
197
198
199
200
201
202
203
204
205
206
                      md = it.Md,
                      mdbh = it.Mdbh,
                      mdmc = it.Mdmc,
                      hy = it.Hy,
                      hyzh = it.Hyzh,
                      hymc = it.Hymc,
                      gklx = it.Gklx,
                      xfje = it.Xfje,
                      sgfy = it.Sgfy,
                      sfykjb = it.Sfykjb,
                      hksj = it.Hksj,
                      czry = it.Czry,
d98270e2   “wangming”   Enhance LqEventSe...
207
208
209
210
                  })
                  .MergeTable()
                  .OrderBy(sidx + " " + input.sort)
                  .ToPagedListAsync(input.currentPage, input.pageSize);
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
211
              return PageResult<LqXhHyhkListOutput>.SqlSugarPageResult(data);
96009bc9   hexiaodong   hxd
212
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
213
          #endregion
96009bc9   hexiaodong   hxd
214
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
215
          #region 新建会员耗卡
96009bc9   hexiaodong   hxd
216
217
218
          /// <summary>
          /// 新建会员耗卡
          /// </summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
219
220
          /// <remarks>
          /// 创建会员耗卡记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
d98270e2   “wangming”   Enhance LqEventSe...
221
          ///
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
          /// 示例请求:
          /// ```json
          /// {
          ///   "hyid": "会员ID",
          ///   "hkmd": "耗卡门店",
          ///   "hksj": "2025-01-11",
          ///   "lqXhPxmxList": [
          ///     {
          ///       "px": "品项编号",
          ///       "pxmc": "品项名称",
          ///       "pxjg": 100.00,
          ///       "projectNumber": 1,
          ///       "xfzs": "否",
          ///       "lqXhJksyjList": [
          ///         {
          ///           "jks": "健康师",
          ///           "jksxm": "健康师姓名",
          ///           "jksyj": "100"
          ///         }
          ///       ]
          ///     }
          ///   ]
          /// }
          /// ```
d98270e2   “wangming”   Enhance LqEventSe...
246
          ///
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
247
248
249
250
251
252
253
254
255
256
          /// 参数说明:
          /// - hyid: 会员ID
          /// - hkmd: 耗卡门店
          /// - lqXhPxmxList: 耗卡品项明细列表
          /// </remarks>
          /// <param name="input">会员耗卡创建参数</param>
          /// <returns>无返回值</returns>
          /// <response code="200">创建成功</response>
          /// <response code="400">参数错误或数据验证失败</response>
          /// <response code="500">服务器内部错误</response>
96009bc9   hexiaodong   hxd
257
258
259
260
261
262
          [HttpPost("")]
          public async Task Create([FromBody] LqXhHyhkCrInput input)
          {
              var userInfo = await _userManager.GetUserInfo();
              var entity = input.Adapt<LqXhHyhkEntity>();
              entity.Id = YitIdHelper.NextId().ToString();
96009bc9   hexiaodong   hxd
263
              entity.Czry = _userManager.UserId;
d98270e2   “wangming”   Enhance LqEventSe...
264
              entity.CreateTime = DateTime.Now;
96009bc9   hexiaodong   hxd
265
266
              try
              {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
267
                  // 开启事务
96009bc9   hexiaodong   hxd
268
                  _db.BeginTran();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
269
                  // 新增会员耗卡记录
96009bc9   hexiaodong   hxd
270
                  var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
271
272
273
274
275
276
                  // 收集所有需要插入的实体,然后批量插入
                  var allPxmxEntities = new List<LqXhPxmxEntity>();
                  var allJksyjEntities = new List<LqXhJksyjEntity>();
                  var allKjbsyjEntities = new List<LqXhKjbsyjEntity>();
                  // 处理品项明细列表
                  if (input.lqXhPxmxList != null && input.lqXhPxmxList.Any())
96009bc9   hexiaodong   hxd
277
                  {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
278
                      foreach (var item in input.lqXhPxmxList)
96009bc9   hexiaodong   hxd
279
                      {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
280
281
282
283
                          // 创建品项明细实体
                          var lqXhPxmxEntity = new LqXhPxmxEntity
                          {
                              Id = YitIdHelper.NextId().ToString(),
b45d55f7   “wangming”   Refactor LqEventS...
284
285
                              ConsumeInfoId = newEntity.Id,
                              BillingItemId = item.billingItemId,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
286
287
288
289
290
291
292
293
                              CreateTIme = DateTime.Now,
                              MemberId = entity.Hy,
                              IsEnabled = 0,
                              ProjectNumber = item.projectNumber ?? 1,
                              TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),
                              Px = item.px,
                              Pxmc = item.pxmc,
                              Pxjg = item.pxjg,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
294
295
296
                              SourceType = item.sourceType,
                          };
                          allPxmxEntities.Add(lqXhPxmxEntity);
d98270e2   “wangming”   Enhance LqEventSe...
297
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
298
299
300
301
302
                          // 收集该品项关联的健康师业绩
                          if (item.lqXhJksyjList != null && item.lqXhJksyjList.Any())
                          {
                              foreach (var ijks_tem in item.lqXhJksyjList)
                              {
d98270e2   “wangming”   Enhance LqEventSe...
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
                                  allJksyjEntities.Add(
                                      new LqXhJksyjEntity
                                      {
                                          Id = YitIdHelper.NextId().ToString(),
                                          Glkdbh = newEntity.Id,
                                          Jks = ijks_tem.jks,
                                          Jksxm = ijks_tem.jksxm,
                                          Jkszh = ijks_tem.jkszh,
                                          Jksyj = ijks_tem.jksyj,
                                          Yjsj = DateTime.Now,
                                          JsjId = ijks_tem.jsjId,
                                          Kdpxid = lqXhPxmxEntity.Id,
                                          LaborCost = ijks_tem.laborCost,
                                          KdpxNumber = ijks_tem.kdpxNumber,
                                      }
                                  );
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
319
320
                              }
                          }
d98270e2   “wangming”   Enhance LqEventSe...
321
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
322
323
324
325
326
                          // 收集该品项关联的科技部老师业绩
                          if (item.lqXhKjbsyjList != null && item.lqXhKjbsyjList.Any())
                          {
                              foreach (var ikjbs_tem in item.lqXhKjbsyjList)
                              {
d98270e2   “wangming”   Enhance LqEventSe...
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
                                  allKjbsyjEntities.Add(
                                      new LqXhKjbsyjEntity
                                      {
                                          Id = YitIdHelper.NextId().ToString(),
                                          Glkdbh = newEntity.Id,
                                          Kjbls = ikjbs_tem.kjbls,
                                          Kjblsxm = ikjbs_tem.kjblsxm,
                                          Kjblszh = ikjbs_tem.kjblszh,
                                          Kjblsyj = ikjbs_tem.kjblsyj,
                                          Yjsj = DateTime.Now,
                                          Hkpxid = lqXhPxmxEntity.Id,
                                          LaborCost = ikjbs_tem.laborCost,
                                          HdpxNumber = ikjbs_tem.hdpxNumber,
                                      }
                                  );
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
342
343
                              }
                          }
96009bc9   hexiaodong   hxd
344
                      }
96009bc9   hexiaodong   hxd
345
                  }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
346
347
                  // 批量插入品项明细
                  if (allPxmxEntities.Any())
96009bc9   hexiaodong   hxd
348
                  {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
349
                      await _db.Insertable(allPxmxEntities).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
350
                  }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
351
352
                  // 批量插入健康师业绩
                  if (allJksyjEntities.Any())
96009bc9   hexiaodong   hxd
353
                  {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
354
                      await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
355
                  }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
356
357
358
359
360
361
                  // 批量插入科技部老师业绩
                  if (allKjbsyjEntities.Any())
                  {
                      await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
                  }
                  // 提交事务
96009bc9   hexiaodong   hxd
362
363
                  _db.CommitTran();
              }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
364
              catch (Exception ex)
96009bc9   hexiaodong   hxd
365
              {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
366
                  // 回滚事务
96009bc9   hexiaodong   hxd
367
                  _db.RollbackTran();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
368
369
370
                  Console.WriteLine($"新建会员耗卡失败: {ex.Message}");
                  Console.WriteLine($"堆栈跟踪: {ex.StackTrace}");
                  throw NCCException.Oh(ErrorCode.COM1000, $"新建会员耗卡失败: {ex.Message}");
96009bc9   hexiaodong   hxd
371
372
              }
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
373
          #endregion
96009bc9   hexiaodong   hxd
374
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
375
          #region 获取会员耗卡无分页列表
96009bc9   hexiaodong   hxd
376
          /// <summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
377
378
379
380
          /// 获取会员耗卡无分页列表
          /// </summary>
          /// <param name="input">请求参数</param>
          /// <returns></returns>
96009bc9   hexiaodong   hxd
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
          [NonAction]
          public async Task<dynamic> GetNoPagingList([FromQuery] LqXhHyhkListQueryInput input)
          {
              var sidx = input.sidx == null ? "id" : input.sidx;
              List<string> queryHksj = input.hksj != null ? input.hksj.Split(',').ToObeject<List<string>>() : null;
              DateTime? startHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.First()) : null;
              DateTime? endHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.Last()) : null;
              var data = await _db.Queryable<LqXhHyhkEntity>()
                  .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
                  .WhereIF(!string.IsNullOrEmpty(input.md), p => p.Md.Equals(input.md))
                  .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh))
                  .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc))
                  .WhereIF(!string.IsNullOrEmpty(input.hy), p => p.Hy.Equals(input.hy))
                  .WhereIF(!string.IsNullOrEmpty(input.hyzh), p => p.Hyzh.Contains(input.hyzh))
                  .WhereIF(!string.IsNullOrEmpty(input.hymc), p => p.Hymc.Contains(input.hymc))
                  .WhereIF(!string.IsNullOrEmpty(input.gklx), p => p.Gklx.Equals(input.gklx))
                  .WhereIF(!string.IsNullOrEmpty(input.xfje), p => p.Xfje.Contains(input.xfje))
                  .WhereIF(!string.IsNullOrEmpty(input.sgfy), p => p.Sgfy.Contains(input.sgfy))
                  .WhereIF(!string.IsNullOrEmpty(input.sfykjb), p => p.Sfykjb.Equals(input.sfykjb))
                  .WhereIF(queryHksj != null, p => p.Hksj >= new DateTime(startHksj.ToDate().Year, startHksj.ToDate().Month, startHksj.ToDate().Day, 0, 0, 0))
                  .WhereIF(queryHksj != null, p => p.Hksj <= new DateTime(endHksj.ToDate().Year, endHksj.ToDate().Month, endHksj.ToDate().Day, 23, 59, 59))
                  .WhereIF(!string.IsNullOrEmpty(input.czry), p => p.Czry.Equals(input.czry))
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
403
                  .Select(it => new LqXhHyhkListOutput
96009bc9   hexiaodong   hxd
404
405
                  {
                      id = it.Id,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
406
407
408
409
410
411
412
413
414
415
416
417
                      md = it.Md,
                      mdbh = it.Mdbh,
                      mdmc = it.Mdmc,
                      hy = it.Hy,
                      hyzh = it.Hyzh,
                      hymc = it.Hymc,
                      gklx = it.Gklx,
                      xfje = it.Xfje,
                      sgfy = it.Sgfy,
                      sfykjb = it.Sfykjb,
                      hksj = it.Hksj,
                      czry = it.Czry,
d98270e2   “wangming”   Enhance LqEventSe...
418
419
420
421
                  })
                  .MergeTable()
                  .OrderBy(sidx + " " + input.sort)
                  .ToListAsync();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
422
              return data;
96009bc9   hexiaodong   hxd
423
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
424
          #endregion
96009bc9   hexiaodong   hxd
425
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
426
          #region 导出会员耗卡
96009bc9   hexiaodong   hxd
427
          /// <summary>
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
428
429
430
431
          /// 导出会员耗卡
          /// </summary>
          /// <param name="input">请求参数</param>
          /// <returns></returns>
96009bc9   hexiaodong   hxd
432
433
434
435
436
437
438
439
440
441
442
443
444
445
          [HttpGet("Actions/Export")]
          public async Task<dynamic> Export([FromQuery] LqXhHyhkListQueryInput input)
          {
              var userInfo = await _userManager.GetUserInfo();
              var exportData = new List<LqXhHyhkListOutput>();
              if (input.dataType == 0)
              {
                  var data = Clay.Object(await this.GetList(input));
                  exportData = data.Solidify<PageResult<LqXhHyhkListOutput>>().list;
              }
              else
              {
                  exportData = await this.GetNoPagingList(input);
              }
d98270e2   “wangming”   Enhance LqEventSe...
446
447
              List<ParamsModel> paramList =
                  "[{\"value\":\"耗卡编号\",\"field\":\"id\"},{\"value\":\"门店\",\"field\":\"md\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"会员\",\"field\":\"hy\"},{\"value\":\"会员账号\",\"field\":\"hyzh\"},{\"value\":\"会员名称\",\"field\":\"hymc\"},{\"value\":\"顾客类型\",\"field\":\"gklx\"},{\"value\":\"消费金额\",\"field\":\"xfje\"},{\"value\":\"手工费用\",\"field\":\"sgfy\"},{\"value\":\"是否有科技部\",\"field\":\"sfykjb\"},{\"value\":\"耗卡时间\",\"field\":\"hksj\"},{\"value\":\"操作人员\",\"field\":\"czry\"},]".ToList<ParamsModel>();
96009bc9   hexiaodong   hxd
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
              ExcelConfig excelconfig = new ExcelConfig();
              excelconfig.FileName = "会员耗卡.xls";
              excelconfig.HeadFont = "微软雅黑";
              excelconfig.HeadPoint = 10;
              excelconfig.IsAllSizeColumn = true;
              excelconfig.ColumnModel = new List<ExcelColumnModel>();
              List<string> selectKeyList = input.selectKey.Split(',').ToList();
              foreach (var item in selectKeyList)
              {
                  var isExist = paramList.Find(p => p.field == item);
                  if (isExist != null)
                  {
                      excelconfig.ColumnModel.Add(new ExcelColumnModel() { Column = isExist.field, ExcelColumn = isExist.value });
                  }
              }
              var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
              ExcelExportHelper<LqXhHyhkListOutput>.Export(exportData, excelconfig, addPath);
              var fileName = _userManager.UserId + "|" + addPath + "|xls";
d98270e2   “wangming”   Enhance LqEventSe...
466
              var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
96009bc9   hexiaodong   hxd
467
468
              return output;
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
469
          #endregion
96009bc9   hexiaodong   hxd
470
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
471
          #region 批量删除会员耗卡
96009bc9   hexiaodong   hxd
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
          /// <summary>
          /// 批量删除会员耗卡
          /// </summary>
          /// <param name="ids">主键数组</param>
          /// <returns></returns>
          [HttpPost("batchRemove")]
          public async Task BatchRemove([FromBody] List<string> ids)
          {
              var entitys = await _db.Queryable<LqXhHyhkEntity>().In(it => it.Id, ids).ToListAsync();
              if (entitys.Count > 0)
              {
                  try
                  {
                      //开启事务
                      _db.BeginTran();
                      //批量删除会员耗卡
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
488
                      await _db.Deleteable<LqXhHyhkEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
489
490
  
                      //清空子表数据
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
491
                      await _db.Deleteable<LqXhJksyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
492
493
  
                      //清空子表数据
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
494
                      await _db.Deleteable<LqXhKjbsyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
495
496
  
                      //清空子表数据
b45d55f7   “wangming”   Refactor LqEventS...
497
                      await _db.Deleteable<LqXhPxmxEntity>().In(u => u.ConsumeInfoId, ids).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
498
499
500
501
502
503
504
505
506
507
508
                      //关闭事务
                      _db.CommitTran();
                  }
                  catch (Exception)
                  {
                      //回滚事务
                      _db.RollbackTran();
                      throw NCCException.Oh(ErrorCode.COM1002);
                  }
              }
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
509
          #endregion
96009bc9   hexiaodong   hxd
510
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
511
          #region 更新会员耗卡
96009bc9   hexiaodong   hxd
512
513
514
515
516
517
518
519
520
521
522
523
524
525
          /// <summary>
          /// 更新会员耗卡
          /// </summary>
          /// <param name="id">主键</param>
          /// <param name="input">参数</param>
          /// <returns></returns>
          [HttpPut("{id}")]
          public async Task Update(string id, [FromBody] LqXhHyhkUpInput input)
          {
              var entity = input.Adapt<LqXhHyhkEntity>();
              try
              {
                  //开启事务
                  _db.BeginTran();
d98270e2   “wangming”   Enhance LqEventSe...
526
                  entity.UpdateTime = DateTime.Now;
96009bc9   hexiaodong   hxd
527
528
529
530
531
                  //更新会员耗卡记录
                  await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
  
                  //清空原有数据
                  await _db.Deleteable<LqXhJksyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
532
                  await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
533
534
  
                  //清空原有数据
b45d55f7   “wangming”   Refactor LqEventS...
535
                  await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
536
537
538
539
540
541
542
543
  
                  // 收集所有需要插入的实体,然后批量插入
                  var allPxmxEntities = new List<LqXhPxmxEntity>();
                  var allJksyjEntities = new List<LqXhJksyjEntity>();
                  var allKjbsyjEntities = new List<LqXhKjbsyjEntity>();
  
                  // 处理品项明细列表
                  if (input.lqXhPxmxList != null && input.lqXhPxmxList.Any())
96009bc9   hexiaodong   hxd
544
                  {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
545
                      foreach (var item in input.lqXhPxmxList)
96009bc9   hexiaodong   hxd
546
                      {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
547
548
549
550
                          // 创建品项明细实体
                          var lqXhPxmxEntity = new LqXhPxmxEntity
                          {
                              Id = YitIdHelper.NextId().ToString(),
b45d55f7   “wangming”   Refactor LqEventS...
551
552
                              ConsumeInfoId = entity.Id,
                              BillingItemId = item.billingItemId,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
553
554
555
556
557
558
559
560
                              CreateTIme = DateTime.Now,
                              MemberId = entity.Hy,
                              IsEnabled = 0,
                              ProjectNumber = item.projectNumber ?? 1,
                              TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),
                              Px = item.px,
                              Pxmc = item.pxmc,
                              Pxjg = item.pxjg,
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
561
562
563
                              SourceType = item.sourceType,
                          };
                          allPxmxEntities.Add(lqXhPxmxEntity);
d98270e2   “wangming”   Enhance LqEventSe...
564
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
565
566
567
568
569
                          // 收集该品项关联的健康师业绩
                          if (item.lqXhJksyjList != null && item.lqXhJksyjList.Any())
                          {
                              foreach (var ijks_tem in item.lqXhJksyjList)
                              {
d98270e2   “wangming”   Enhance LqEventSe...
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
                                  allJksyjEntities.Add(
                                      new LqXhJksyjEntity
                                      {
                                          Id = YitIdHelper.NextId().ToString(),
                                          Glkdbh = entity.Id,
                                          Jks = ijks_tem.jks,
                                          Jksxm = ijks_tem.jksxm,
                                          Jkszh = ijks_tem.jkszh,
                                          Jksyj = ijks_tem.jksyj,
                                          Yjsj = DateTime.Now,
                                          JsjId = ijks_tem.jsjId,
                                          Kdpxid = lqXhPxmxEntity.Id,
                                          LaborCost = ijks_tem.laborCost,
                                          KdpxNumber = ijks_tem.kdpxNumber,
                                      }
                                  );
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
586
587
                              }
                          }
d98270e2   “wangming”   Enhance LqEventSe...
588
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
589
590
591
592
593
                          // 收集该品项关联的科技部老师业绩
                          if (item.lqXhKjbsyjList != null && item.lqXhKjbsyjList.Any())
                          {
                              foreach (var ikjbs_tem in item.lqXhKjbsyjList)
                              {
d98270e2   “wangming”   Enhance LqEventSe...
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
                                  allKjbsyjEntities.Add(
                                      new LqXhKjbsyjEntity
                                      {
                                          Id = YitIdHelper.NextId().ToString(),
                                          Glkdbh = entity.Id,
                                          Kjbls = ikjbs_tem.kjbls,
                                          Kjblsxm = ikjbs_tem.kjblsxm,
                                          Kjblszh = ikjbs_tem.kjblszh,
                                          Kjblsyj = ikjbs_tem.kjblsyj,
                                          Yjsj = DateTime.Now,
                                          Hkpxid = lqXhPxmxEntity.Id,
                                          LaborCost = ikjbs_tem.laborCost,
                                          HdpxNumber = ikjbs_tem.hdpxNumber,
                                      }
                                  );
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
609
610
                              }
                          }
96009bc9   hexiaodong   hxd
611
                      }
96009bc9   hexiaodong   hxd
612
613
                  }
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
614
615
                  // 批量插入品项明细
                  if (allPxmxEntities.Any())
96009bc9   hexiaodong   hxd
616
                  {
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
617
618
619
620
621
622
623
624
625
626
627
                      await _db.Insertable(allPxmxEntities).ExecuteCommandAsync();
                  }
                  // 批量插入健康师业绩
                  if (allJksyjEntities.Any())
                  {
                      await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
                  }
                  // 批量插入科技部老师业绩
                  if (allKjbsyjEntities.Any())
                  {
                      await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
96009bc9   hexiaodong   hxd
628
                  }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
629
  
96009bc9   hexiaodong   hxd
630
631
632
633
634
635
636
637
638
639
                  //关闭事务
                  _db.CommitTran();
              }
              catch (Exception)
              {
                  //回滚事务
                  _db.RollbackTran();
                  throw NCCException.Oh(ErrorCode.COM1001);
              }
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
640
          #endregion
96009bc9   hexiaodong   hxd
641
  
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
642
          #region 删除会员耗卡
96009bc9   hexiaodong   hxd
643
644
645
646
647
648
649
650
651
652
653
654
655
          /// <summary>
          /// 删除会员耗卡
          /// </summary>
          /// <returns></returns>
          [HttpDelete("{id}")]
          public async Task Delete(string id)
          {
              var entity = await _db.Queryable<LqXhHyhkEntity>().FirstAsync(p => p.Id == id);
              _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
              try
              {
                  //开启事务
                  _db.BeginTran();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
656
  
96009bc9   hexiaodong   hxd
657
658
659
660
661
662
663
664
665
666
                  //删除会员耗卡记录
                  await _db.Deleteable<LqXhHyhkEntity>().Where(d => d.Id == id).ExecuteCommandAsync();
  
                  //清空子表数据
                  await _db.Deleteable<LqXhJksyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
  
                  //清空子表数据
                  await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
  
                  //清空子表数据
b45d55f7   “wangming”   Refactor LqEventS...
667
                  await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
668
  
96009bc9   hexiaodong   hxd
669
670
671
672
673
674
675
676
677
678
                  //关闭事务
                  _db.CommitTran();
              }
              catch (Exception)
              {
                  //回滚事务
                  _db.RollbackTran();
                  throw NCCException.Oh(ErrorCode.COM1002);
              }
          }
35bb18d3   “wangming”   更新多个.DS_Store文件,删...
679
          #endregion
96009bc9   hexiaodong   hxd
680
681
      }
  }