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
|
memberId = pxmx.MemberId,
createTime = pxmx.CreateTIme,
projectNumber = pxmx.ProjectNumber,
|
2b23ca5e
“wangming”
更新退卡相关功能,重构退卡信息表及...
|
131
|
sourceType = pxmx.SourceType,
|
d98270e2
“wangming”
Enhance LqEventSe...
|
132
|
totalPrice = pxmx.TotalPrice,
|
d7925aaa
“wangming”
星期五了,下班咯
|
133
|
isEffective = pxmx.IsEffective,
|
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
|
[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))
|
d7925aaa
“wangming”
星期五了,下班咯
|
186
187
188
|
// 注意:xfje 和 sgfy 现在是 decimal 类型,不支持字符串模糊查询
// .WhereIF(!string.IsNullOrEmpty(input.xfje), p => SqlFunc.ToString(p.Xfje).Contains(input.xfje))
// .WhereIF(!string.IsNullOrEmpty(input.sgfy), p => SqlFunc.ToString(p.Sgfy).Contains(input.sgfy))
|
96009bc9
hexiaodong
hxd
|
189
190
191
192
|
.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文件,删...
|
193
|
.Select(it => new LqXhHyhkListOutput
|
96009bc9
hexiaodong
hxd
|
194
195
|
{
id = it.Id,
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
196
197
198
199
200
201
202
|
md = it.Md,
mdbh = it.Mdbh,
mdmc = it.Mdmc,
hy = it.Hy,
hyzh = it.Hyzh,
hymc = it.Hymc,
gklx = it.Gklx,
|
d7925aaa
“wangming”
星期五了,下班咯
|
203
204
|
xfje = SqlFunc.ToString(it.Xfje),
sgfy = SqlFunc.ToString(it.Sgfy),
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
205
206
207
|
sfykjb = it.Sfykjb,
hksj = it.Hksj,
czry = it.Czry,
|
d98270e2
“wangming”
Enhance LqEventSe...
|
208
209
210
211
|
})
.MergeTable()
.OrderBy(sidx + " " + input.sort)
.ToPagedListAsync(input.currentPage, input.pageSize);
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
212
|
return PageResult<LqXhHyhkListOutput>.SqlSugarPageResult(data);
|
96009bc9
hexiaodong
hxd
|
213
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
214
|
#endregion
|
96009bc9
hexiaodong
hxd
|
215
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
216
|
#region 新建会员耗卡
|
96009bc9
hexiaodong
hxd
|
217
218
219
|
/// <summary>
/// 新建会员耗卡
/// </summary>
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
220
221
|
/// <remarks>
/// 创建会员耗卡记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
|
d98270e2
“wangming”
Enhance LqEventSe...
|
222
|
///
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
/// 示例请求:
/// ```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...
|
247
|
///
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
248
249
250
251
252
253
254
255
256
257
|
/// 参数说明:
/// - 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
|
258
259
260
261
262
263
|
[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
|
264
|
entity.Czry = _userManager.UserId;
|
d98270e2
“wangming”
Enhance LqEventSe...
|
265
|
entity.CreateTime = DateTime.Now;
|
96009bc9
hexiaodong
hxd
|
266
267
|
try
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
268
|
// 开启事务
|
96009bc9
hexiaodong
hxd
|
269
|
_db.BeginTran();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
270
|
// 新增会员耗卡记录
|
96009bc9
hexiaodong
hxd
|
271
|
var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
272
273
274
275
276
277
|
// 收集所有需要插入的实体,然后批量插入
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
|
278
|
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
279
|
foreach (var item in input.lqXhPxmxList)
|
96009bc9
hexiaodong
hxd
|
280
|
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
281
282
283
284
|
// 创建品项明细实体
var lqXhPxmxEntity = new LqXhPxmxEntity
{
Id = YitIdHelper.NextId().ToString(),
|
b45d55f7
“wangming”
Refactor LqEventS...
|
285
286
|
ConsumeInfoId = newEntity.Id,
BillingItemId = item.billingItemId,
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
287
288
|
CreateTIme = DateTime.Now,
MemberId = entity.Hy,
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
289
290
291
292
293
|
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
|
{
|
d7925aaa
“wangming”
星期五了,下班咯
|
349
350
351
352
353
354
355
356
357
358
359
360
|
// 分别处理插入和更新
var existingEntities = allPxmxEntities.Where(e => !string.IsNullOrEmpty(e.Id)).ToList();
var newEntities = allPxmxEntities.Where(e => string.IsNullOrEmpty(e.Id)).ToList();
if (existingEntities.Any())
{
await _db.Updateable(existingEntities).ExecuteCommandAsync();
}
if (newEntities.Any())
{
await _db.Insertable(newEntities).ExecuteCommandAsync();
}
|
96009bc9
hexiaodong
hxd
|
361
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
362
363
|
// 批量插入健康师业绩
if (allJksyjEntities.Any())
|
96009bc9
hexiaodong
hxd
|
364
|
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
365
|
await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
366
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
367
368
369
370
371
372
|
// 批量插入科技部老师业绩
if (allKjbsyjEntities.Any())
{
await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
}
// 提交事务
|
96009bc9
hexiaodong
hxd
|
373
374
|
_db.CommitTran();
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
375
|
catch (Exception ex)
|
96009bc9
hexiaodong
hxd
|
376
|
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
377
|
// 回滚事务
|
96009bc9
hexiaodong
hxd
|
378
|
_db.RollbackTran();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
379
380
381
|
Console.WriteLine($"新建会员耗卡失败: {ex.Message}");
Console.WriteLine($"堆栈跟踪: {ex.StackTrace}");
throw NCCException.Oh(ErrorCode.COM1000, $"新建会员耗卡失败: {ex.Message}");
|
96009bc9
hexiaodong
hxd
|
382
383
|
}
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
384
|
#endregion
|
96009bc9
hexiaodong
hxd
|
385
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
386
|
#region 获取会员耗卡无分页列表
|
96009bc9
hexiaodong
hxd
|
387
|
/// <summary>
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
388
389
390
391
|
/// 获取会员耗卡无分页列表
/// </summary>
/// <param name="input">请求参数</param>
/// <returns></returns>
|
96009bc9
hexiaodong
hxd
|
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
|
[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))
|
96009bc9
hexiaodong
hxd
|
408
409
410
411
|
.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文件,删...
|
412
|
.Select(it => new LqXhHyhkListOutput
|
96009bc9
hexiaodong
hxd
|
413
414
|
{
id = it.Id,
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
415
416
417
418
419
420
421
|
md = it.Md,
mdbh = it.Mdbh,
mdmc = it.Mdmc,
hy = it.Hy,
hyzh = it.Hyzh,
hymc = it.Hymc,
gklx = it.Gklx,
|
d7925aaa
“wangming”
星期五了,下班咯
|
422
423
|
xfje = SqlFunc.ToString(it.Xfje),
sgfy = SqlFunc.ToString(it.Sgfy),
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
424
425
426
|
sfykjb = it.Sfykjb,
hksj = it.Hksj,
czry = it.Czry,
|
d98270e2
“wangming”
Enhance LqEventSe...
|
427
428
429
430
|
})
.MergeTable()
.OrderBy(sidx + " " + input.sort)
.ToListAsync();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
431
|
return data;
|
96009bc9
hexiaodong
hxd
|
432
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
433
|
#endregion
|
96009bc9
hexiaodong
hxd
|
434
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
435
|
#region 导出会员耗卡
|
96009bc9
hexiaodong
hxd
|
436
|
/// <summary>
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
437
438
439
440
|
/// 导出会员耗卡
/// </summary>
/// <param name="input">请求参数</param>
/// <returns></returns>
|
96009bc9
hexiaodong
hxd
|
441
442
443
444
445
446
447
448
449
450
451
452
453
454
|
[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...
|
455
456
|
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
|
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
|
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...
|
475
|
var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
|
96009bc9
hexiaodong
hxd
|
476
477
|
return output;
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
478
|
#endregion
|
96009bc9
hexiaodong
hxd
|
479
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
480
|
#region 批量删除会员耗卡
|
96009bc9
hexiaodong
hxd
|
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
|
/// <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文件,删...
|
497
|
await _db.Deleteable<LqXhHyhkEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
498
499
|
//清空子表数据
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
500
|
await _db.Deleteable<LqXhJksyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
501
502
|
//清空子表数据
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
503
|
await _db.Deleteable<LqXhKjbsyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
504
505
|
//清空子表数据
|
b45d55f7
“wangming”
Refactor LqEventS...
|
506
|
await _db.Deleteable<LqXhPxmxEntity>().In(u => u.ConsumeInfoId, ids).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
507
508
509
510
511
512
513
514
515
516
517
|
//关闭事务
_db.CommitTran();
}
catch (Exception)
{
//回滚事务
_db.RollbackTran();
throw NCCException.Oh(ErrorCode.COM1002);
}
}
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
518
|
#endregion
|
96009bc9
hexiaodong
hxd
|
519
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
520
|
#region 更新会员耗卡
|
96009bc9
hexiaodong
hxd
|
521
|
/// <summary>
|
d7925aaa
“wangming”
星期五了,下班咯
|
522
|
/// 更新会员耗卡,不会删除品项明细,只会更新或新增
|
96009bc9
hexiaodong
hxd
|
523
524
525
526
527
528
529
530
531
532
533
534
|
/// </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...
|
535
|
entity.UpdateTime = DateTime.Now;
|
96009bc9
hexiaodong
hxd
|
536
537
538
539
540
|
//更新会员耗卡记录
await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
//清空原有数据
await _db.Deleteable<LqXhJksyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
541
|
await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
542
|
|
d7925aaa
“wangming”
星期五了,下班咯
|
543
544
|
// 注意:品项明细表不做删除操作,只更新或新增
// await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
545
546
547
548
549
550
551
552
|
// 收集所有需要插入的实体,然后批量插入
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
|
553
|
{
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
554
|
foreach (var item in input.lqXhPxmxList)
|
96009bc9
hexiaodong
hxd
|
555
|
{
|
d7925aaa
“wangming”
星期五了,下班咯
|
556
557
558
559
560
561
562
|
// 检查品项明细是否已存在
var existingPxmx = await _db.Queryable<LqXhPxmxEntity>()
.Where(p => p.Id == item.id)
.FirstAsync();
LqXhPxmxEntity lqXhPxmxEntity;
if (existingPxmx != null)
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
563
|
{
|
d7925aaa
“wangming”
星期五了,下班咯
|
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
|
// 更新现有记录
lqXhPxmxEntity = existingPxmx;
// 注意:LqXhPxmxEntity 没有 UpdateTime 字段
lqXhPxmxEntity.MemberId = entity.Hy;
lqXhPxmxEntity.ProjectNumber = item.projectNumber ?? 1;
lqXhPxmxEntity.TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1));
lqXhPxmxEntity.Px = item.px;
lqXhPxmxEntity.Pxmc = item.pxmc;
lqXhPxmxEntity.Pxjg = item.pxjg;
lqXhPxmxEntity.SourceType = item.sourceType;
}
else
{
// 创建新记录
lqXhPxmxEntity = new LqXhPxmxEntity
{
Id = YitIdHelper.NextId().ToString(),
ConsumeInfoId = entity.Id,
BillingItemId = item.billingItemId,
CreateTIme = DateTime.Now,
MemberId = entity.Hy,
ProjectNumber = item.projectNumber ?? 1,
TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),
Px = item.px,
Pxmc = item.pxmc,
Pxjg = item.pxjg,
SourceType = item.sourceType,
};
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
593
|
allPxmxEntities.Add(lqXhPxmxEntity);
|
d98270e2
“wangming”
Enhance LqEventSe...
|
594
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
595
596
597
598
599
|
// 收集该品项关联的健康师业绩
if (item.lqXhJksyjList != null && item.lqXhJksyjList.Any())
{
foreach (var ijks_tem in item.lqXhJksyjList)
{
|
d98270e2
“wangming”
Enhance LqEventSe...
|
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
|
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文件,删...
|
616
617
|
}
}
|
d98270e2
“wangming”
Enhance LqEventSe...
|
618
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
619
620
621
622
623
|
// 收集该品项关联的科技部老师业绩
if (item.lqXhKjbsyjList != null && item.lqXhKjbsyjList.Any())
{
foreach (var ikjbs_tem in item.lqXhKjbsyjList)
{
|
d98270e2
“wangming”
Enhance LqEventSe...
|
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
|
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文件,删...
|
639
640
|
}
}
|
96009bc9
hexiaodong
hxd
|
641
|
}
|
96009bc9
hexiaodong
hxd
|
642
643
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
644
645
|
// 批量插入品项明细
if (allPxmxEntities.Any())
|
96009bc9
hexiaodong
hxd
|
646
|
{
|
d7925aaa
“wangming”
星期五了,下班咯
|
647
648
649
650
651
652
653
654
655
656
657
658
|
// 分别处理插入和更新
var existingEntities = allPxmxEntities.Where(e => !string.IsNullOrEmpty(e.Id)).ToList();
var newEntities = allPxmxEntities.Where(e => string.IsNullOrEmpty(e.Id)).ToList();
if (existingEntities.Any())
{
await _db.Updateable(existingEntities).ExecuteCommandAsync();
}
if (newEntities.Any())
{
await _db.Insertable(newEntities).ExecuteCommandAsync();
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
659
660
661
662
663
664
665
666
667
668
|
}
// 批量插入健康师业绩
if (allJksyjEntities.Any())
{
await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
}
// 批量插入科技部老师业绩
if (allKjbsyjEntities.Any())
{
await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
|
96009bc9
hexiaodong
hxd
|
669
|
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
670
|
|
96009bc9
hexiaodong
hxd
|
671
672
673
674
675
676
677
678
679
680
|
//关闭事务
_db.CommitTran();
}
catch (Exception)
{
//回滚事务
_db.RollbackTran();
throw NCCException.Oh(ErrorCode.COM1001);
}
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
681
|
#endregion
|
96009bc9
hexiaodong
hxd
|
682
|
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
683
|
#region 删除会员耗卡
|
96009bc9
hexiaodong
hxd
|
684
685
686
687
688
689
690
691
692
693
694
695
696
|
/// <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文件,删...
|
697
|
|
96009bc9
hexiaodong
hxd
|
698
699
700
701
702
703
704
705
706
707
|
//删除会员耗卡记录
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...
|
708
|
await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
709
|
|
96009bc9
hexiaodong
hxd
|
710
711
712
713
714
715
716
717
718
719
|
//关闭事务
_db.CommitTran();
}
catch (Exception)
{
//回滚事务
_db.RollbackTran();
throw NCCException.Oh(ErrorCode.COM1002);
}
}
|
35bb18d3
“wangming”
更新多个.DS_Store文件,删...
|
720
|
#endregion
|
96009bc9
hexiaodong
hxd
|
721
722
|
}
}
|