From d98270e22aabecd89cefd018b7f4bbfdb4be7870 Mon Sep 17 00:00:00 2001
From: “wangming” <“wangming@antissoft.com”>
Date: Mon, 22 Sep 2025 18:10:06 +0800
Subject: [PATCH] Enhance LqEventService to include EventType in event creation and update processes; add manual time field settings to preserve time accuracy; implement GetEventTypes endpoint to retrieve event type enumeration; update LqTkjlb DTO to include eventId and eventName for better tracking of related events.
---
[已用]创建金三角统计视图.sql | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs | 25 +++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs | 9 +++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs | 10 ++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs | 10 ++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs | 2 +-
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs | 31 ++++++++++++++++++++-----------
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs | 31 ++++++++++++++++++++-----------
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthInput.cs | 23 +++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceInput.cs | 30 ++++++++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceOutput.cs | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs | 6 ++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs | 36 +++++++++++++++++-------------------
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs | 12 ++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs | 79 +++++++++++++++++++++++++++++++++++++++++++++----------------------------------
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/EventType.cs | 22 ++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/NCC.Extend.Entitys.csproj | 10 ----------
netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs | 605 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs | 1 -
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs | 10 ++++++----
netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs | 12 ++++++++++--
netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------
netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
netcore/src/Modularity/Extend/NCC.Extend/LqYyjlService.cs | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------
netcore/src/Modularity/Extend/NCC.Extend/NCC.Extend.csproj | 39 +++++++++++++++++----------------------
金三角业绩统计接口说明.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
31 files changed, 1331 insertions(+), 607 deletions(-)
create mode 100644 [已用]创建金三角统计视图.sql
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthInput.cs
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceInput.cs
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceOutput.cs
create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/EventType.cs
create mode 100644 金三角业绩统计接口说明.md
diff --git a/[已用]创建金三角统计视图.sql b/[已用]创建金三角统计视图.sql
new file mode 100644
index 0000000..2a988d9
--- /dev/null
+++ b/[已用]创建金三角统计视图.sql
@@ -0,0 +1,63 @@
+-- 创建金三角统计视图
+-- 用于统计金三角的订单数量、业绩总额、首次和最后订单日期等信息
+-- 按月份和业绩总额降序排列
+
+CREATE VIEW v_jsj_monthly_performance AS
+SELECT
+ `jsj`.`F_Id` AS `jsj_id`,
+ `jsj`.`jsj` AS `jsj_name`,
+ `jsj`.`yf` AS `month`,
+ `jsj`.`md` AS `store_id`,
+ `md`.`dm` AS `store_name`,
+ count( DISTINCT `jksyj`.`glkdbh` ) AS `order_count`,
+ sum(
+ cast( `jksyj`.`jksyj` AS DECIMAL ( 18, 2 ) )
+ ) AS `total_performance`,
+ max( `jksyj`.`yjsj` ) AS `last_order_date`,
+ min( `jksyj`.`yjsj` ) AS `first_order_date`
+FROM
+ (
+ (
+ `lq_ycsd_jsj` `jsj`
+ LEFT JOIN `lq_kd_jksyj` `jksyj` ON (
+ (
+ ( `jsj`.`F_Id` = `jksyj`.`jsj_id` )
+ AND (
+ YEAR ( `jksyj`.`yjsj` ) = substr( `jsj`.`yf`, 1, 4 )
+ )
+ AND (
+ MONTH ( `jksyj`.`yjsj` ) = substr( `jsj`.`yf`, 5, 2 )
+ )
+ )
+ )
+ )
+ LEFT JOIN `lq_mdxx` `md` ON ( ( `jsj`.`md` = `md`.`F_Id` ) )
+ )
+WHERE
+ (
+ ( `jsj`.`yf` IS NOT NULL )
+ AND ( `jksyj`.`yjsj` IS NOT NULL )
+ AND ( `jksyj`.`jksyj` IS NOT NULL )
+ AND ( `jksyj`.`jksyj` <> '' )
+ AND ( `jksyj`.`jksyj` <> '0' )
+ )
+GROUP BY
+ `jsj`.`F_Id`,
+ `jsj`.`jsj`,
+ `jsj`.`yf`,
+ `jsj`.`md`,
+ `md`.`dm`
+ORDER BY
+ `jsj`.`yf` DESC,
+ `total_performance` DESC;
+
+-- 视图说明:
+-- jsj_id: 金三角ID
+-- jsj_name: 金三角名称
+-- month: 月份(格式:yyyyMM)
+-- store_id: 门店ID
+-- store_name: 门店名称
+-- order_count: 订单数量(去重)
+-- total_performance: 总业绩(转换为DECIMAL类型)
+-- last_order_date: 最后订单日期
+-- first_order_date: 首次订单日期
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs
new file mode 100644
index 0000000..588f003
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs
@@ -0,0 +1,25 @@
+using System.ComponentModel;
+
+namespace NCC.Extend.Entitys.Dto.LqEvent
+{
+ ///
+ /// 拓客类型枚举输出
+ ///
+ public class EventTypeEnumOutput
+ {
+ ///
+ /// 枚举值
+ ///
+ public int Value { get; set; }
+
+ ///
+ /// 枚举名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 中文描述
+ ///
+ public string Description { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs
index ddddedc..9120030 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs
@@ -69,6 +69,15 @@ namespace NCC.Extend.Entitys.Dto.LqEvent
public string EventNumber { get; set; }
///
+ /// 活动类型
+ ///
+ ///
+ /// 活动类型,可选字段
+ /// 最大长度:255个字符
+ ///
+ public int EventType { get; set; }
+
+ ///
/// 拓客活动成员列表
///
///
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs
index 649452d..894963b 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs
@@ -40,6 +40,11 @@ namespace NCC.Extend.Entitys.Dto.LqEvent
public string eventNumber { get; set; }
///
+ /// 活动类型
+ ///
+ public int eventType { get; set; }
+
+ ///
/// 拓客活动成员列表
///
public List Members { get; set; } = new List();
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs
index 845b628..c924279 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs
@@ -41,5 +41,10 @@ namespace NCC.Extend.Entitys.Dto.LqEvent
/// 成员数量
///
public int memberCount { get; set; }
+
+ ///
+ /// 活动类型
+ ///
+ public int eventType { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs
index d9c5af5..3d41811 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs
@@ -66,5 +66,15 @@ namespace NCC.Extend.Entitys.Dto.LqEvent
/// 创建用户
///
public string CreationUser { get; set; }
+
+ ///
+ /// 门店ID
+ ///
+ public string StoreId { get; set; }
+
+ ///
+ /// 门店名称
+ ///
+ public string StoreName { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs
index 1bb2e35..a1f4123 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs
@@ -41,5 +41,15 @@ namespace NCC.Extend.Entitys.Dto.LqEventUser
/// 创建用户
///
public string creationUser { get; set; }
+
+ ///
+ /// 目标数量
+ ///
+ public int targetCount { get; set; }
+
+ ///
+ /// 门店ID
+ ///
+ public string storeId { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs
index 7e580d0..a044f1d 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs
@@ -36,7 +36,7 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
///
/// 项目次数
///
- public int? projectNumber { get; set; }
+ public decimal projectNumber { get; set; }
///
/// 是否有效
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs
index 56b3264..f056394 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs
@@ -12,56 +12,65 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
/// 拓客编号
///
public string id { get; set; }
-
+
///
/// 拓客时间
///
public DateTime? tksj { get; set; }
-
+
///
/// 拓客人员
///
public string tkry { get; set; }
-
+
///
/// 顾客姓名
///
public string gkxm { get; set; }
-
+
///
/// 电话号码
///
public string dhhm { get; set; }
-
+
///
/// 购买张数
///
public int? gmzs { get; set; }
-
+
///
/// 支付方式
///
public string zffs { get; set; }
-
+
///
/// 是否加微信
///
public string sfjwx { get; set; }
-
+
///
/// 备注
///
public string bz { get; set; }
-
+
///
/// 所属门店
///
public string ssmd { get; set; }
-
+
///
/// 所属战队
///
public string sszd { get; set; }
-
+
+ ///
+ /// 拓客活动id
+ ///
+ public string eventId { get; set; }
+
+ ///
+ /// 拓客活动名称
+ ///
+ public string eventName { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs
index fd63c70..abfa230 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs
@@ -11,56 +11,65 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
/// 拓客编号
///
public string id { get; set; }
-
+
///
/// 拓客时间
///
public DateTime? tksj { get; set; }
-
+
///
/// 拓客人员
///
public string tkry { get; set; }
-
+
///
/// 顾客姓名
///
public string gkxm { get; set; }
-
+
///
/// 电话号码
///
public string dhhm { get; set; }
-
+
///
/// 购买张数
///
public int? gmzs { get; set; }
-
+
///
/// 支付方式
///
public string zffs { get; set; }
-
+
///
/// 是否加微信
///
public string sfjwx { get; set; }
-
+
///
/// 备注
///
public string bz { get; set; }
-
+
///
/// 所属门店
///
public string ssmd { get; set; }
-
+
///
/// 所属战队
///
public string sszd { get; set; }
-
+
+ ///
+ /// 拓客活动id
+ ///
+ public string eventId { get; set; }
+
+ ///
+ /// 拓客活动名称
+ ///
+ public string eventName { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthInput.cs
new file mode 100644
index 0000000..86cbcc0
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthInput.cs
@@ -0,0 +1,23 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace NCC.Extend.Entitys.Dto.LqYcsdJsj
+{
+ ///
+ /// 根据用户和月份获取金三角信息输入参数
+ ///
+ public class LqYcsdJsjByUserMonthInput
+ {
+ ///
+ /// 用户ID
+ ///
+ [Required(ErrorMessage = "用户ID不能为空")]
+ public string UserId { get; set; }
+
+ ///
+ /// 时间(格式:yyyy-MM-dd HH:mm:ss)
+ ///
+ [Required(ErrorMessage = "时间不能为空")]
+ public DateTime DateTime { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs
new file mode 100644
index 0000000..d751a3b
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs
@@ -0,0 +1,58 @@
+namespace NCC.Extend.Entitys.Dto.LqYcsdJsj
+{
+ ///
+ /// 根据用户和月份获取金三角信息输出参数
+ ///
+ public class LqYcsdJsjByUserMonthOutput
+ {
+ ///
+ /// 金三角ID
+ ///
+ public string JsjId { get; set; }
+
+ ///
+ /// 金三角名称
+ ///
+ public string JsjName { get; set; }
+
+ ///
+ /// 月份
+ ///
+ public string Month { get; set; }
+
+ ///
+ /// 门店ID
+ ///
+ public string StoreId { get; set; }
+
+ ///
+ /// 门店名称
+ ///
+ public string StoreName { get; set; }
+
+ ///
+ /// 用户ID
+ ///
+ public string UserId { get; set; }
+
+ ///
+ /// 用户姓名
+ ///
+ public string UserName { get; set; }
+
+ ///
+ /// 是否顾问
+ ///
+ public int IsLeader { get; set; }
+
+ ///
+ /// 状态
+ ///
+ public string Status { get; set; }
+
+ ///
+ /// 排序
+ ///
+ public int SortOrder { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceInput.cs
new file mode 100644
index 0000000..e9f7e35
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceInput.cs
@@ -0,0 +1,30 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace NCC.Extend.Entitys.Dto.LqYcsdJsj
+{
+ ///
+ /// 金三角业绩统计查询输入参数
+ ///
+ public class LqYcsdJsjPerformanceInput
+ {
+ ///
+ /// 开始月份(格式:yyyyMM)
+ ///
+ public string StartMonth { get; set; }
+
+ ///
+ /// 结束月份(格式:yyyyMM)
+ ///
+ public string EndMonth { get; set; }
+
+ ///
+ /// 金三角ID(可选,用于查询特定金三角)
+ ///
+ public string JsjId { get; set; }
+
+ ///
+ /// 门店ID(可选,用于查询特定门店)
+ ///
+ public string StoreId { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceOutput.cs
new file mode 100644
index 0000000..a6d4756
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjPerformanceOutput.cs
@@ -0,0 +1,65 @@
+using System;
+
+namespace NCC.Extend.Entitys.Dto.LqYcsdJsj
+{
+ ///
+ /// 金三角业绩统计输出参数
+ ///
+ public class LqYcsdJsjPerformanceOutput
+ {
+ ///
+ /// 金三角ID
+ ///
+ public string JsjId { get; set; }
+
+ ///
+ /// 金三角名称
+ ///
+ public string JsjName { get; set; }
+
+ ///
+ /// 月份
+ ///
+ public string Month { get; set; }
+
+ ///
+ /// 门店ID
+ ///
+ public string StoreId { get; set; }
+
+ ///
+ /// 门店名称
+ ///
+ public string StoreName { get; set; }
+
+ ///
+ /// 订单数量
+ ///
+ public int OrderCount { get; set; }
+
+ ///
+ /// 总业绩
+ ///
+ public decimal TotalPerformance { get; set; }
+
+ ///
+ /// 最后订单日期
+ ///
+ public DateTime? LastOrderDate { get; set; }
+
+ ///
+ /// 首次订单日期
+ ///
+ public DateTime? FirstOrderDate { get; set; }
+
+ ///
+ /// 统计类型(ACTIVE-活跃金三角业绩,INACTIVE-单人业绩)
+ ///
+ public string StatisticsType { get; set; }
+
+ ///
+ /// 成员姓名(仅单人业绩时使用)
+ ///
+ public string MemberName { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs
index ae79ca9..b5f5023 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs
@@ -44,5 +44,11 @@ namespace NCC.Extend.Entitys.lq_event
///
[SugarColumn(ColumnName = "F_EventNumber")]
public string EventNumber { get; set; }
+
+ ///
+ /// 活动类型
+ ///
+ [SugarColumn(ColumnName = "F_EventType")]
+ public int EventType { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs
index bb0d209..7a75e90 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs
@@ -1,6 +1,6 @@
-using NCC.Common.Const;
+using System;
+using NCC.Common.Const;
using SqlSugar;
-using System;
namespace NCC.Extend.Entitys.lq_kd_jksyj
{
@@ -16,55 +16,53 @@ namespace NCC.Extend.Entitys.lq_kd_jksyj
///
[SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
public string Id { get; set; }
-
+
///
/// 关联开单编号
///
- [SugarColumn(ColumnName = "glkdbh")]
+ [SugarColumn(ColumnName = "glkdbh")]
public string Glkdbh { get; set; }
-
+
///
/// 健康师
///
- [SugarColumn(ColumnName = "jks")]
+ [SugarColumn(ColumnName = "jks")]
public string Jks { get; set; }
-
+
///
/// 健康师姓名
///
- [SugarColumn(ColumnName = "jksxm")]
+ [SugarColumn(ColumnName = "jksxm")]
public string Jksxm { get; set; }
-
+
///
/// 健康师账号
///
- [SugarColumn(ColumnName = "jkszh")]
+ [SugarColumn(ColumnName = "jkszh")]
public string Jkszh { get; set; }
-
+
///
/// 健康师业绩
///
- [SugarColumn(ColumnName = "jksyj")]
+ [SugarColumn(ColumnName = "jksyj")]
public string Jksyj { get; set; }
-
+
///
/// 业绩时间
///
- [SugarColumn(ColumnName = "yjsj")]
+ [SugarColumn(ColumnName = "yjsj")]
public DateTime? Yjsj { get; set; }
///
/// 金三角id
///
- [SugarColumn(ColumnName = "jsj_id")]
+ [SugarColumn(ColumnName = "jsj_id")]
public string Jsj_id { get; set; }
-
///
/// 开单品相id
///
- [SugarColumn(ColumnName = "F_kdpxid")]
+ [SugarColumn(ColumnName = "F_kdpxid")]
public string Kdpxid { get; set; }
-
}
-}
\ No newline at end of file
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
index 075ea1c..2421d72 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
@@ -184,5 +184,17 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
///
[SugarColumn(ColumnName = "F_FIleUrl")]
public string F_FIleUrl { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(ColumnName = "F_CreateTime")]
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ [SugarColumn(ColumnName = "F_UpdateTime")]
+ public DateTime UpdateTime { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs
index de1f7b7..cf1ba6e 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs
@@ -1,6 +1,6 @@
-using NCC.Common.Const;
+using System;
+using NCC.Common.Const;
using SqlSugar;
-using System;
namespace NCC.Extend.Entitys.lq_xh_hyhk
{
@@ -16,96 +16,107 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk
///
[SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
public string Id { get; set; }
-
+
///
/// 门店
///
- [SugarColumn(ColumnName = "md")]
+ [SugarColumn(ColumnName = "md")]
public string Md { get; set; }
-
+
///
/// 门店编号
///
- [SugarColumn(ColumnName = "mdbh")]
+ [SugarColumn(ColumnName = "mdbh")]
public string Mdbh { get; set; }
-
+
///
/// 门店名称
///
- [SugarColumn(ColumnName = "mdmc")]
+ [SugarColumn(ColumnName = "mdmc")]
public string Mdmc { get; set; }
-
+
///
/// 会员
///
- [SugarColumn(ColumnName = "hy")]
+ [SugarColumn(ColumnName = "hy")]
public string Hy { get; set; }
-
+
///
/// 会员账号
///
- [SugarColumn(ColumnName = "hyzh")]
+ [SugarColumn(ColumnName = "hyzh")]
public string Hyzh { get; set; }
-
+
///
/// 会员名称
///
- [SugarColumn(ColumnName = "hymc")]
+ [SugarColumn(ColumnName = "hymc")]
public string Hymc { get; set; }
-
+
///
/// 顾客类型
///
- [SugarColumn(ColumnName = "gklx")]
+ [SugarColumn(ColumnName = "gklx")]
public string Gklx { get; set; }
-
+
///
/// 消费金额
///
- [SugarColumn(ColumnName = "xfje")]
+ [SugarColumn(ColumnName = "xfje")]
public string Xfje { get; set; }
-
+
///
/// 手工费用
///
- [SugarColumn(ColumnName = "sgfy")]
+ [SugarColumn(ColumnName = "sgfy")]
public string Sgfy { get; set; }
-
+
///
/// 是否有科技部
///
- [SugarColumn(ColumnName = "sfykjb")]
+ [SugarColumn(ColumnName = "sfykjb")]
public string Sfykjb { get; set; }
-
+
///
/// 健康师业绩
///
- [SugarColumn(ColumnName = "jksyj")]
+ [SugarColumn(ColumnName = "jksyj")]
public string Jksyj { get; set; }
-
+
///
/// 科技部业绩
///
- [SugarColumn(ColumnName = "kjbyj")]
+ [SugarColumn(ColumnName = "kjbyj")]
public string Kjbyj { get; set; }
-
+
///
/// 品项信息
///
- [SugarColumn(ColumnName = "pxxx")]
+ [SugarColumn(ColumnName = "pxxx")]
public string Pxxx { get; set; }
-
+
///
/// 耗卡时间
///
- [SugarColumn(ColumnName = "hksj")]
+ [SugarColumn(ColumnName = "hksj")]
public DateTime? Hksj { get; set; }
-
+
///
/// 操作人员
///
- [SugarColumn(ColumnName = "czry")]
+ [SugarColumn(ColumnName = "czry")]
public string Czry { get; set; }
-
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(ColumnName = "F_CreateTime")]
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ [SugarColumn(ColumnName = "F_UpdateTime")]
+ public DateTime UpdateTime { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/EventType.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/EventType.cs
new file mode 100644
index 0000000..c846e8a
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/EventType.cs
@@ -0,0 +1,22 @@
+using System.ComponentModel;
+
+namespace NCC.Extend.Entitys.Enum
+{
+ ///
+ /// 活动类型
+ ///
+ public enum EventType
+ {
+ ///
+ /// 日常拓客
+ ///
+ [Description("日常拓客")]
+ 日常拓客 = 1,
+
+ ///
+ /// 全员拓客
+ ///
+ [Description("全员拓客")]
+ 全员拓客 = 3,
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/NCC.Extend.Entitys.csproj b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/NCC.Extend.Entitys.csproj
index 596ec4b..ca2ef87 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/NCC.Extend.Entitys.csproj
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/NCC.Extend.Entitys.csproj
@@ -1,23 +1,13 @@
-
net6.0
-
bin\Release\NCC.Extend.Entitys.xml
-
-
-
-
-
-
-
-
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
index 08e180d..9e97358 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Threading.Tasks;
using Mapster;
using Microsoft.AspNetCore.Http;
@@ -13,6 +15,7 @@ using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys.Dto.LqEvent;
using NCC.Extend.Entitys.Dto.LqEventUser;
+using NCC.Extend.Entitys.Enum;
using NCC.Extend.Entitys.lq_event;
using NCC.Extend.Entitys.lq_eventuser;
using NCC.Extend.Entitys.lq_mdxx;
@@ -92,6 +95,7 @@ namespace NCC.Extend.LqEvent
eventCoordinator = e.EventCoordinator,
eventNumber = e.EventNumber,
memberCount = SqlFunc.Subqueryable().Where(u => u.EventId == e.Id).Count(),
+ eventType = e.EventType,
})
.MergeTable()
.OrderBy(sidx + " " + sord)
@@ -203,6 +207,10 @@ namespace NCC.Extend.LqEvent
// 生成新的ID
entity.Id = YitIdHelper.NextId().ToString();
+ // 手动设置时间字段,确保时分秒不丢失
+ entity.StartTime = input.StartTime;
+ entity.EndTime = input.EndTime;
+
// 插入拓客活动
var isOk = await _db.Insertable(entity).ExecuteCommandAsync();
if (!(isOk > 0))
@@ -288,6 +296,10 @@ namespace NCC.Extend.LqEvent
var userInfo = await _userManager.GetUserInfo();
var entity = input.Adapt();
+ // 手动设置时间字段,确保时分秒不丢失
+ entity.StartTime = input.StartTime;
+ entity.EndTime = input.EndTime;
+
// 更新拓客活动
var isOk = await _db.Updateable(entity).ExecuteCommandAsync();
if (!(isOk > 0))
@@ -352,7 +364,7 @@ namespace NCC.Extend.LqEvent
public async Task Delete(string id)
{
// 删除拓客活动成员
- await _db.Deleteable().Where(u => u.EventId == id.ToString()).ExecuteCommandAsync();
+ await _db.Deleteable().Where(u => u.EventId == id).ExecuteCommandAsync();
// 删除拓客活动
var isOk = await _db.Deleteable().Where(p => p.Id == id).ExecuteCommandAsync();
@@ -475,6 +487,7 @@ namespace NCC.Extend.LqEvent
EventTarget = eventUser.EventTarget,
CreationTime = eventUser.CreationTime,
CreationUser = eventUser.CreationUser,
+ StoreId = eventUser.StoreId,
}
);
}
@@ -737,5 +750,40 @@ namespace NCC.Extend.LqEvent
}
#endregion
+
+ #region 获取拓客类型枚举内容
+
+ ///
+ /// 获取拓客类型枚举内容
+ ///
+ /// 拓客类型枚举列表
+ [HttpGet("event-types")]
+ public List GetEventTypes()
+ {
+ var result = new List();
+
+ // 获取所有枚举值
+ var enumValues = Enum.GetValues();
+
+ foreach (var enumValue in enumValues)
+ {
+ // 获取枚举的Description特性
+ var field = enumValue.GetType().GetField(enumValue.ToString());
+ var descriptionAttribute = field?.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute;
+
+ result.Add(
+ new EventTypeEnumOutput
+ {
+ Value = (int)enumValue,
+ Name = enumValue.ToString(),
+ Description = descriptionAttribute?.Description ?? enumValue.ToString(),
+ }
+ );
+ }
+
+ return result;
+ }
+
+ #endregion
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs
index f1d22e2..37fd74a 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs
@@ -1,43 +1,43 @@
-using NCC.Common.Core.Manager;
-using NCC.Common.Enum;
-using NCC.Common.Extension;
-using NCC.Common.Filter;
-using NCC.Dependency;
-using NCC.DynamicApiController;
-using NCC.FriendlyException;
-using NCC.Extend.Interfaces.LqGz;
-using Mapster;
-using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using NCC.Extend.Entitys.lq_gz;
-using Yitter.IdGenerator;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using NCC.ClayObject;
+using NCC.Common.Configuration;
+using NCC.Common.Core.Manager;
+using NCC.Common.Enum;
+using NCC.Common.Extension;
+using NCC.Common.Filter;
using NCC.Common.Helper;
-using NCC.JsonSerialization;
using NCC.Common.Model.NPOI;
-using NCC.Common.Configuration;
using NCC.DataEncryption;
-using NCC.ClayObject;
-using NCC.Extend.Entitys.lq_kd_pxmx;
-using NCC.Extend.Entitys.lq_xmzl;
+using NCC.Dependency;
+using NCC.DynamicApiController;
+using NCC.Extend.Entitys.Dto.LqGz;
+using NCC.Extend.Entitys.lq_gz;
using NCC.Extend.Entitys.lq_jlmxb;
-using NCC.Extend.Entitys.lq_ycsd_jsj;
-using NCC.Extend.Entitys.lq_mdxx;
-using NCC.Extend.Entitys.lq_kd_kdjlb;
using NCC.Extend.Entitys.lq_kd_jksyj;
+using NCC.Extend.Entitys.lq_kd_kdjlb;
using NCC.Extend.Entitys.lq_kd_kjbsyj;
-using Microsoft.Extensions.Logging;
-using NCC.Extend.Entitys.Dto.LqGz;
+using NCC.Extend.Entitys.lq_kd_pxmx;
+using NCC.Extend.Entitys.lq_mdxx;
+using NCC.Extend.Entitys.lq_xmzl;
+using NCC.Extend.Entitys.lq_ycsd_jsj;
+using NCC.Extend.Interfaces.LqGz;
+using NCC.FriendlyException;
+using NCC.JsonSerialization;
+using SqlSugar;
+using Yitter.IdGenerator;
namespace NCC.Extend.LqGz
{
///
/// 工资全字段服务
///
- [ApiDescriptionSettings(Tag = "绿纤工资全字段服务",Name = "LqGz", Order = 200)]
+ [ApiDescriptionSettings(Tag = "绿纤工资全字段服务", Name = "LqGz", Order = 200)]
[Route("api/Extend/[controller]")]
public class LqGzService : ILqGzService, IDynamicApiController, ITransient
{
@@ -49,12 +49,9 @@ namespace NCC.Extend.LqGz
///
/// 初始化一个类型的新实例
///
- public LqGzService(
- ISqlSugarRepository lqGzRepository,
- IUserManager userManager,
- ILogger logger)
+ public LqGzService(ISqlSugarRepository lqGzRepository, IUserManager userManager, ILogger logger)
{
- _lqGzRepository = lqGzRepository;
+ _lqGzRepository = lqGzRepository;
_db = _lqGzRepository.Context;
_userManager = userManager;
_logger = logger;
@@ -74,10 +71,10 @@ namespace NCC.Extend.LqGz
}
///
- /// 获取工资全字段列表
- ///
- /// 请求参数
- ///
+ /// 获取工资全字段列表
+ ///
+ /// 请求参数
+ ///
[HttpGet("")]
public async Task GetList([FromQuery] LqGzListQueryInput input)
{
@@ -182,109 +179,112 @@ namespace NCC.Extend.LqGz
.WhereIF(!string.IsNullOrEmpty(input.dzjfe), p => p.Dzjfe.Equals(input.dzjfe))
.WhereIF(!string.IsNullOrEmpty(input.bfsy), p => p.Bfsy.Equals(input.bfsy))
.WhereIF(!string.IsNullOrEmpty(input.dyzfze), p => p.Dyzfze.Equals(input.dyzfze))
- .Select(it=> new LqGzListOutput
+ .Select(it => new LqGzListOutput
{
id = it.Id,
- md=it.Md,
- hsgw=it.Hsgw,
- xm=it.Xm,
- jsjzd=it.Jsjzd,
- zyj=it.Zyj,
- jcyj=it.Jcyj,
- hzyj=it.Hzyj,
- jlyj=it.Jlyj,
- mdzyj=it.Mdzyj,
- dwyj=it.Dwyj,
- zb=it.Zb,
- xkyj=it.Xkyj,
- xkcjl=it.Xkcjl,
- xktd=it.Xktd,
- sdyj=it.Sdyj,
- sdtd=it.Sdtd,
- syyj=it.Syyj,
- cellyj=it.Cellyj,
- dxmybyj=it.Dxmybyj,
- dxmebyj=it.Dxmebyj,
- dyyj=it.Dyyj,
- wysd=it.Wysd,
- mdzc=it.Mdzc,
- cpwl=it.Cpwl,
- wdcb=it.Wdcb,
- qthzcb=it.Qthzcb,
- xmj=it.Xmj,
- ml=it.Ml,
- zjltce=it.Zjltce,
- jltce=it.Jltce,
- xh=it.Xh,
- xms=it.Xms,
- ddrt=it.Ddrt,
- zdts=it.Zdts,
- qjts=it.Qjts,
- td=it.Td,
- jcyjtc=it.Jcyjtc,
- hzyjtc=it.Hzyjtc,
- gwtc=it.Gwtc,
- mdtqtc=it.Mdtqtc,
- dztc1=it.Dztc1,
- dzzrtc=it.Dzzrtc,
- zrtc=it.Zrtc,
- dztc2=it.Dztc2,
- zjltc=it.Zjltc,
- jltc=it.Jltc,
- yjtc=it.Yjtc,
- xhtc=it.Xhtc,
- kjbzctc=it.Kjbzctc,
- sytc=it.Sytc,
- celltc=it.Celltc,
- dxmbtc=it.Dxmbtc,
- tchj=it.Tchj,
- jksdx=it.Jksdx,
- dzhudx=it.Dzhudx,
- dzhangdx=it.Dzhangdx,
- zrdx=it.Zrdx,
- dzzrdx=it.Dzzrdx,
- zjldx=it.Zjldx,
- jldx=it.Jldx,
- kjblsdx=it.Kjblsdx,
- dxmbdx=it.Dxmbdx,
- dxhj=it.Dxhj,
- sg=it.Sg,
- rtjl=it.Rtjl,
- sjgl=it.Sjgl,
- cb=it.Cb,
- sx=it.Sx,
- qq=it.Qq,
- hsyfgz=it.Hsyfgz,
- bd=it.Bd,
- bdqj=it.Bdqj,
- bddx=it.Bddx,
- bdbc=it.Bdbc,
- zzyfgz=it.Zzyfgz,
- dypxbt=it.Dypxbt,
- dyjtbt=it.Dyjtbt,
- sypxbt=it.Sypxbt,
- syjtbt=it.Syjtbt,
- bthj=it.Bthj,
- qk=it.Qk,
- cd=it.Cd,
- qj=it.Qj,
- ksb=it.Ksb,
- kcjl=it.Kcjl,
- kzs=it.Kzs,
- kxxq=it.Kxxq,
- kgzf=it.Kgzf,
- kkhj=it.Kkhj,
- fjj=it.Fjj,
- tsjyj=it.Tsjyj,
- tzsyj=it.Tzsyj,
- sfgz=it.Sfgz,
- dysfff=it.Dysfff,
- zfje=it.Zfje,
- dzjfe=it.Dzjfe,
- bfsy=it.Bfsy,
- dyzfze=it.Dyzfze,
- }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
- return PageResult.SqlSugarPageResult(data);
+ md = it.Md,
+ hsgw = it.Hsgw,
+ xm = it.Xm,
+ jsjzd = it.Jsjzd,
+ zyj = it.Zyj,
+ jcyj = it.Jcyj,
+ hzyj = it.Hzyj,
+ jlyj = it.Jlyj,
+ mdzyj = it.Mdzyj,
+ dwyj = it.Dwyj,
+ zb = it.Zb,
+ xkyj = it.Xkyj,
+ xkcjl = it.Xkcjl,
+ xktd = it.Xktd,
+ sdyj = it.Sdyj,
+ sdtd = it.Sdtd,
+ syyj = it.Syyj,
+ cellyj = it.Cellyj,
+ dxmybyj = it.Dxmybyj,
+ dxmebyj = it.Dxmebyj,
+ dyyj = it.Dyyj,
+ wysd = it.Wysd,
+ mdzc = it.Mdzc,
+ cpwl = it.Cpwl,
+ wdcb = it.Wdcb,
+ qthzcb = it.Qthzcb,
+ xmj = it.Xmj,
+ ml = it.Ml,
+ zjltce = it.Zjltce,
+ jltce = it.Jltce,
+ xh = it.Xh,
+ xms = it.Xms,
+ ddrt = it.Ddrt,
+ zdts = it.Zdts,
+ qjts = it.Qjts,
+ td = it.Td,
+ jcyjtc = it.Jcyjtc,
+ hzyjtc = it.Hzyjtc,
+ gwtc = it.Gwtc,
+ mdtqtc = it.Mdtqtc,
+ dztc1 = it.Dztc1,
+ dzzrtc = it.Dzzrtc,
+ zrtc = it.Zrtc,
+ dztc2 = it.Dztc2,
+ zjltc = it.Zjltc,
+ jltc = it.Jltc,
+ yjtc = it.Yjtc,
+ xhtc = it.Xhtc,
+ kjbzctc = it.Kjbzctc,
+ sytc = it.Sytc,
+ celltc = it.Celltc,
+ dxmbtc = it.Dxmbtc,
+ tchj = it.Tchj,
+ jksdx = it.Jksdx,
+ dzhudx = it.Dzhudx,
+ dzhangdx = it.Dzhangdx,
+ zrdx = it.Zrdx,
+ dzzrdx = it.Dzzrdx,
+ zjldx = it.Zjldx,
+ jldx = it.Jldx,
+ kjblsdx = it.Kjblsdx,
+ dxmbdx = it.Dxmbdx,
+ dxhj = it.Dxhj,
+ sg = it.Sg,
+ rtjl = it.Rtjl,
+ sjgl = it.Sjgl,
+ cb = it.Cb,
+ sx = it.Sx,
+ qq = it.Qq,
+ hsyfgz = it.Hsyfgz,
+ bd = it.Bd,
+ bdqj = it.Bdqj,
+ bddx = it.Bddx,
+ bdbc = it.Bdbc,
+ zzyfgz = it.Zzyfgz,
+ dypxbt = it.Dypxbt,
+ dyjtbt = it.Dyjtbt,
+ sypxbt = it.Sypxbt,
+ syjtbt = it.Syjtbt,
+ bthj = it.Bthj,
+ qk = it.Qk,
+ cd = it.Cd,
+ qj = it.Qj,
+ ksb = it.Ksb,
+ kcjl = it.Kcjl,
+ kzs = it.Kzs,
+ kxxq = it.Kxxq,
+ kgzf = it.Kgzf,
+ kkhj = it.Kkhj,
+ fjj = it.Fjj,
+ tsjyj = it.Tsjyj,
+ tzsyj = it.Tzsyj,
+ sfgz = it.Sfgz,
+ dysfff = it.Dysfff,
+ zfje = it.Zfje,
+ dzjfe = it.Dzjfe,
+ bfsy = it.Bfsy,
+ dyzfze = it.Dyzfze,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(data);
}
///
@@ -299,14 +299,15 @@ namespace NCC.Extend.LqGz
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1000);
}
///
- /// 获取工资全字段无分页列表
- ///
- /// 请求参数
- ///
+ /// 获取工资全字段无分页列表
+ ///
+ /// 请求参数
+ ///
[NonAction]
public async Task GetNoPagingList([FromQuery] LqGzListQueryInput input)
{
@@ -411,116 +412,119 @@ namespace NCC.Extend.LqGz
.WhereIF(!string.IsNullOrEmpty(input.dzjfe), p => p.Dzjfe.Equals(input.dzjfe))
.WhereIF(!string.IsNullOrEmpty(input.bfsy), p => p.Bfsy.Equals(input.bfsy))
.WhereIF(!string.IsNullOrEmpty(input.dyzfze), p => p.Dyzfze.Equals(input.dyzfze))
- .Select(it=> new LqGzListOutput
+ .Select(it => new LqGzListOutput
{
id = it.Id,
- md=it.Md,
- hsgw=it.Hsgw,
- xm=it.Xm,
- jsjzd=it.Jsjzd,
- zyj=it.Zyj,
- jcyj=it.Jcyj,
- hzyj=it.Hzyj,
- jlyj=it.Jlyj,
- mdzyj=it.Mdzyj,
- dwyj=it.Dwyj,
- zb=it.Zb,
- xkyj=it.Xkyj,
- xkcjl=it.Xkcjl,
- xktd=it.Xktd,
- sdyj=it.Sdyj,
- sdtd=it.Sdtd,
- syyj=it.Syyj,
- cellyj=it.Cellyj,
- dxmybyj=it.Dxmybyj,
- dxmebyj=it.Dxmebyj,
- dyyj=it.Dyyj,
- wysd=it.Wysd,
- mdzc=it.Mdzc,
- cpwl=it.Cpwl,
- wdcb=it.Wdcb,
- qthzcb=it.Qthzcb,
- xmj=it.Xmj,
- ml=it.Ml,
- zjltce=it.Zjltce,
- jltce=it.Jltce,
- xh=it.Xh,
- xms=it.Xms,
- ddrt=it.Ddrt,
- zdts=it.Zdts,
- qjts=it.Qjts,
- td=it.Td,
- jcyjtc=it.Jcyjtc,
- hzyjtc=it.Hzyjtc,
- gwtc=it.Gwtc,
- mdtqtc=it.Mdtqtc,
- dztc1=it.Dztc1,
- dzzrtc=it.Dzzrtc,
- zrtc=it.Zrtc,
- dztc2=it.Dztc2,
- zjltc=it.Zjltc,
- jltc=it.Jltc,
- yjtc=it.Yjtc,
- xhtc=it.Xhtc,
- kjbzctc=it.Kjbzctc,
- sytc=it.Sytc,
- celltc=it.Celltc,
- dxmbtc=it.Dxmbtc,
- tchj=it.Tchj,
- jksdx=it.Jksdx,
- dzhudx=it.Dzhudx,
- dzhangdx=it.Dzhangdx,
- zrdx=it.Zrdx,
- dzzrdx=it.Dzzrdx,
- zjldx=it.Zjldx,
- jldx=it.Jldx,
- kjblsdx=it.Kjblsdx,
- dxmbdx=it.Dxmbdx,
- dxhj=it.Dxhj,
- sg=it.Sg,
- rtjl=it.Rtjl,
- sjgl=it.Sjgl,
- cb=it.Cb,
- sx=it.Sx,
- qq=it.Qq,
- hsyfgz=it.Hsyfgz,
- bd=it.Bd,
- bdqj=it.Bdqj,
- bddx=it.Bddx,
- bdbc=it.Bdbc,
- zzyfgz=it.Zzyfgz,
- dypxbt=it.Dypxbt,
- dyjtbt=it.Dyjtbt,
- sypxbt=it.Sypxbt,
- syjtbt=it.Syjtbt,
- bthj=it.Bthj,
- qk=it.Qk,
- cd=it.Cd,
- qj=it.Qj,
- ksb=it.Ksb,
- kcjl=it.Kcjl,
- kzs=it.Kzs,
- kxxq=it.Kxxq,
- kgzf=it.Kgzf,
- kkhj=it.Kkhj,
- fjj=it.Fjj,
- tsjyj=it.Tsjyj,
- tzsyj=it.Tzsyj,
- sfgz=it.Sfgz,
- dysfff=it.Dysfff,
- zfje=it.Zfje,
- dzjfe=it.Dzjfe,
- bfsy=it.Bfsy,
- dyzfze=it.Dyzfze,
- }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync();
- return data;
+ md = it.Md,
+ hsgw = it.Hsgw,
+ xm = it.Xm,
+ jsjzd = it.Jsjzd,
+ zyj = it.Zyj,
+ jcyj = it.Jcyj,
+ hzyj = it.Hzyj,
+ jlyj = it.Jlyj,
+ mdzyj = it.Mdzyj,
+ dwyj = it.Dwyj,
+ zb = it.Zb,
+ xkyj = it.Xkyj,
+ xkcjl = it.Xkcjl,
+ xktd = it.Xktd,
+ sdyj = it.Sdyj,
+ sdtd = it.Sdtd,
+ syyj = it.Syyj,
+ cellyj = it.Cellyj,
+ dxmybyj = it.Dxmybyj,
+ dxmebyj = it.Dxmebyj,
+ dyyj = it.Dyyj,
+ wysd = it.Wysd,
+ mdzc = it.Mdzc,
+ cpwl = it.Cpwl,
+ wdcb = it.Wdcb,
+ qthzcb = it.Qthzcb,
+ xmj = it.Xmj,
+ ml = it.Ml,
+ zjltce = it.Zjltce,
+ jltce = it.Jltce,
+ xh = it.Xh,
+ xms = it.Xms,
+ ddrt = it.Ddrt,
+ zdts = it.Zdts,
+ qjts = it.Qjts,
+ td = it.Td,
+ jcyjtc = it.Jcyjtc,
+ hzyjtc = it.Hzyjtc,
+ gwtc = it.Gwtc,
+ mdtqtc = it.Mdtqtc,
+ dztc1 = it.Dztc1,
+ dzzrtc = it.Dzzrtc,
+ zrtc = it.Zrtc,
+ dztc2 = it.Dztc2,
+ zjltc = it.Zjltc,
+ jltc = it.Jltc,
+ yjtc = it.Yjtc,
+ xhtc = it.Xhtc,
+ kjbzctc = it.Kjbzctc,
+ sytc = it.Sytc,
+ celltc = it.Celltc,
+ dxmbtc = it.Dxmbtc,
+ tchj = it.Tchj,
+ jksdx = it.Jksdx,
+ dzhudx = it.Dzhudx,
+ dzhangdx = it.Dzhangdx,
+ zrdx = it.Zrdx,
+ dzzrdx = it.Dzzrdx,
+ zjldx = it.Zjldx,
+ jldx = it.Jldx,
+ kjblsdx = it.Kjblsdx,
+ dxmbdx = it.Dxmbdx,
+ dxhj = it.Dxhj,
+ sg = it.Sg,
+ rtjl = it.Rtjl,
+ sjgl = it.Sjgl,
+ cb = it.Cb,
+ sx = it.Sx,
+ qq = it.Qq,
+ hsyfgz = it.Hsyfgz,
+ bd = it.Bd,
+ bdqj = it.Bdqj,
+ bddx = it.Bddx,
+ bdbc = it.Bdbc,
+ zzyfgz = it.Zzyfgz,
+ dypxbt = it.Dypxbt,
+ dyjtbt = it.Dyjtbt,
+ sypxbt = it.Sypxbt,
+ syjtbt = it.Syjtbt,
+ bthj = it.Bthj,
+ qk = it.Qk,
+ cd = it.Cd,
+ qj = it.Qj,
+ ksb = it.Ksb,
+ kcjl = it.Kcjl,
+ kzs = it.Kzs,
+ kxxq = it.Kxxq,
+ kgzf = it.Kgzf,
+ kkhj = it.Kkhj,
+ fjj = it.Fjj,
+ tsjyj = it.Tsjyj,
+ tzsyj = it.Tzsyj,
+ sfgz = it.Sfgz,
+ dysfff = it.Dysfff,
+ zfje = it.Zfje,
+ dzjfe = it.Dzjfe,
+ bfsy = it.Bfsy,
+ dyzfze = it.Dyzfze,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToListAsync();
+ return data;
}
///
- /// 导出工资全字段
- ///
- /// 请求参数
- ///
+ /// 导出工资全字段
+ ///
+ /// 请求参数
+ ///
[HttpGet("Actions/Export")]
public async Task Export([FromQuery] LqGzListQueryInput input)
{
@@ -535,7 +539,8 @@ namespace NCC.Extend.LqGz
{
exportData = await this.GetNoPagingList(input);
}
- List paramList = "[{\"value\":\"主键\",\"field\":\"id\"},{\"value\":\"门店\",\"field\":\"md\"},{\"value\":\"核算岗位\",\"field\":\"hsgw\"},{\"value\":\"姓名\",\"field\":\"xm\"},{\"value\":\"金山角战队\",\"field\":\"jsjzd\"},{\"value\":\"基础业绩\",\"field\":\"jcyj\"},{\"value\":\"合作业绩\",\"field\":\"hzyj\"},{\"value\":\"奖励业绩\",\"field\":\"jlyj\"},{\"value\":\"门店总业绩\",\"field\":\"mdzyj\"},{\"value\":\"队伍业绩\",\"field\":\"dwyj\"},{\"value\":\"占比\",\"field\":\"zb\"},{\"value\":\"新客业绩\",\"field\":\"xkyj\"},{\"value\":\"新客成交率\",\"field\":\"xkcjl\"},{\"value\":\"新客提点\",\"field\":\"xktd\"},{\"value\":\"升单业绩\",\"field\":\"sdyj\"},{\"value\":\"升单提点\",\"field\":\"sdtd\"},{\"value\":\"溯源业绩\",\"field\":\"syyj\"},{\"value\":\"cell业绩\",\"field\":\"cellyj\"},{\"value\":\"项目一部业绩\",\"field\":\"dxmybyj\"},{\"value\":\"项目二部业绩\",\"field\":\"dxmebyj\"},{\"value\":\"当月业绩\",\"field\":\"dyyj\"},{\"value\":\"物业水电\",\"field\":\"wysd\"},{\"value\":\"门店支出\",\"field\":\"mdzc\"},{\"value\":\"产品物料\",\"field\":\"cpwl\"},{\"value\":\"微雕成本\",\"field\":\"wdcb\"},{\"value\":\"其它合作成本\",\"field\":\"qthzcb\"},{\"value\":\"洗毛巾\",\"field\":\"xmj\"},{\"value\":\"毛利\",\"field\":\"ml\"},{\"value\":\"总经理提成额\",\"field\":\"zjltce\"},{\"value\":\"经理提成额\",\"field\":\"jltce\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"到店人头\",\"field\":\"ddrt\"},{\"value\":\"在店天数\",\"field\":\"zdts\"},{\"value\":\"请假天数\",\"field\":\"qjts\"},{\"value\":\"提点\",\"field\":\"td\"},{\"value\":\"基础业绩提成\",\"field\":\"jcyjtc\"},{\"value\":\"合作业绩提成\",\"field\":\"hzyjtc\"},{\"value\":\"顾问提成\",\"field\":\"gwtc\"},{\"value\":\"门店T区提成\",\"field\":\"mdtqtc\"},{\"value\":\"店助提成\",\"field\":\"dztc1\"},{\"value\":\"店助主任提成\",\"field\":\"dzzrtc\"},{\"value\":\"主任提成\",\"field\":\"zrtc\"},{\"value\":\"店长提成\",\"field\":\"dztc2\"},{\"value\":\"总经理提成\",\"field\":\"zjltc\"},{\"value\":\"经理提成\",\"field\":\"jltc\"},{\"value\":\"业绩提成\",\"field\":\"yjtc\"},{\"value\":\"消耗提成\",\"field\":\"xhtc\"},{\"value\":\"科技部组长提成\",\"field\":\"kjbzctc\"},{\"value\":\"溯源提成\",\"field\":\"sytc\"},{\"value\":\"cell提成\",\"field\":\"celltc\"},{\"value\":\"大项目部提成\",\"field\":\"dxmbtc\"},{\"value\":\"提成合计\",\"field\":\"tchj\"},{\"value\":\"健康师底薪\",\"field\":\"jksdx\"},{\"value\":\"店助底薪\",\"field\":\"dzhudx\"},{\"value\":\"店长底薪\",\"field\":\"dzhangdx\"},{\"value\":\"主任底薪\",\"field\":\"zrdx\"},{\"value\":\"店助主任底薪\",\"field\":\"dzzrdx\"},{\"value\":\"总经理底薪\",\"field\":\"zjldx\"},{\"value\":\"经理底薪\",\"field\":\"jldx\"},{\"value\":\"科技部底薪\",\"field\":\"kjblsdx\"},{\"value\":\"大项目部底薪\",\"field\":\"dxmbdx\"},{\"value\":\"底薪合计\",\"field\":\"dxhj\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"人头奖励\",\"field\":\"rtjl\"},{\"value\":\"手机管理\",\"field\":\"sjgl\"},{\"value\":\"车补\",\"field\":\"cb\"},{\"value\":\"少休\",\"field\":\"sx\"},{\"value\":\"全勤\",\"field\":\"qq\"},{\"value\":\"核算应发工资\",\"field\":\"hsyfgz\"},{\"value\":\"保底\",\"field\":\"bd\"},{\"value\":\"保底请假\",\"field\":\"bdqj\"},{\"value\":\"保底底薪\",\"field\":\"bddx\"},{\"value\":\"保底补差\",\"field\":\"bdbc\"},{\"value\":\"最终应发工资\",\"field\":\"zzyfgz\"},{\"value\":\"当月培训补贴\",\"field\":\"dypxbt\"},{\"value\":\"当月交通补贴\",\"field\":\"dyjtbt\"},{\"value\":\"上月培训补贴\",\"field\":\"sypxbt\"},{\"value\":\"上月交通补贴\",\"field\":\"syjtbt\"},{\"value\":\"补贴合计\",\"field\":\"bthj\"},{\"value\":\"缺卡\",\"field\":\"qk\"},{\"value\":\"迟到\",\"field\":\"cd\"},{\"value\":\"请假\",\"field\":\"qj\"},{\"value\":\"扣社保\",\"field\":\"ksb\"},{\"value\":\"扣除奖励\",\"field\":\"kcjl\"},{\"value\":\"扣住宿\",\"field\":\"kzs\"},{\"value\":\"扣学习期\",\"field\":\"kxxq\"},{\"value\":\"扣工作服\",\"field\":\"kgzf\"},{\"value\":\"扣款合计\",\"field\":\"kkhj\"},{\"value\":\"发奖金\",\"field\":\"fjj\"},{\"value\":\"退手机押金\",\"field\":\"tsjyj\"},{\"value\":\"退住宿押金\",\"field\":\"tzsyj\"},{\"value\":\"实发工资\",\"field\":\"sfgz\"},{\"value\":\"当月是否发放\",\"field\":\"dysfff\"},{\"value\":\"支付金额\",\"field\":\"zfje\"},{\"value\":\"待支付金额\",\"field\":\"dzjfe\"},{\"value\":\"补发上月\",\"field\":\"bfsy\"},{\"value\":\"当月支付总额\",\"field\":\"dyzfze\"},{\"value\":\"总业绩\",\"field\":\"zyj\"},]".ToList();
+ List paramList =
+ "[{\"value\":\"主键\",\"field\":\"id\"},{\"value\":\"门店\",\"field\":\"md\"},{\"value\":\"核算岗位\",\"field\":\"hsgw\"},{\"value\":\"姓名\",\"field\":\"xm\"},{\"value\":\"金山角战队\",\"field\":\"jsjzd\"},{\"value\":\"基础业绩\",\"field\":\"jcyj\"},{\"value\":\"合作业绩\",\"field\":\"hzyj\"},{\"value\":\"奖励业绩\",\"field\":\"jlyj\"},{\"value\":\"门店总业绩\",\"field\":\"mdzyj\"},{\"value\":\"队伍业绩\",\"field\":\"dwyj\"},{\"value\":\"占比\",\"field\":\"zb\"},{\"value\":\"新客业绩\",\"field\":\"xkyj\"},{\"value\":\"新客成交率\",\"field\":\"xkcjl\"},{\"value\":\"新客提点\",\"field\":\"xktd\"},{\"value\":\"升单业绩\",\"field\":\"sdyj\"},{\"value\":\"升单提点\",\"field\":\"sdtd\"},{\"value\":\"溯源业绩\",\"field\":\"syyj\"},{\"value\":\"cell业绩\",\"field\":\"cellyj\"},{\"value\":\"项目一部业绩\",\"field\":\"dxmybyj\"},{\"value\":\"项目二部业绩\",\"field\":\"dxmebyj\"},{\"value\":\"当月业绩\",\"field\":\"dyyj\"},{\"value\":\"物业水电\",\"field\":\"wysd\"},{\"value\":\"门店支出\",\"field\":\"mdzc\"},{\"value\":\"产品物料\",\"field\":\"cpwl\"},{\"value\":\"微雕成本\",\"field\":\"wdcb\"},{\"value\":\"其它合作成本\",\"field\":\"qthzcb\"},{\"value\":\"洗毛巾\",\"field\":\"xmj\"},{\"value\":\"毛利\",\"field\":\"ml\"},{\"value\":\"总经理提成额\",\"field\":\"zjltce\"},{\"value\":\"经理提成额\",\"field\":\"jltce\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"到店人头\",\"field\":\"ddrt\"},{\"value\":\"在店天数\",\"field\":\"zdts\"},{\"value\":\"请假天数\",\"field\":\"qjts\"},{\"value\":\"提点\",\"field\":\"td\"},{\"value\":\"基础业绩提成\",\"field\":\"jcyjtc\"},{\"value\":\"合作业绩提成\",\"field\":\"hzyjtc\"},{\"value\":\"顾问提成\",\"field\":\"gwtc\"},{\"value\":\"门店T区提成\",\"field\":\"mdtqtc\"},{\"value\":\"店助提成\",\"field\":\"dztc1\"},{\"value\":\"店助主任提成\",\"field\":\"dzzrtc\"},{\"value\":\"主任提成\",\"field\":\"zrtc\"},{\"value\":\"店长提成\",\"field\":\"dztc2\"},{\"value\":\"总经理提成\",\"field\":\"zjltc\"},{\"value\":\"经理提成\",\"field\":\"jltc\"},{\"value\":\"业绩提成\",\"field\":\"yjtc\"},{\"value\":\"消耗提成\",\"field\":\"xhtc\"},{\"value\":\"科技部组长提成\",\"field\":\"kjbzctc\"},{\"value\":\"溯源提成\",\"field\":\"sytc\"},{\"value\":\"cell提成\",\"field\":\"celltc\"},{\"value\":\"大项目部提成\",\"field\":\"dxmbtc\"},{\"value\":\"提成合计\",\"field\":\"tchj\"},{\"value\":\"健康师底薪\",\"field\":\"jksdx\"},{\"value\":\"店助底薪\",\"field\":\"dzhudx\"},{\"value\":\"店长底薪\",\"field\":\"dzhangdx\"},{\"value\":\"主任底薪\",\"field\":\"zrdx\"},{\"value\":\"店助主任底薪\",\"field\":\"dzzrdx\"},{\"value\":\"总经理底薪\",\"field\":\"zjldx\"},{\"value\":\"经理底薪\",\"field\":\"jldx\"},{\"value\":\"科技部底薪\",\"field\":\"kjblsdx\"},{\"value\":\"大项目部底薪\",\"field\":\"dxmbdx\"},{\"value\":\"底薪合计\",\"field\":\"dxhj\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"人头奖励\",\"field\":\"rtjl\"},{\"value\":\"手机管理\",\"field\":\"sjgl\"},{\"value\":\"车补\",\"field\":\"cb\"},{\"value\":\"少休\",\"field\":\"sx\"},{\"value\":\"全勤\",\"field\":\"qq\"},{\"value\":\"核算应发工资\",\"field\":\"hsyfgz\"},{\"value\":\"保底\",\"field\":\"bd\"},{\"value\":\"保底请假\",\"field\":\"bdqj\"},{\"value\":\"保底底薪\",\"field\":\"bddx\"},{\"value\":\"保底补差\",\"field\":\"bdbc\"},{\"value\":\"最终应发工资\",\"field\":\"zzyfgz\"},{\"value\":\"当月培训补贴\",\"field\":\"dypxbt\"},{\"value\":\"当月交通补贴\",\"field\":\"dyjtbt\"},{\"value\":\"上月培训补贴\",\"field\":\"sypxbt\"},{\"value\":\"上月交通补贴\",\"field\":\"syjtbt\"},{\"value\":\"补贴合计\",\"field\":\"bthj\"},{\"value\":\"缺卡\",\"field\":\"qk\"},{\"value\":\"迟到\",\"field\":\"cd\"},{\"value\":\"请假\",\"field\":\"qj\"},{\"value\":\"扣社保\",\"field\":\"ksb\"},{\"value\":\"扣除奖励\",\"field\":\"kcjl\"},{\"value\":\"扣住宿\",\"field\":\"kzs\"},{\"value\":\"扣学习期\",\"field\":\"kxxq\"},{\"value\":\"扣工作服\",\"field\":\"kgzf\"},{\"value\":\"扣款合计\",\"field\":\"kkhj\"},{\"value\":\"发奖金\",\"field\":\"fjj\"},{\"value\":\"退手机押金\",\"field\":\"tsjyj\"},{\"value\":\"退住宿押金\",\"field\":\"tzsyj\"},{\"value\":\"实发工资\",\"field\":\"sfgz\"},{\"value\":\"当月是否发放\",\"field\":\"dysfff\"},{\"value\":\"支付金额\",\"field\":\"zfje\"},{\"value\":\"待支付金额\",\"field\":\"dzjfe\"},{\"value\":\"补发上月\",\"field\":\"bfsy\"},{\"value\":\"当月支付总额\",\"field\":\"dyzfze\"},{\"value\":\"总业绩\",\"field\":\"zyj\"},]".ToList();
ExcelConfig excelconfig = new ExcelConfig();
excelconfig.FileName = "工资全字段.xls";
excelconfig.HeadFont = "微软雅黑";
@@ -554,11 +559,7 @@ namespace NCC.Extend.LqGz
var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
ExcelExportHelper.Export(exportData, excelconfig, addPath);
var fileName = _userManager.UserId + "|" + addPath + "|xls";
- var output = new
- {
- name = excelconfig.FileName,
- url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")
- };
+ var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
return output;
}
@@ -578,7 +579,7 @@ namespace NCC.Extend.LqGz
//开启事务
_db.BeginTran();
//批量删除工资全字段
- await _db.Deleteable().In(d => d.Id,ids).ExecuteCommandAsync();
+ await _db.Deleteable().In(d => d.Id, ids).ExecuteCommandAsync();
//关闭事务
_db.CommitTran();
}
@@ -602,7 +603,8 @@ namespace NCC.Extend.LqGz
{
var entity = input.Adapt();
var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1001);
}
///
@@ -615,7 +617,8 @@ namespace NCC.Extend.LqGz
var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
_ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
var isOk = await _db.Deleteable().Where(d => d.Id == id).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1002);
}
#region 业绩计算相关方法
@@ -625,14 +628,14 @@ namespace NCC.Extend.LqGz
///
///
/// 根据薪酬规则计算个人的基础业绩、合作业绩、奖励业绩、门店总业绩、队伍业绩等
- ///
+ ///
/// 计算逻辑:
/// 1. 基础业绩:从开单品项明细表中统计,基于项目资料中的基础服务提成
/// 2. 合作业绩:从开单品项明细表中统计,基于项目资料中的合作项目设置
/// 3. 奖励业绩:从奖励明细表中统计
/// 4. 门店总业绩:该员工所在门店的所有业绩总和
/// 5. 队伍业绩:该员工所在金三角战队的所有业绩总和
- ///
+ ///
/// 示例请求:
/// ```json
/// {
@@ -641,7 +644,7 @@ namespace NCC.Extend.LqGz
/// "calculationMonth": "2025-01"
/// }
/// ```
- ///
+ ///
/// 参数说明:
/// - employeeId: 员工ID(必填)
/// - storeId: 门店ID(必填)
@@ -663,30 +666,29 @@ namespace NCC.Extend.LqGz
{
EmployeeId = input.EmployeeId,
StoreId = input.StoreId,
- CalculationMonth = input.CalculationMonth
+ CalculationMonth = input.CalculationMonth,
};
// 1. 计算基础业绩
result.BasicPerformance = await CalculateBasicPerformance(input.EmployeeId, input.StoreId, input.CalculationMonth);
-
+
// 2. 计算合作业绩
result.CooperationPerformance = await CalculateCooperationPerformance(input.EmployeeId, input.StoreId, input.CalculationMonth);
-
+
// 3. 计算奖励业绩
result.RewardPerformance = await CalculateRewardPerformance(input.EmployeeId, input.StoreId, input.CalculationMonth);
-
+
// 4. 计算总业绩
result.TotalPerformance = result.BasicPerformance + result.CooperationPerformance + result.RewardPerformance;
-
+
// 5. 计算门店总业绩
result.StoreTotalPerformance = await CalculateStoreTotalPerformance(input.StoreId, input.CalculationMonth);
-
+
// 6. 计算队伍业绩
result.TeamPerformance = await CalculateTeamPerformance(input.EmployeeId, input.StoreId, input.CalculationMonth);
-
+
// 7. 计算占比
- result.PerformanceRatio = result.StoreTotalPerformance > 0 ?
- Math.Round(result.TotalPerformance / result.StoreTotalPerformance * 100, 2) : 0;
+ result.PerformanceRatio = result.StoreTotalPerformance > 0 ? Math.Round(result.TotalPerformance / result.StoreTotalPerformance * 100, 2) : 0;
_logger.LogInformation($"业绩计算完成 - 员工ID: {input.EmployeeId}, 总业绩: {result.TotalPerformance}, 门店总业绩: {result.StoreTotalPerformance}");
@@ -711,11 +713,7 @@ namespace NCC.Extend.LqGz
var basicPerformance = await _db.Queryable()
.LeftJoin((px, xm) => px.Px == xm.Xmbh)
.LeftJoin((px, xm, kd) => px.Glkdbh == kd.Id)
- .Where((px, xm, kd) =>
- kd.Djmd == storeId &&
- kd.Kdrq >= startDate &&
- kd.Kdrq <= endDate &&
- (px.Px == employeeId || px.Px.Contains(employeeId))) // 根据实际情况调整匹配条件
+ .Where((px, xm, kd) => kd.Djmd == storeId && kd.Kdrq >= startDate && kd.Kdrq <= endDate && (px.Px == employeeId || px.Px.Contains(employeeId))) // 根据实际情况调整匹配条件
.SumAsync((px, xm, kd) => px.Pxjg * xm.Jcfwtc / 100);
return basicPerformance;
@@ -733,12 +731,16 @@ namespace NCC.Extend.LqGz
var cooperationPerformance = await _db.Queryable()
.LeftJoin((px, xm) => px.Px == xm.Xmbh)
.LeftJoin((px, xm, kd) => px.Glkdbh == kd.Id)
- .Where((px, xm, kd) =>
- kd.Djmd == storeId &&
- kd.Kdrq >= startDate &&
- kd.Kdrq <= endDate &&
- kd.Hgjg != null && kd.Hgjg != "" && // 有合作机构
- (px.Px == employeeId || px.Px.Contains(employeeId)))
+ .Where(
+ (px, xm, kd) =>
+ kd.Djmd == storeId
+ && kd.Kdrq >= startDate
+ && kd.Kdrq <= endDate
+ && kd.Hgjg != null
+ && kd.Hgjg != ""
+ && // 有合作机构
+ (px.Px == employeeId || px.Px.Contains(employeeId))
+ )
.SumAsync((px, xm, kd) => px.Pxjg * 0.65m); // 合作业绩按65%计算
return cooperationPerformance;
@@ -751,10 +753,7 @@ namespace NCC.Extend.LqGz
{
// 从奖励明细表中统计奖励业绩
var rewardPerformance = await _db.Queryable()
- .Where(jl =>
- jl.Mdbh == storeId &&
- jl.Jks == employeeId &&
- jl.Hj != null && jl.Hj != "")
+ .Where(jl => jl.Mdbh == storeId && jl.Jks == employeeId && jl.Hj != null && jl.Hj != "")
.SumAsync(jl => Convert.ToDecimal(jl.Hj));
return rewardPerformance;
@@ -769,12 +768,7 @@ namespace NCC.Extend.LqGz
var endDate = startDate.AddMonths(1).AddDays(-1);
// 从开单记录表中统计门店总业绩
- var storeTotalPerformance = await _db.Queryable()
- .Where(kd =>
- kd.Djmd == storeId &&
- kd.Kdrq >= startDate &&
- kd.Kdrq <= endDate)
- .SumAsync(kd => kd.Zdyj);
+ var storeTotalPerformance = await _db.Queryable().Where(kd => kd.Djmd == storeId && kd.Kdrq >= startDate && kd.Kdrq <= endDate).SumAsync(kd => kd.Zdyj);
return storeTotalPerformance;
}
@@ -785,12 +779,7 @@ namespace NCC.Extend.LqGz
private async Task CalculateTeamPerformance(string employeeId, string storeId, string calculationMonth)
{
// 先获取员工所在的金三角战队
- var goldenTriangle = await _db.Queryable()
- .Where(jsj =>
- jsj.Md == storeId &&
- jsj.Yf == calculationMonth &&
- jsj.Jsj.Contains(employeeId))
- .FirstAsync();
+ var goldenTriangle = await _db.Queryable().Where(jsj => jsj.Md == storeId && jsj.Yf == calculationMonth && jsj.Jsj.Contains(employeeId)).FirstAsync();
if (goldenTriangle == null)
{
@@ -802,11 +791,7 @@ namespace NCC.Extend.LqGz
// 统计该战队所有成员的业绩
var teamPerformance = await _db.Queryable()
- .Where(kd =>
- kd.Djmd == storeId &&
- kd.Kdrq >= startDate &&
- kd.Kdrq <= endDate &&
- goldenTriangle.Jsj.Contains(kd.Jsj))
+ .Where(kd => kd.Djmd == storeId && kd.Kdrq >= startDate && kd.Kdrq <= endDate && goldenTriangle.Jsj.Contains(kd.Jsj))
.SumAsync(kd => kd.Zdyj);
return teamPerformance;
@@ -817,7 +802,7 @@ namespace NCC.Extend.LqGz
///
///
/// 批量更新指定月份所有员工的业绩数据
- ///
+ ///
/// 示例请求:
/// ```json
/// {
@@ -825,7 +810,7 @@ namespace NCC.Extend.LqGz
/// "storeIds": ["门店ID1", "门店ID2"]
/// }
/// ```
- ///
+ ///
/// 参数说明:
/// - calculationMonth: 计算月份,格式:YYYYMM(必填)
/// - storeIds: 门店ID列表(可选,为空则更新所有门店)
@@ -846,9 +831,7 @@ namespace NCC.Extend.LqGz
var errorCount = 0;
// 获取需要更新的工资记录
- var salaryRecords = await _db.Queryable()
- .WhereIF(input.StoreIds != null && input.StoreIds.Any(), gz => input.StoreIds.Contains(gz.Md))
- .ToListAsync();
+ var salaryRecords = await _db.Queryable().WhereIF(input.StoreIds != null && input.StoreIds.Any(), gz => input.StoreIds.Contains(gz.Md)).ToListAsync();
foreach (var record in salaryRecords)
{
@@ -859,7 +842,7 @@ namespace NCC.Extend.LqGz
{
EmployeeId = record.Xm, // 使用姓名作为员工标识
StoreId = record.Md,
- CalculationMonth = input.CalculationMonth
+ CalculationMonth = input.CalculationMonth,
};
var performance = await CalculatePerformance(performanceInput);
@@ -874,9 +857,15 @@ namespace NCC.Extend.LqGz
record.Zb = performance.PerformanceRatio;
await _db.Updateable(record)
- .UpdateColumns(gz => new {
- gz.Jcyj, gz.Hzyj, gz.Jlyj, gz.Zyj,
- gz.Mdzyj, gz.Dwyj, gz.Zb
+ .UpdateColumns(gz => new
+ {
+ gz.Jcyj,
+ gz.Hzyj,
+ gz.Jlyj,
+ gz.Zyj,
+ gz.Mdzyj,
+ gz.Dwyj,
+ gz.Zb,
})
.ExecuteCommandAsync();
@@ -896,7 +885,7 @@ namespace NCC.Extend.LqGz
Success = true,
UpdatedCount = updatedCount,
ErrorCount = errorCount,
- Message = $"成功更新 {updatedCount} 条记录,失败 {errorCount} 条记录"
+ Message = $"成功更新 {updatedCount} 条记录,失败 {errorCount} 条记录",
};
}
catch (Exception ex)
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
index 07fc53d..85f44fb 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
@@ -199,7 +199,6 @@ namespace NCC.Extend.LqHytkHytk
entity.F_CreateTime = DateTime.Now;
entity.F_CreateUser = userInfo.userId;
entity.F_DeleteMark = 0;
- entity.Tksj = DateTime.Now;
entity.Czry = userInfo.userId;
try
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
index 6550734..6a71eac 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -252,6 +252,8 @@ namespace NCC.Extend.LqKdKdjlb
var userInfo = await _userManager.GetUserInfo();
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
+ entity.CreateTime = DateTime.Now;
+ entity.UpdateTime = DateTime.Now;
try
{
//开启事务
@@ -300,7 +302,7 @@ namespace NCC.Extend.LqKdKdjlb
Jksxm = ijks_tem.jksxm,
Jkszh = ijks_tem.jkszh,
Jksyj = ijks_tem.jksyj,
- Yjsj = DateTime.Now,
+ Yjsj = input.kdrq,
Jsj_id = ijks_tem.jsj_id,
Kdpxid = lqKdPxmxEntity.Id,
}
@@ -322,7 +324,7 @@ namespace NCC.Extend.LqKdKdjlb
Kjblsxm = ikjbs_tem.kjblsxm,
Kjblszh = ikjbs_tem.kjblszh,
Kjblsyj = ikjbs_tem.kjblsyj,
- Yjsj = DateTime.Now,
+ Yjsj = input.kdrq,
Kdpxid = lqKdPxmxEntity.Id,
}
);
@@ -634,8 +636,8 @@ namespace NCC.Extend.LqKdKdjlb
CreateTIme = DateTime.Now,
MemberId = entity.Kdhy,
IsEnabled = 0,
- ProjectNumber = item.projectNumber ?? 1,
- TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),
+ ProjectNumber = item.projectNumber == 0 ? 1 : item.projectNumber,
+ TotalPrice = (decimal)(item.pxjg * (item.projectNumber == 0 ? 1 : item.projectNumber)),
Px = item.px,
Pxmc = item.pxmc,
Pxjg = item.pxjg,
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
index 6827432..291c93d 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
@@ -13,11 +13,15 @@ using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys.Dto.LqMdxx;
using NCC.Extend.Entitys.Dto.LqStatistics;
+using NCC.Extend.Entitys.Dto.LqYcsdJsj;
using NCC.Extend.Entitys.lq_hytk_kjbsyj;
+using NCC.Extend.Entitys.lq_jinsanjiao_user;
+using NCC.Extend.Entitys.lq_kd_jksyj;
using NCC.Extend.Entitys.lq_kd_kdjlb;
using NCC.Extend.Entitys.lq_kd_kjbsyj;
using NCC.Extend.Entitys.lq_mdxx;
using NCC.Extend.Entitys.lq_xh_kjbsyj;
+using NCC.Extend.Entitys.lq_ycsd_jsj;
using NCC.Extend.Entitys.lq_yjmxb;
using NCC.Extend.Entitys.v_tech_teacher_flow;
using NCC.Extend.Interfaces.LqStatistics;
@@ -1041,6 +1045,140 @@ namespace NCC.Extend.LqStatistics
}
#endregion
+
+ #region 金三角业绩统计
+ ///
+ /// 查询所有金三角的业绩统计
+ ///
+ ///
+ /// 根据金三角成员状态进行不同的统计方式:
+ /// 1. 活跃成员:业绩计入金三角总业绩
+ /// 2. 非活跃成员:按单人业绩统计,金三角名称为"门店名+姓名"
+ ///
+ /// 示例请求:
+ /// GET /api/Extend/LqStatistics/GetJsjPerformance?startMonth=202401&endMonth=202412
+ ///
+ /// 参数说明:
+ /// - startMonth: 开始月份,格式为yyyyMM,可选
+ /// - endMonth: 结束月份,格式为yyyyMM,可选
+ /// - jsjId: 金三角ID,可选
+ /// - storeId: 门店ID,可选
+ ///
+ /// 返回信息包括:
+ /// - 金三角基本信息(ID、名称、月份、门店)
+ /// - 业绩统计(订单数量、总业绩、首次/最后订单日期)
+ /// - 统计类型(ACTIVE-活跃金三角业绩,INACTIVE-单人业绩)
+ /// - 成员姓名(仅单人业绩时使用)
+ ///
+ /// 查询参数
+ /// 金三角业绩统计列表
+ /// 查询成功
+ /// 参数错误
+ [HttpGet("GetJsjPerformance")]
+ public async Task> GetJsjPerformance([FromQuery] LqYcsdJsjPerformanceInput input)
+ {
+ var result = new List();
+
+ try
+ {
+ // 1. 查询活跃金三角成员的业绩(计入金三角总业绩)
+ var activePerformanceQuery = _db.Queryable()
+ .LeftJoin((jsj, user) => jsj.Id == user.JsjId && user.Status == "ACTIVE" && user.DeleteMark == 0)
+ .LeftJoin((jsj, user, jksyj) => jsj.Id == jksyj.Jsj_id && user.UserId == jksyj.Jkszh)
+ .LeftJoin((jsj, user, jksyj, md) => jsj.Md == md.Id)
+ .Where((jsj, user, jksyj, md) => jsj.Yf != null && jksyj.Yjsj != null && jksyj.Jksyj != null && jksyj.Jksyj != "" && jksyj.Jksyj != "0")
+ .WhereIF(!string.IsNullOrEmpty(input.StartMonth), (jsj, user, jksyj, md) => jsj.Yf.CompareTo(input.StartMonth) >= 0)
+ .WhereIF(!string.IsNullOrEmpty(input.EndMonth), (jsj, user, jksyj, md) => jsj.Yf.CompareTo(input.EndMonth) <= 0)
+ .WhereIF(!string.IsNullOrEmpty(input.JsjId), (jsj, user, jksyj, md) => jsj.Id == input.JsjId)
+ .WhereIF(!string.IsNullOrEmpty(input.StoreId), (jsj, user, jksyj, md) => jsj.Md == input.StoreId)
+ .GroupBy(
+ (jsj, user, jksyj, md) =>
+ new
+ {
+ jsj.Id,
+ jsj.Jsj,
+ jsj.Yf,
+ jsj.Md,
+ md.Dm,
+ }
+ )
+ .Select(
+ (jsj, user, jksyj, md) =>
+ new LqYcsdJsjPerformanceOutput
+ {
+ JsjId = jsj.Id,
+ JsjName = jsj.Jsj,
+ Month = jsj.Yf,
+ StoreId = jsj.Md,
+ StoreName = md.Dm,
+ OrderCount = SqlFunc.AggregateCount(jksyj.Glkdbh),
+ TotalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
+ LastOrderDate = SqlFunc.AggregateMax(jksyj.Yjsj),
+ FirstOrderDate = SqlFunc.AggregateMin(jksyj.Yjsj),
+ StatisticsType = "ACTIVE",
+ MemberName = null,
+ }
+ );
+
+ var activeResults = await activePerformanceQuery.ToListAsync();
+ result.AddRange(activeResults);
+
+ // 2. 查询非活跃金三角成员的业绩(按单人业绩统计)
+ var inactivePerformanceQuery = _db.Queryable()
+ .LeftJoin((user, jsj) => user.JsjId == jsj.Id)
+ .LeftJoin((user, jsj, jksyj) => user.UserId == jksyj.Jkszh)
+ .LeftJoin((user, jsj, jksyj, md) => jsj.Md == md.Id)
+ .Where(
+ (user, jsj, jksyj, md) =>
+ user.Status == "INACTIVE" && user.DeleteMark == 0 && jsj.Yf != null && jksyj.Yjsj != null && jksyj.Jksyj != null && jksyj.Jksyj != "" && jksyj.Jksyj != "0"
+ )
+ .WhereIF(!string.IsNullOrEmpty(input.StartMonth), (user, jsj, jksyj, md) => jsj.Yf.CompareTo(input.StartMonth) >= 0)
+ .WhereIF(!string.IsNullOrEmpty(input.EndMonth), (user, jsj, jksyj, md) => jsj.Yf.CompareTo(input.EndMonth) <= 0)
+ .WhereIF(!string.IsNullOrEmpty(input.JsjId), (user, jsj, jksyj, md) => jsj.Id == input.JsjId)
+ .WhereIF(!string.IsNullOrEmpty(input.StoreId), (user, jsj, jksyj, md) => jsj.Md == input.StoreId)
+ .GroupBy(
+ (user, jsj, jksyj, md) =>
+ new
+ {
+ user.Id,
+ user.UserName,
+ jsjId = jsj.Id,
+ jsj.Yf,
+ jsj.Md,
+ md.Dm,
+ }
+ )
+ .Select(
+ (user, jsj, jksyj, md) =>
+ new LqYcsdJsjPerformanceOutput
+ {
+ JsjId = user.Id, // 使用用户ID作为标识
+ JsjName = md.Dm + "-" + user.UserName, // 门店名+姓名
+ Month = jsj.Yf,
+ StoreId = jsj.Md,
+ StoreName = md.Dm,
+ OrderCount = SqlFunc.AggregateCount(jksyj.Glkdbh),
+ TotalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
+ LastOrderDate = SqlFunc.AggregateMax(jksyj.Yjsj),
+ FirstOrderDate = SqlFunc.AggregateMin(jksyj.Yjsj),
+ StatisticsType = "INACTIVE",
+ MemberName = user.UserName,
+ }
+ );
+
+ var inactiveResults = await inactivePerformanceQuery.ToListAsync();
+ result.AddRange(inactiveResults);
+
+ // 3. 按月份和业绩排序
+ return result.OrderByDescending(x => x.Month).ThenByDescending(x => x.TotalPerformance).ToList();
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "查询金三角业绩统计时发生错误");
+ throw NCCException.Oh(ErrorCode.COM1001, "查询金三角业绩统计失败");
+ }
+ }
+ #endregion
}
///
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
index 2e75879..af48c14 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
@@ -16,6 +16,7 @@ using NCC.DataEncryption;
using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys.Dto.LqTkjlb;
+using NCC.Extend.Entitys.lq_event;
using NCC.Extend.Entitys.lq_eventuser;
using NCC.Extend.Entitys.lq_khxx;
using NCC.Extend.Entitys.lq_ryzl;
@@ -61,6 +62,7 @@ namespace NCC.Extend.LqTkjlb
{
var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
var output = entity.Adapt();
+ output.eventName = SqlFunc.Subqueryable().Where(u => u.Id == entity.EventId).Select(u => u.EventName);
return output;
}
#endregion
@@ -98,7 +100,6 @@ namespace NCC.Extend.LqTkjlb
tksj = it.Tksj,
// tkry=it.Tkry,
tkry = SqlFunc.Subqueryable().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName),
-
gkxm = it.Gkxm,
dhhm = it.Dhhm,
gmzs = it.Gmzs,
@@ -107,6 +108,8 @@ namespace NCC.Extend.LqTkjlb
bz = it.Bz,
ssmd = it.Ssmd,
sszd = it.Sszd,
+ eventId = it.EventId,
+ eventName = SqlFunc.Subqueryable().Where(u => u.Id == it.EventId).Select(u => u.EventName),
})
.MergeTable()
.OrderBy(sidx + " " + input.sort)
@@ -135,7 +138,12 @@ namespace NCC.Extend.LqTkjlb
var result = await _db.Ado.UseTranAsync(async () =>
{
//通过input.eventId去查询拓客活动信息
- var eventUserInfo = await _db.Queryable().Where(u => u.EventId == input.eventId && u.UserId == input.tkry).FirstAsync();
+ var eventUserInfoList = await _db.Queryable().Where(u => u.EventId == input.eventId && u.UserId == input.tkry).ToListAsync();
+ if (eventUserInfoList == null || eventUserInfoList.Count == 0)
+ {
+ throw NCCException.Oh("未找到对应的拓客活动用户信息,请确认活动ID和用户ID是否正确");
+ }
+ var eventUserInfo = eventUserInfoList.First();
// 创建拓客记录
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
index d26b412..5ba0a97 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
@@ -1,37 +1,37 @@
-using NCC.Common.Core.Manager;
+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;
using NCC.Common.Enum;
using NCC.Common.Extension;
using NCC.Common.Filter;
+using NCC.Common.Helper;
+using NCC.Common.Model.NPOI;
+using NCC.DataEncryption;
using NCC.Dependency;
using NCC.DynamicApiController;
-using NCC.FriendlyException;
-using NCC.Extend.Interfaces.LqXhHyhk;
using NCC.Extend.Entitys.Dto.LqXhHyhk;
-using Mapster;
-using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
+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;
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;
-using NCC.Extend.Entitys.lq_kd_pxmx;
-using NCC.Extend.Entitys.lq_kd_kdjlb;
-using NCC.Extend.Entitys.lq_khxx;
-using Microsoft.Extensions.Logging;
-using Yitter.IdGenerator;
-using NCC.Common.Helper;
+using NCC.Extend.Interfaces.LqXhHyhk;
+using NCC.FriendlyException;
using NCC.JsonSerialization;
-using NCC.Common.Model.NPOI;
-using NCC.Common.Configuration;
-using NCC.DataEncryption;
-using NCC.ClayObject;
-using NCC.Extend.Entitys.Dto.LqXhJksyj;
-using NCC.Extend.Entitys.Dto.LqXhKjbsyj;
-using NCC.Extend.Entitys.Dto.LqXhPxmx;
+using SqlSugar;
+using Yitter.IdGenerator;
namespace NCC.Extend.LqXhHyhk
{
@@ -59,7 +59,8 @@ namespace NCC.Extend.LqXhHyhk
ISqlSugarRepository lqXhKjbsyjRepository,
ISqlSugarRepository lqXhPxmxRepository,
IUserManager userManager,
- ILogger logger)
+ ILogger logger
+ )
{
_lqXhHyhkRepository = lqXhHyhkRepository;
_db = _lqXhHyhkRepository.Context;
@@ -77,7 +78,7 @@ namespace NCC.Extend.LqXhHyhk
///
/// 获取耗卡记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
/// 按照耗卡的完整格式返回数据,不包含汇总信息
- ///
+ ///
/// 返回数据结构:
/// - 主表信息:耗卡基础信息、门店信息、会员信息等
/// - 品项明细列表:每个品项包含完整的项目信息(项目次数、是否有效、来源类型等)
@@ -104,19 +105,13 @@ namespace NCC.Extend.LqXhHyhk
var output = entity.Adapt();
// 2. 查询品项明细列表
- var lqXhPxmxList = await _db.Queryable()
- .Where(w => w.Glkdbh == entity.Id)
- .ToListAsync();
+ var lqXhPxmxList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync();
// 3. 查询健康师业绩列表
- var lqXhJksyjList = await _db.Queryable()
- .Where(w => w.Glkdbh == entity.Id)
- .ToListAsync();
+ var lqXhJksyjList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync();
// 4. 查询科技部老师业绩列表
- var lqXhKjbsyjList = await _db.Queryable()
- .Where(w => w.Glkdbh == entity.Id)
- .ToListAsync();
+ var lqXhKjbsyjList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync();
// 5. 构建品项明细输出,每个品项关联对应的业绩信息
var pxmxOutputList = new List();
@@ -135,7 +130,7 @@ namespace NCC.Extend.LqXhHyhk
projectNumber = pxmx.ProjectNumber,
isEnabled = pxmx.IsEnabled,
sourceType = pxmx.SourceType,
- totalPrice = pxmx.TotalPrice
+ totalPrice = pxmx.TotalPrice,
};
// 关联该品项的健康师业绩
@@ -209,7 +204,10 @@ namespace NCC.Extend.LqXhHyhk
sfykjb = it.Sfykjb,
hksj = it.Hksj,
czry = it.Czry,
- }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult.SqlSugarPageResult(data);
}
#endregion
@@ -220,7 +218,7 @@ namespace NCC.Extend.LqXhHyhk
///
///
/// 创建会员耗卡记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
- ///
+ ///
/// 示例请求:
/// ```json
/// {
@@ -245,7 +243,7 @@ namespace NCC.Extend.LqXhHyhk
/// ]
/// }
/// ```
- ///
+ ///
/// 参数说明:
/// - hyid: 会员ID
/// - hkmd: 耗卡门店
@@ -262,8 +260,8 @@ namespace NCC.Extend.LqXhHyhk
var userInfo = await _userManager.GetUserInfo();
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
- entity.Hksj = DateTime.Now;
entity.Czry = _userManager.UserId;
+ entity.CreateTime = DateTime.Now;
try
{
// 开启事务
@@ -296,47 +294,51 @@ namespace NCC.Extend.LqXhHyhk
SourceType = item.sourceType,
};
allPxmxEntities.Add(lqXhPxmxEntity);
-
+
// 收集该品项关联的健康师业绩
if (item.lqXhJksyjList != null && item.lqXhJksyjList.Any())
{
foreach (var ijks_tem in item.lqXhJksyjList)
{
- 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,
- });
+ 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,
+ }
+ );
}
}
-
+
// 收集该品项关联的科技部老师业绩
if (item.lqXhKjbsyjList != null && item.lqXhKjbsyjList.Any())
{
foreach (var ikjbs_tem in item.lqXhKjbsyjList)
{
- 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,
- });
+ 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,
+ }
+ );
}
}
}
@@ -413,7 +415,10 @@ namespace NCC.Extend.LqXhHyhk
sfykjb = it.Sfykjb,
hksj = it.Hksj,
czry = it.Czry,
- }).MergeTable().OrderBy(sidx + " " + input.sort).ToListAsync();
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToListAsync();
return data;
}
#endregion
@@ -438,7 +443,8 @@ namespace NCC.Extend.LqXhHyhk
{
exportData = await this.GetNoPagingList(input);
}
- List 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();
+ List 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();
ExcelConfig excelconfig = new ExcelConfig();
excelconfig.FileName = "会员耗卡.xls";
excelconfig.HeadFont = "微软雅黑";
@@ -457,11 +463,7 @@ namespace NCC.Extend.LqXhHyhk
var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
ExcelExportHelper.Export(exportData, excelconfig, addPath);
var fileName = _userManager.UserId + "|" + addPath + "|xls";
- var output = new
- {
- name = excelconfig.FileName,
- url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")
- };
+ var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
return output;
}
#endregion
@@ -521,7 +523,7 @@ namespace NCC.Extend.LqXhHyhk
{
//开启事务
_db.BeginTran();
-
+ entity.UpdateTime = DateTime.Now;
//更新会员耗卡记录
await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
@@ -559,47 +561,51 @@ namespace NCC.Extend.LqXhHyhk
SourceType = item.sourceType,
};
allPxmxEntities.Add(lqXhPxmxEntity);
-
+
// 收集该品项关联的健康师业绩
if (item.lqXhJksyjList != null && item.lqXhJksyjList.Any())
{
foreach (var ijks_tem in item.lqXhJksyjList)
{
- 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,
- });
+ 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,
+ }
+ );
}
}
-
+
// 收集该品项关联的科技部老师业绩
if (item.lqXhKjbsyjList != null && item.lqXhKjbsyjList.Any())
{
foreach (var ikjbs_tem in item.lqXhKjbsyjList)
{
- 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,
- });
+ 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,
+ }
+ );
}
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
index 132eb52..ad88e2f 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
@@ -81,7 +82,7 @@ namespace NCC.Extend.LqYcsdJsj
var output = entity.Adapt();
// 获取成员信息
- var members = await _db.Queryable()
+ var members = await _db.Queryable()
.Where(x => x.JsjId == id && x.Status == "ACTIVE")
.OrderBy(x => x.SortOrder)
.Select(x => new
@@ -194,6 +195,81 @@ namespace NCC.Extend.LqYcsdJsj
}
#endregion
+ #region 根据用户和月份获取金三角信息
+ ///
+ /// 根据用户和时间获取金三角信息
+ ///
+ ///
+ /// 根据指定的用户ID和时间,从时间中提取月份,查询该用户在该月份的金三角信息。
+ ///
+ /// 示例请求:
+ /// GET /api/Extend/LqYcsdJsj/GetJsjInfoByUserMonth?userId=123456&dateTime=2024-12-15%2014:30:00
+ ///
+ /// 参数说明:
+ /// - userId: 用户ID,必填
+ /// - dateTime: 时间,格式为yyyy-MM-dd HH:mm:ss,必填
+ ///
+ /// 返回信息包括:
+ /// - 金三角基本信息(ID、名称、月份)
+ /// - 门店信息(ID、名称)
+ /// - 用户信息(ID、姓名、是否顾问、状态、排序)
+ ///
+ /// 查询参数
+ /// 金三角信息
+ /// 查询成功
+ /// 参数错误
+ /// 未找到相关数据
+ [HttpGet("GetJsjInfoByUserMonth")]
+ public async Task GetJsjInfoByUserMonth([FromQuery] LqYcsdJsjByUserMonthInput input)
+ {
+ if (string.IsNullOrEmpty(input.UserId))
+ {
+ throw NCCException.Oh(ErrorCode.COM1001, "用户ID不能为空");
+ }
+
+ if (input.DateTime == default(DateTime))
+ {
+ throw NCCException.Oh(ErrorCode.COM1001, "时间不能为空");
+ }
+
+ // 从时间中提取月份(格式:yyyyMM)
+ var month = input.DateTime.ToString("yyyyMM");
+
+ // 先查询用户的金三角关联信息
+ var jsjUser = await _db.Queryable().Where(x => x.UserId == input.UserId && x.DeleteMark == 0).FirstAsync();
+
+ if (jsjUser == null)
+ {
+ return null;
+ }
+
+ // 查询金三角信息
+ var jsj = await _db.Queryable().Where(x => x.Id == jsjUser.JsjId && x.Yf == month).FirstAsync();
+
+ if (jsj == null)
+ {
+ return null;
+ }
+
+ // 查询门店信息
+ var store = await _db.Queryable().Where(x => x.Id == jsj.Md).FirstAsync();
+
+ return new LqYcsdJsjByUserMonthOutput
+ {
+ JsjId = jsj.Id,
+ JsjName = jsj.Jsj,
+ Month = jsj.Yf,
+ StoreId = jsj.Md,
+ StoreName = store?.Dm,
+ UserId = jsjUser.UserId,
+ UserName = jsjUser.UserName,
+ IsLeader = jsjUser.IsLeader,
+ Status = jsjUser.Status,
+ SortOrder = jsjUser.SortOrder,
+ };
+ }
+ #endregion
+
#region 新建金三角
///
/// 新建金三角
@@ -474,7 +550,7 @@ namespace NCC.Extend.LqYcsdJsj
}
var query = _db.Queryable()
- .LeftJoin((jsj, jksyj) => jsj.Id == jksyj.Jsj_id)
+ .LeftJoin((jsj, jksyj) => jsj.Id == jksyj.Jsj_id)
.LeftJoin((jsj, jksyj, md) => jsj.Md == md.Id)
.Where((jsj, jksyj, md) => jsj.Yf == month)
.Where((jsj, jksyj, md) => jksyj.Yjsj != null)
@@ -603,12 +679,12 @@ namespace NCC.Extend.LqYcsdJsj
///
private async Task CreateJsjMembers(string jsjId, List members, string creatorUserId)
{
- var memberEntities = new List();
+ var memberEntities = new List();
for (int i = 0; i < members.Count; i++)
{
var member = members[i];
- var memberEntity = new LqJinsanjiaoUserEntity
+ var memberEntity = new NCC.Extend.Entitys.lq_jinsanjiao_user.LqJinsanjiaoUserEntity
{
Id = YitIdHelper.NextId().ToString(),
JsjId = jsjId,
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqYyjlService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqYyjlService.cs
index abca174..fc85b07 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqYyjlService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqYyjlService.cs
@@ -1,34 +1,34 @@
-using NCC.Common.Core.Manager;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using NCC.ClayObject;
+using NCC.Common.Configuration;
+using NCC.Common.Core.Manager;
using NCC.Common.Enum;
using NCC.Common.Extension;
using NCC.Common.Filter;
+using NCC.Common.Helper;
+using NCC.Common.Model.NPOI;
+using NCC.DataEncryption;
using NCC.Dependency;
using NCC.DynamicApiController;
-using NCC.FriendlyException;
+using NCC.Extend.Entitys.Dto.LqYyjl;
+using NCC.Extend.Entitys.lq_yyjl;
using NCC.Extend.Interfaces.LqYyjl;
-using Mapster;
-using Microsoft.AspNetCore.Mvc;
+using NCC.FriendlyException;
+using NCC.JsonSerialization;
using SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using NCC.Extend.Entitys.lq_yyjl;
-using NCC.Extend.Entitys.Dto.LqYyjl;
using Yitter.IdGenerator;
-using NCC.Common.Helper;
-using NCC.JsonSerialization;
-using NCC.Common.Model.NPOI;
-using NCC.Common.Configuration;
-using NCC.DataEncryption;
-using NCC.ClayObject;
namespace NCC.Extend.LqYyjl
{
///
/// 预约记录服务
///
- [ApiDescriptionSettings(Tag = "Extend",Name = "LqYyjl", Order = 200)]
+ [ApiDescriptionSettings(Tag = "Extend", Name = "LqYyjl", Order = 200)]
[Route("api/Extend/[controller]")]
public class LqYyjlService : ILqYyjlService, IDynamicApiController, ITransient
{
@@ -39,11 +39,9 @@ namespace NCC.Extend.LqYyjl
///
/// 初始化一个类型的新实例
///
- public LqYyjlService(
- ISqlSugarRepository lqYyjlRepository,
- IUserManager userManager)
+ public LqYyjlService(ISqlSugarRepository lqYyjlRepository, IUserManager userManager)
{
- _lqYyjlRepository = lqYyjlRepository;
+ _lqYyjlRepository = lqYyjlRepository;
_db = _lqYyjlRepository.Context;
_userManager = userManager;
}
@@ -62,10 +60,10 @@ namespace NCC.Extend.LqYyjl
}
///
- /// 获取预约记录列表
- ///
- /// 请求参数
- ///
+ /// 获取预约记录列表
+ ///
+ /// 请求参数
+ ///
[HttpGet("")]
public async Task GetList([FromQuery] LqYyjlListQueryInput input)
{
@@ -96,23 +94,26 @@ namespace NCC.Extend.LqYyjl
.WhereIF(queryYyjs != null, p => p.Yyjs >= new DateTime(startYyjs.ToDate().Year, startYyjs.ToDate().Month, startYyjs.ToDate().Day, 0, 0, 0))
.WhereIF(queryYyjs != null, p => p.Yyjs <= new DateTime(endYyjs.ToDate().Year, endYyjs.ToDate().Month, endYyjs.ToDate().Day, 23, 59, 59))
.WhereIF(!string.IsNullOrEmpty(input.F_Status), p => p.F_Status.Equals(input.F_Status))
- .Select(it=> new LqYyjlListOutput
+ .Select(it => new LqYyjlListOutput
{
id = it.Id,
- djmd=it.Djmd,
- yyr=it.Yyr,
- gklx=it.Gklx,
- yytyxm=it.Yytyxm,
- czr=it.Czr,
- czsj=it.Czsj,
- gk=it.Gk,
- gkxm=it.Gkxm,
- yyjks=it.Yyjks,
- yysj=it.Yysj,
- yyjs=it.Yyjs,
- F_Status=it.F_Status,
- }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
- return PageResult.SqlSugarPageResult(data);
+ djmd = it.Djmd,
+ yyr = it.Yyr,
+ gklx = it.Gklx,
+ yytyxm = it.Yytyxm,
+ czr = it.Czr,
+ czsj = it.Czsj,
+ gk = it.Gk,
+ gkxm = it.Gkxm,
+ yyjks = it.Yyjks,
+ yysj = it.Yysj,
+ yyjs = it.Yyjs,
+ F_Status = it.F_Status,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(data);
}
///
@@ -127,16 +128,17 @@ namespace NCC.Extend.LqYyjl
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
entity.Czr = _userManager.UserId;
- entity.Czsj = DateTime.Now;
+ entity.Czsj = DateTime.Now;
var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1000);
}
///
- /// 获取预约记录无分页列表
- ///
- /// 请求参数
- ///
+ /// 获取预约记录无分页列表
+ ///
+ /// 请求参数
+ ///
[NonAction]
public async Task GetNoPagingList([FromQuery] LqYyjlListQueryInput input)
{
@@ -167,30 +169,33 @@ namespace NCC.Extend.LqYyjl
.WhereIF(queryYyjs != null, p => p.Yyjs >= new DateTime(startYyjs.ToDate().Year, startYyjs.ToDate().Month, startYyjs.ToDate().Day, 0, 0, 0))
.WhereIF(queryYyjs != null, p => p.Yyjs <= new DateTime(endYyjs.ToDate().Year, endYyjs.ToDate().Month, endYyjs.ToDate().Day, 23, 59, 59))
.WhereIF(!string.IsNullOrEmpty(input.F_Status), p => p.F_Status.Equals(input.F_Status))
- .Select(it=> new LqYyjlListOutput
+ .Select(it => new LqYyjlListOutput
{
id = it.Id,
- djmd=it.Djmd,
- yyr=it.Yyr,
- gklx=it.Gklx,
- yytyxm=it.Yytyxm,
- czr=it.Czr,
- czsj=it.Czsj,
- gk=it.Gk,
- gkxm=it.Gkxm,
- yyjks=it.Yyjks,
- yysj=it.Yysj,
- yyjs=it.Yyjs,
- F_Status=it.F_Status,
- }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync();
- return data;
+ djmd = it.Djmd,
+ yyr = it.Yyr,
+ gklx = it.Gklx,
+ yytyxm = it.Yytyxm,
+ czr = it.Czr,
+ czsj = it.Czsj,
+ gk = it.Gk,
+ gkxm = it.Gkxm,
+ yyjks = it.Yyjks,
+ yysj = it.Yysj,
+ yyjs = it.Yyjs,
+ F_Status = it.F_Status,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToListAsync();
+ return data;
}
///
- /// 导出预约记录
- ///
- /// 请求参数
- ///
+ /// 导出预约记录
+ ///
+ /// 请求参数
+ ///
[HttpGet("Actions/Export")]
public async Task Export([FromQuery] LqYyjlListQueryInput input)
{
@@ -205,7 +210,8 @@ namespace NCC.Extend.LqYyjl
{
exportData = await this.GetNoPagingList(input);
}
- List paramList = "[{\"value\":\"预约编号\",\"field\":\"id\"},{\"value\":\"单据门店\",\"field\":\"djmd\"},{\"value\":\"邀约人\",\"field\":\"yyr\"},{\"value\":\"顾客姓名\",\"field\":\"gkxm\"},{\"value\":\"操作人\",\"field\":\"czr\"},{\"value\":\"操作时间\",\"field\":\"czsj\"},{\"value\":\"预约体验项目\",\"field\":\"yytyxm\"},{\"value\":\"顾客类型\",\"field\":\"gklx\"},{\"value\":\"预约健康师\",\"field\":\"yyjks\"},{\"value\":\"预约开始时间\",\"field\":\"yysj\"},{\"value\":\"预约结束时间\",\"field\":\"yyjs\"},{\"value\":\"顾客\",\"field\":\"gk\"},{\"value\":\"预约状态\",\"field\":\"F_Status\"},]".ToList();
+ List paramList =
+ "[{\"value\":\"预约编号\",\"field\":\"id\"},{\"value\":\"单据门店\",\"field\":\"djmd\"},{\"value\":\"邀约人\",\"field\":\"yyr\"},{\"value\":\"顾客姓名\",\"field\":\"gkxm\"},{\"value\":\"操作人\",\"field\":\"czr\"},{\"value\":\"操作时间\",\"field\":\"czsj\"},{\"value\":\"预约体验项目\",\"field\":\"yytyxm\"},{\"value\":\"顾客类型\",\"field\":\"gklx\"},{\"value\":\"预约健康师\",\"field\":\"yyjks\"},{\"value\":\"预约开始时间\",\"field\":\"yysj\"},{\"value\":\"预约结束时间\",\"field\":\"yyjs\"},{\"value\":\"顾客\",\"field\":\"gk\"},{\"value\":\"预约状态\",\"field\":\"F_Status\"},]".ToList();
ExcelConfig excelconfig = new ExcelConfig();
excelconfig.FileName = "预约记录.xls";
excelconfig.HeadFont = "微软雅黑";
@@ -224,11 +230,7 @@ namespace NCC.Extend.LqYyjl
var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
ExcelExportHelper.Export(exportData, excelconfig, addPath);
var fileName = _userManager.UserId + "|" + addPath + "|xls";
- var output = new
- {
- name = excelconfig.FileName,
- url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")
- };
+ var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
return output;
}
@@ -248,7 +250,7 @@ namespace NCC.Extend.LqYyjl
//开启事务
_db.BeginTran();
//批量删除预约记录
- await _db.Deleteable().In(d => d.Id,ids).ExecuteCommandAsync();
+ await _db.Deleteable().In(d => d.Id, ids).ExecuteCommandAsync();
//关闭事务
_db.CommitTran();
}
@@ -272,7 +274,8 @@ namespace NCC.Extend.LqYyjl
{
var entity = input.Adapt();
var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1001);
}
///
@@ -285,7 +288,8 @@ namespace NCC.Extend.LqYyjl
var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
_ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
var isOk = await _db.Deleteable().Where(d => d.Id == id).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1002);
}
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/NCC.Extend.csproj b/netcore/src/Modularity/Extend/NCC.Extend/NCC.Extend.csproj
index a89e7d9..3b939c9 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/NCC.Extend.csproj
+++ b/netcore/src/Modularity/Extend/NCC.Extend/NCC.Extend.csproj
@@ -1,24 +1,19 @@
-
-
- net6.0
-
-
-
- bin\Debug\$(AssemblyName).xml
-
-
-
- bin\Release\$(AssemblyName).xml
-
-
-
-
-
-
-
-
-
-
-
+
+ net6.0
+
+
+ bin\Debug\$(AssemblyName).xml
+
+
+ bin\Release\$(AssemblyName).xml
+
+
+
+
+
+
+
+
+
diff --git a/金三角业绩统计接口说明.md b/金三角业绩统计接口说明.md
new file mode 100644
index 0000000..fd5e678
--- /dev/null
+++ b/金三角业绩统计接口说明.md
@@ -0,0 +1,99 @@
+# 金三角业绩统计接口说明
+
+## 接口概述
+新增了金三角业绩统计查询接口,根据金三角成员状态进行不同的统计方式。
+
+## 接口地址
+```
+GET /api/Extend/LqYcsdJsj/GetJsjPerformance
+```
+
+## 功能说明
+根据金三角成员状态进行不同的统计方式:
+1. **活跃成员**:业绩计入金三角总业绩
+2. **非活跃成员**:按单人业绩统计,金三角名称为"门店名+姓名"
+
+## 请求参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| startMonth | string | 否 | 开始月份,格式:yyyyMM |
+| endMonth | string | 否 | 结束月份,格式:yyyyMM |
+| jsjId | string | 否 | 金三角ID,用于查询特定金三角 |
+| storeId | string | 否 | 门店ID,用于查询特定门店 |
+
+## 响应参数
+| 字段名 | 类型 | 说明 |
+|--------|------|------|
+| JsjId | string | 金三角ID(非活跃成员时为用户ID) |
+| JsjName | string | 金三角名称(非活跃成员时为"门店名+姓名") |
+| Month | string | 月份(格式:yyyyMM) |
+| StoreId | string | 门店ID |
+| StoreName | string | 门店名称 |
+| OrderCount | int | 订单数量 |
+| TotalPerformance | decimal | 总业绩 |
+| LastOrderDate | DateTime? | 最后订单日期 |
+| FirstOrderDate | DateTime? | 首次订单日期 |
+| StatisticsType | string | 统计类型(ACTIVE-活跃金三角业绩,INACTIVE-单人业绩) |
+| MemberName | string | 成员姓名(仅单人业绩时使用) |
+
+## 示例请求
+```
+GET /api/Extend/LqYcsdJsj/GetJsjPerformance?startMonth=202401&endMonth=202412
+```
+
+## 示例响应
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": [
+ {
+ "jsjId": "123456789",
+ "jsjName": "金三角A组",
+ "month": "202412",
+ "storeId": "store001",
+ "storeName": "绿纤川音店",
+ "orderCount": 15,
+ "totalPerformance": 50000.00,
+ "lastOrderDate": "2024-12-15T14:30:00",
+ "firstOrderDate": "2024-12-01T09:00:00",
+ "statisticsType": "ACTIVE",
+ "memberName": null
+ },
+ {
+ "jsjId": "987654321",
+ "jsjName": "绿纤川音店-张三",
+ "month": "202412",
+ "storeId": "store001",
+ "storeName": "绿纤川音店",
+ "orderCount": 8,
+ "totalPerformance": 25000.00,
+ "lastOrderDate": "2024-12-14T16:20:00",
+ "firstOrderDate": "2024-12-02T10:15:00",
+ "statisticsType": "INACTIVE",
+ "memberName": "张三"
+ }
+ ]
+}
+```
+
+## 业务逻辑
+1. **活跃成员统计**:
+ - 查询状态为"ACTIVE"的金三角成员
+ - 将业绩计入金三角总业绩
+ - 按金三角分组统计
+
+2. **非活跃成员统计**:
+ - 查询状态为"INACTIVE"的金三角成员
+ - 按单人业绩统计
+ - 金三角名称为"门店名+姓名"格式
+
+3. **数据排序**:
+ - 按月份降序(最新的月份在前)
+ - 按总业绩降序(业绩高的在前)
+
+## 注意事项
+- 所有查询都是只读操作,不会修改数据库数据
+- 支持按月统计,可以指定月份范围
+- 支持按金三角ID和门店ID进行筛选
+- 返回结果包含统计类型标识,便于前端区分处理
--
libgit2 0.21.4