Commit c8db89cd26ffee2271959a67fcdebcc1d36e56c1
1 parent
a52c7842
123
Showing
8 changed files
with
95 additions
and
12 deletions
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqDailyReport/StorePerformanceCompletionOutput.cs
| @@ -24,7 +24,22 @@ namespace NCC.Extend.Entitys.Dto.LqDailyReport | @@ -24,7 +24,22 @@ namespace NCC.Extend.Entitys.Dto.LqDailyReport | ||
| 24 | public decimal TargetPerformance { get; set; } | 24 | public decimal TargetPerformance { get; set; } |
| 25 | 25 | ||
| 26 | /// <summary> | 26 | /// <summary> |
| 27 | - /// 完成业绩(开单业绩) | 27 | + /// 开单业绩 |
| 28 | + /// </summary> | ||
| 29 | + public decimal BillingPerformance { get; set; } | ||
| 30 | + | ||
| 31 | + /// <summary> | ||
| 32 | + /// 退款业绩(退卡业绩) | ||
| 33 | + /// </summary> | ||
| 34 | + public decimal RefundPerformance { get; set; } | ||
| 35 | + | ||
| 36 | + /// <summary> | ||
| 37 | + /// 实际业绩(开单业绩 - 退款业绩) | ||
| 38 | + /// </summary> | ||
| 39 | + public decimal ActualPerformance { get; set; } | ||
| 40 | + | ||
| 41 | + /// <summary> | ||
| 42 | + /// 完成业绩(实际业绩,用于兼容旧版本) | ||
| 28 | /// </summary> | 43 | /// </summary> |
| 29 | public decimal CompletedPerformance { get; set; } | 44 | public decimal CompletedPerformance { get; set; } |
| 30 | 45 |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackCrInput.cs
| @@ -32,5 +32,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | @@ -32,5 +32,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | ||
| 32 | /// </summary> | 32 | /// </summary> |
| 33 | [Display(Name = "备注", Description = "反馈备注信息")] | 33 | [Display(Name = "备注", Description = "反馈备注信息")] |
| 34 | public string Remark { get; set; } | 34 | public string Remark { get; set; } |
| 35 | + | ||
| 36 | + /// <summary> | ||
| 37 | + /// 科技部备注 | ||
| 38 | + /// </summary> | ||
| 39 | + [Display(Name = "科技部备注", Description = "科技部备注信息")] | ||
| 40 | + public string KjbRemark { get; set; } | ||
| 35 | } | 41 | } |
| 36 | } | 42 | } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackInfoOutput.cs
| @@ -18,6 +18,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | @@ -18,6 +18,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | ||
| 18 | public string consumeId { get; set; } | 18 | public string consumeId { get; set; } |
| 19 | 19 | ||
| 20 | /// <summary> | 20 | /// <summary> |
| 21 | + /// 会员ID | ||
| 22 | + /// </summary> | ||
| 23 | + public string memberId { get; set; } | ||
| 24 | + | ||
| 25 | + /// <summary> | ||
| 21 | /// 前图片 | 26 | /// 前图片 |
| 22 | /// </summary> | 27 | /// </summary> |
| 23 | public string beforeImage { get; set; } | 28 | public string beforeImage { get; set; } |
| @@ -33,6 +38,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | @@ -33,6 +38,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | ||
| 33 | public string remark { get; set; } | 38 | public string remark { get; set; } |
| 34 | 39 | ||
| 35 | /// <summary> | 40 | /// <summary> |
| 41 | + /// 科技部备注 | ||
| 42 | + /// </summary> | ||
| 43 | + public string kjbRemark { get; set; } | ||
| 44 | + | ||
| 45 | + /// <summary> | ||
| 36 | /// 添加人ID | 46 | /// 添加人ID |
| 37 | /// </summary> | 47 | /// </summary> |
| 38 | public string createUser { get; set; } | 48 | public string createUser { get; set; } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackListOutput.cs
| @@ -18,6 +18,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | @@ -18,6 +18,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | ||
| 18 | public string consumeId { get; set; } | 18 | public string consumeId { get; set; } |
| 19 | 19 | ||
| 20 | /// <summary> | 20 | /// <summary> |
| 21 | + /// 会员ID | ||
| 22 | + /// </summary> | ||
| 23 | + public string memberId { get; set; } | ||
| 24 | + | ||
| 25 | + /// <summary> | ||
| 21 | /// 前图片 | 26 | /// 前图片 |
| 22 | /// </summary> | 27 | /// </summary> |
| 23 | public string beforeImage { get; set; } | 28 | public string beforeImage { get; set; } |
| @@ -33,6 +38,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | @@ -33,6 +38,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhFeedback | ||
| 33 | public string remark { get; set; } | 38 | public string remark { get; set; } |
| 34 | 39 | ||
| 35 | /// <summary> | 40 | /// <summary> |
| 41 | + /// 科技部备注 | ||
| 42 | + /// </summary> | ||
| 43 | + public string kjbRemark { get; set; } | ||
| 44 | + | ||
| 45 | + /// <summary> | ||
| 36 | /// 添加人ID | 46 | /// 添加人ID |
| 37 | /// </summary> | 47 | /// </summary> |
| 38 | public string createUser { get; set; } | 48 | public string createUser { get; set; } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_feedback/LqXhFeedbackEntity.cs
| @@ -24,6 +24,12 @@ namespace NCC.Extend.Entitys.lq_xh_feedback | @@ -24,6 +24,12 @@ namespace NCC.Extend.Entitys.lq_xh_feedback | ||
| 24 | public string ConsumeId { get; set; } | 24 | public string ConsumeId { get; set; } |
| 25 | 25 | ||
| 26 | /// <summary> | 26 | /// <summary> |
| 27 | + /// 会员ID | ||
| 28 | + /// </summary> | ||
| 29 | + [SugarColumn(ColumnName = "F_MemberId")] | ||
| 30 | + public string MemberId { get; set; } | ||
| 31 | + | ||
| 32 | + /// <summary> | ||
| 27 | /// 前图片 | 33 | /// 前图片 |
| 28 | /// </summary> | 34 | /// </summary> |
| 29 | [SugarColumn(ColumnName = "F_BeforeImage")] | 35 | [SugarColumn(ColumnName = "F_BeforeImage")] |
| @@ -42,6 +48,12 @@ namespace NCC.Extend.Entitys.lq_xh_feedback | @@ -42,6 +48,12 @@ namespace NCC.Extend.Entitys.lq_xh_feedback | ||
| 42 | public string Remark { get; set; } | 48 | public string Remark { get; set; } |
| 43 | 49 | ||
| 44 | /// <summary> | 50 | /// <summary> |
| 51 | + /// 科技部备注 | ||
| 52 | + /// </summary> | ||
| 53 | + [SugarColumn(ColumnName = "F_KjbRemark")] | ||
| 54 | + public string KjbRemark { get; set; } | ||
| 55 | + | ||
| 56 | + /// <summary> | ||
| 45 | /// 添加人ID | 57 | /// 添加人ID |
| 46 | /// </summary> | 58 | /// </summary> |
| 47 | [SugarColumn(ColumnName = "F_CreateUser")] | 59 | [SugarColumn(ColumnName = "F_CreateUser")] |
netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs
| @@ -192,8 +192,11 @@ namespace NCC.Extend | @@ -192,8 +192,11 @@ namespace NCC.Extend | ||
| 192 | /// - StoreId: 门店ID | 192 | /// - StoreId: 门店ID |
| 193 | /// - StoreName: 门店名称 | 193 | /// - StoreName: 门店名称 |
| 194 | /// - TargetPerformance: 目标业绩(生命线,来自门店信息表) | 194 | /// - TargetPerformance: 目标业绩(生命线,来自门店信息表) |
| 195 | - /// - CompletedPerformance: 完成业绩(当月1号至统计日期的开单业绩总和) | ||
| 196 | - /// - CompletionRate: 完成率(百分比,CompletedPerformance / TargetPerformance * 100) | 195 | + /// - BillingPerformance: 开单业绩(开单业绩总和) |
| 196 | + /// - RefundPerformance: 退款业绩(退卡业绩总和) | ||
| 197 | + /// - ActualPerformance: 实际业绩(开单业绩 - 退款业绩) | ||
| 198 | + /// - CompletedPerformance: 完成业绩(实际业绩,用于兼容旧版本) | ||
| 199 | + /// - CompletionRate: 完成率(百分比,ActualPerformance / TargetPerformance * 100) | ||
| 197 | /// </remarks> | 200 | /// </remarks> |
| 198 | /// <param name="input">查询参数</param> | 201 | /// <param name="input">查询参数</param> |
| 199 | /// <returns>门店业绩完成情况列表</returns> | 202 | /// <returns>门店业绩完成情况列表</returns> |
| @@ -222,7 +225,7 @@ namespace NCC.Extend | @@ -222,7 +225,7 @@ namespace NCC.Extend | ||
| 222 | store.dm as StoreName, | 225 | store.dm as StoreName, |
| 223 | -- 目标业绩(生命线) | 226 | -- 目标业绩(生命线) |
| 224 | COALESCE(store.xsyj, 0) as TargetPerformance, | 227 | COALESCE(store.xsyj, 0) as TargetPerformance, |
| 225 | - -- 完成业绩(开单业绩总和) | 228 | + -- 开单业绩总和 |
| 226 | COALESCE(( | 229 | COALESCE(( |
| 227 | SELECT SUM(billing.sfyj) | 230 | SELECT SUM(billing.sfyj) |
| 228 | FROM lq_kd_kdjlb billing | 231 | FROM lq_kd_kdjlb billing |
| @@ -230,25 +233,39 @@ namespace NCC.Extend | @@ -230,25 +233,39 @@ namespace NCC.Extend | ||
| 230 | AND billing.F_IsEffective = 1 | 233 | AND billing.F_IsEffective = 1 |
| 231 | AND DATE(billing.kdrq) >= '{startDate:yyyy-MM-dd}' | 234 | AND DATE(billing.kdrq) >= '{startDate:yyyy-MM-dd}' |
| 232 | AND DATE(billing.kdrq) <= '{endDate:yyyy-MM-dd}' | 235 | AND DATE(billing.kdrq) <= '{endDate:yyyy-MM-dd}' |
| 233 | - ), 0) as CompletedPerformance | 236 | + ), 0) as BillingPerformance, |
| 237 | + -- 退款业绩总和(退卡业绩) | ||
| 238 | + COALESCE(( | ||
| 239 | + SELECT SUM(refund.tkje) | ||
| 240 | + FROM lq_hytk_hytk refund | ||
| 241 | + WHERE refund.md = store.F_Id | ||
| 242 | + AND refund.F_IsEffective = 1 | ||
| 243 | + AND DATE(refund.tksj) >= '{startDate:yyyy-MM-dd}' | ||
| 244 | + AND DATE(refund.tksj) <= '{endDate:yyyy-MM-dd}' | ||
| 245 | + ), 0) as RefundPerformance | ||
| 234 | FROM lq_mdxx store | 246 | FROM lq_mdxx store |
| 235 | WHERE 1=1 {storeFilter} | 247 | WHERE 1=1 {storeFilter} |
| 236 | - ORDER BY CompletedPerformance DESC"; | 248 | + ORDER BY (BillingPerformance - RefundPerformance) DESC"; |
| 237 | 249 | ||
| 238 | var result = await _db.Ado.SqlQueryAsync<dynamic>(sql); | 250 | var result = await _db.Ado.SqlQueryAsync<dynamic>(sql); |
| 239 | 251 | ||
| 240 | var outputList = result.Select(item => | 252 | var outputList = result.Select(item => |
| 241 | { | 253 | { |
| 242 | var targetPerformance = Convert.ToDecimal(item.TargetPerformance); | 254 | var targetPerformance = Convert.ToDecimal(item.TargetPerformance); |
| 243 | - var completedPerformance = Convert.ToDecimal(item.CompletedPerformance); | ||
| 244 | - var completionRate = targetPerformance > 0 ? (completedPerformance / targetPerformance * 100m) : 0m; | 255 | + var billingPerformance = Convert.ToDecimal(item.BillingPerformance); |
| 256 | + var refundPerformance = Convert.ToDecimal(item.RefundPerformance); | ||
| 257 | + var actualPerformance = billingPerformance - refundPerformance; | ||
| 258 | + var completionRate = targetPerformance > 0 ? (actualPerformance / targetPerformance * 100m) : 0m; | ||
| 245 | 259 | ||
| 246 | return new StorePerformanceCompletionOutput | 260 | return new StorePerformanceCompletionOutput |
| 247 | { | 261 | { |
| 248 | StoreId = item.StoreId, | 262 | StoreId = item.StoreId, |
| 249 | StoreName = item.StoreName, | 263 | StoreName = item.StoreName, |
| 250 | TargetPerformance = targetPerformance, | 264 | TargetPerformance = targetPerformance, |
| 251 | - CompletedPerformance = completedPerformance, | 265 | + BillingPerformance = billingPerformance, |
| 266 | + RefundPerformance = refundPerformance, | ||
| 267 | + ActualPerformance = actualPerformance, | ||
| 268 | + CompletedPerformance = actualPerformance, // 保持兼容性 | ||
| 252 | CompletionRate = decimal.Round(completionRate, 2) | 269 | CompletionRate = decimal.Round(completionRate, 2) |
| 253 | }; | 270 | }; |
| 254 | }).ToList(); | 271 | }).ToList(); |
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
| @@ -238,7 +238,7 @@ namespace NCC.Extend.LqTkjlb | @@ -238,7 +238,7 @@ namespace NCC.Extend.LqTkjlb | ||
| 238 | Pxjg = 0, | 238 | Pxjg = 0, |
| 239 | Yjsj = DateTime.Now, | 239 | Yjsj = DateTime.Now, |
| 240 | MemberId = MemberId, | 240 | MemberId = MemberId, |
| 241 | - ProjectNumber = 0, | 241 | + ProjectNumber = 1, |
| 242 | IsEnabled = StatusEnum.有效.GetHashCode(), | 242 | IsEnabled = StatusEnum.有效.GetHashCode(), |
| 243 | SourceType = "体验", | 243 | SourceType = "体验", |
| 244 | TotalPrice = 0, | 244 | TotalPrice = 0, |
netcore/src/Modularity/Extend/NCC.Extend/LqXhFeedbackService.cs
| @@ -92,17 +92,21 @@ namespace NCC.Extend | @@ -92,17 +92,21 @@ namespace NCC.Extend | ||
| 92 | /// ```json | 92 | /// ```json |
| 93 | /// { | 93 | /// { |
| 94 | /// "consumeId": "耗卡记录ID", | 94 | /// "consumeId": "耗卡记录ID", |
| 95 | + /// "memberId": "会员ID", | ||
| 95 | /// "beforeImage": "前图片路径或Base64", | 96 | /// "beforeImage": "前图片路径或Base64", |
| 96 | /// "afterImage": "后图片路径或Base64", | 97 | /// "afterImage": "后图片路径或Base64", |
| 97 | - /// "remark": "反馈备注" | 98 | + /// "remark": "反馈备注", |
| 99 | + /// "kjbRemark": "科技部备注" | ||
| 98 | /// } | 100 | /// } |
| 99 | /// ``` | 101 | /// ``` |
| 100 | /// | 102 | /// |
| 101 | /// 参数说明: | 103 | /// 参数说明: |
| 102 | /// - consumeId: 耗卡记录ID(必填) | 104 | /// - consumeId: 耗卡记录ID(必填) |
| 105 | + /// - memberId: 会员ID(可选) | ||
| 103 | /// - beforeImage: 前图片(可选) | 106 | /// - beforeImage: 前图片(可选) |
| 104 | /// - afterImage: 后图片(可选) | 107 | /// - afterImage: 后图片(可选) |
| 105 | /// - remark: 反馈备注(可选) | 108 | /// - remark: 反馈备注(可选) |
| 109 | + /// - kjbRemark: 科技部备注(可选) | ||
| 106 | /// </remarks> | 110 | /// </remarks> |
| 107 | /// <param name="input">创建参数</param> | 111 | /// <param name="input">创建参数</param> |
| 108 | /// <returns>创建的耗卡反馈记录</returns> | 112 | /// <returns>创建的耗卡反馈记录</returns> |
| @@ -125,6 +129,7 @@ namespace NCC.Extend | @@ -125,6 +129,7 @@ namespace NCC.Extend | ||
| 125 | entity.CreateUser = _userManager.UserId; | 129 | entity.CreateUser = _userManager.UserId; |
| 126 | entity.CreateTime = DateTime.Now; | 130 | entity.CreateTime = DateTime.Now; |
| 127 | entity.UpdateTime = DateTime.Now; | 131 | entity.UpdateTime = DateTime.Now; |
| 132 | + entity.MemberId = consumeRecord.Hy; | ||
| 128 | await _db.Insertable(entity).ExecuteCommandAsync(); | 133 | await _db.Insertable(entity).ExecuteCommandAsync(); |
| 129 | return entity.Adapt<LqXhFeedbackInfoOutput>(); | 134 | return entity.Adapt<LqXhFeedbackInfoOutput>(); |
| 130 | } | 135 | } |
| @@ -147,18 +152,22 @@ namespace NCC.Extend | @@ -147,18 +152,22 @@ namespace NCC.Extend | ||
| 147 | /// { | 152 | /// { |
| 148 | /// "id": "反馈记录ID", | 153 | /// "id": "反馈记录ID", |
| 149 | /// "consumeId": "耗卡记录ID", | 154 | /// "consumeId": "耗卡记录ID", |
| 155 | + /// "memberId": "会员ID", | ||
| 150 | /// "beforeImage": "前图片路径或Base64", | 156 | /// "beforeImage": "前图片路径或Base64", |
| 151 | /// "afterImage": "后图片路径或Base64", | 157 | /// "afterImage": "后图片路径或Base64", |
| 152 | - /// "remark": "反馈备注" | 158 | + /// "remark": "反馈备注", |
| 159 | + /// "kjbRemark": "科技部备注" | ||
| 153 | /// } | 160 | /// } |
| 154 | /// ``` | 161 | /// ``` |
| 155 | /// | 162 | /// |
| 156 | /// 参数说明: | 163 | /// 参数说明: |
| 157 | /// - id: 反馈记录ID(必填) | 164 | /// - id: 反馈记录ID(必填) |
| 158 | /// - consumeId: 耗卡记录ID(必填) | 165 | /// - consumeId: 耗卡记录ID(必填) |
| 166 | + /// - memberId: 会员ID(可选) | ||
| 159 | /// - beforeImage: 前图片(可选) | 167 | /// - beforeImage: 前图片(可选) |
| 160 | /// - afterImage: 后图片(可选) | 168 | /// - afterImage: 后图片(可选) |
| 161 | /// - remark: 反馈备注(可选) | 169 | /// - remark: 反馈备注(可选) |
| 170 | + /// - kjbRemark: 科技部备注(可选) | ||
| 162 | /// </remarks> | 171 | /// </remarks> |
| 163 | /// <param name="input">更新参数</param> | 172 | /// <param name="input">更新参数</param> |
| 164 | /// <returns>更新后的耗卡反馈记录</returns> | 173 | /// <returns>更新后的耗卡反馈记录</returns> |
| @@ -187,7 +196,9 @@ namespace NCC.Extend | @@ -187,7 +196,9 @@ namespace NCC.Extend | ||
| 187 | entity.BeforeImage = input.BeforeImage; | 196 | entity.BeforeImage = input.BeforeImage; |
| 188 | entity.AfterImage = input.AfterImage; | 197 | entity.AfterImage = input.AfterImage; |
| 189 | entity.Remark = input.Remark; | 198 | entity.Remark = input.Remark; |
| 199 | + entity.KjbRemark = input.KjbRemark; | ||
| 190 | entity.UpdateTime = DateTime.Now; | 200 | entity.UpdateTime = DateTime.Now; |
| 201 | + entity.MemberId = consumeRecord.Hy; | ||
| 191 | await _db.Updateable(entity).ExecuteCommandAsync(); | 202 | await _db.Updateable(entity).ExecuteCommandAsync(); |
| 192 | return entity.Adapt<LqXhFeedbackInfoOutput>(); | 203 | return entity.Adapt<LqXhFeedbackInfoOutput>(); |
| 193 | } | 204 | } |
| @@ -272,9 +283,11 @@ namespace NCC.Extend | @@ -272,9 +283,11 @@ namespace NCC.Extend | ||
| 272 | { | 283 | { |
| 273 | id = it.Id, | 284 | id = it.Id, |
| 274 | consumeId = it.ConsumeId, | 285 | consumeId = it.ConsumeId, |
| 286 | + memberId = it.MemberId, | ||
| 275 | beforeImage = it.BeforeImage, | 287 | beforeImage = it.BeforeImage, |
| 276 | afterImage = it.AfterImage, | 288 | afterImage = it.AfterImage, |
| 277 | remark = it.Remark, | 289 | remark = it.Remark, |
| 290 | + kjbRemark = it.KjbRemark, | ||
| 278 | createUser = it.CreateUser, | 291 | createUser = it.CreateUser, |
| 279 | createUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName), | 292 | createUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName), |
| 280 | createTime = it.CreateTime, | 293 | createTime = it.CreateTime, |