From 6b449d657c33eed09afc427cb3eb3e96f2b38d36 Mon Sep 17 00:00:00 2001
From: “wangming” <“wangming@antissoft.com”>
Date: Mon, 10 Nov 2025 11:06:42 +0800
Subject: [PATCH] 合并代码
---
antis-ncc-admin/.env.development | 4 ++--
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetCrInput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetInfoOutput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetListOutput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetUpInput.cs | 5 +++++
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_target/LqMdTargetEntity.cs | 6 ++++++
netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------
netcore/src/Modularity/Extend/NCC.Extend/LqMdTargetService.cs | 1 +
8 files changed, 90 insertions(+), 47 deletions(-)
diff --git a/antis-ncc-admin/.env.development b/antis-ncc-admin/.env.development
index 4c02e12..e9a4583 100644
--- a/antis-ncc-admin/.env.development
+++ b/antis-ncc-admin/.env.development
@@ -2,6 +2,6 @@
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# VUE_APP_BASE_API = 'https://erp.lvqianmeiye.com'
-VUE_APP_BASE_API = 'http://erp_test.lvqianmeiye.com'
-# VUE_APP_BASE_API = 'http://localhost:2011'
+# VUE_APP_BASE_API = 'http://erp_test.lvqianmeiye.com'
+VUE_APP_BASE_API = 'http://localhost:2011'
VUE_APP_BASE_WSS = 'ws://192.168.110.45:2011/websocket'
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetCrInput.cs
index b08d789..cf25315 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetCrInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetCrInput.cs
@@ -57,6 +57,11 @@ namespace NCC.Extend.Entitys.Dto.LqMdTarget
public decimal educationDepartmentTarget { get; set; } = 0;
///
+ /// 大项目部业绩目标
+ ///
+ public decimal majorProjectDepartmentTarget { get; set; } = 0;
+
+ ///
/// 事业部总经理
///
public string businessUnitGeneralManager { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetInfoOutput.cs
index 4815f50..9e1edc7 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetInfoOutput.cs
@@ -58,6 +58,11 @@ namespace NCC.Extend.Entitys.Dto.LqMdTarget
public decimal educationDepartmentTarget { get; set; }
///
+ /// 大项目部业绩目标
+ ///
+ public decimal majorProjectDepartmentTarget { get; set; }
+
+ ///
/// 事业部总经理
///
public string businessUnitGeneralManager { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetListOutput.cs
index 9c43a9c..f30ee1e 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetListOutput.cs
@@ -58,6 +58,11 @@ namespace NCC.Extend.Entitys.Dto.LqMdTarget
public decimal educationDepartmentTarget { get; set; }
///
+ /// 大项目部业绩目标
+ ///
+ public decimal majorProjectDepartmentTarget { get; set; }
+
+ ///
/// 事业部总经理
///
public string businessUnitGeneralManager { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetUpInput.cs
index 39e2295..e2620c0 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetUpInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdTarget/LqMdTargetUpInput.cs
@@ -57,6 +57,11 @@ namespace NCC.Extend.Entitys.Dto.LqMdTarget
public decimal educationDepartmentTarget { get; set; } = 0;
///
+ /// 大项目部业绩目标
+ ///
+ public decimal majorProjectDepartmentTarget { get; set; } = 0;
+
+ ///
/// 事业部总经理
///
public string businessUnitGeneralManager { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_target/LqMdTargetEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_target/LqMdTargetEntity.cs
index bbc7f65..7af08e6 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_target/LqMdTargetEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_target/LqMdTargetEntity.cs
@@ -72,6 +72,12 @@ namespace NCC.Extend.Entitys.lq_md_target
public decimal EducationDepartmentTarget { get; set; } = 0;
///
+ /// 大项目部业绩目标
+ ///
+ [SugarColumn(ColumnName = "F_MajorProjectDepartmentTarget")]
+ public decimal MajorProjectDepartmentTarget { get; set; } = 0;
+
+ ///
/// 事业部总经理
///
[SugarColumn(ColumnName = "F_BusinessUnitGeneralManager")]
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs
index e204504..fe5f308 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs
@@ -191,7 +191,7 @@ namespace NCC.Extend
/// 返回说明:
/// - StoreId: 门店ID
/// - StoreName: 门店名称
- /// - TargetPerformance: 目标业绩(生命线,来自门店信息表)
+ /// - TargetPerformance: 目标业绩(门店目标业绩,来自门店目标表lq_md_target的F_StoreTarget字段,根据开始时间所在月份获取,如果未查询到则为0)
/// - BillingPerformance: 开单业绩(开单业绩总和)
/// - RefundPerformance: 退款业绩(退卡业绩总和)
/// - ActualPerformance: 实际业绩(开单业绩 - 退款业绩)
@@ -210,6 +210,9 @@ namespace NCC.Extend
// 获取时间范围
var (startDate, endDate) = GetTimeRange(input.StartTime, input.EndTime);
+ // 根据开始时间确定月份(YYYYMM格式)
+ var month = startDate.ToString("yyyyMM");
+
// 构建门店过滤条件
var storeFilter = "";
if (input.StoreIds != null && input.StoreIds.Any())
@@ -223,8 +226,8 @@ namespace NCC.Extend
SELECT
store.F_Id as StoreId,
store.dm as StoreName,
- -- 目标业绩(生命线)
- COALESCE(store.xsyj, 0) as TargetPerformance,
+ -- 目标业绩(门店目标业绩,来自门店目标表)
+ COALESCE(target.F_StoreTarget, 0) as TargetPerformance,
-- 开单业绩总和
COALESCE((
SELECT SUM(billing.sfyj)
@@ -244,6 +247,7 @@ namespace NCC.Extend
AND DATE(refund.tksj) <= '{endDate:yyyy-MM-dd}'
), 0) as RefundPerformance
FROM lq_mdxx store
+ LEFT JOIN lq_md_target target ON target.F_StoreId = store.F_Id AND target.F_Month = '{month}'
WHERE 1=1 {storeFilter}
ORDER BY (BillingPerformance - RefundPerformance) DESC";
@@ -298,10 +302,10 @@ namespace NCC.Extend
/// 返回说明:
/// - BusinessUnitId: 事业部ID
/// - BusinessUnitName: 事业部名称
- /// - TargetPerformance: 目标业绩(管理门店的生命线总和)
+ /// - TargetPerformance: 目标业绩(来自门店目标表lq_md_target的F_BusinessUnitTarget字段,根据开始时间所在月份获取,通过F_BusinessUnit字段关联,如果未查询到则为0)
/// - CompletedPerformance: 完成业绩(指定时间范围内的开单业绩总和)
/// - CompletionRate: 完成率(百分比,CompletedPerformance / TargetPerformance * 100)
- /// - StoreCount: 门店数量
+ /// - StoreCount: 门店数量(根据门店目标表中归属该事业部的门店数统计)
///
/// 查询参数
/// 事业部业绩完成情况列表
@@ -315,6 +319,9 @@ namespace NCC.Extend
// 获取时间范围
var (startDate, endDate) = GetTimeRange(input.StartTime, input.EndTime);
+ // 根据开始时间确定月份(YYYYMM格式)
+ var month = startDate.ToString("yyyyMM");
+
// 构建事业部过滤条件
var businessUnitFilter = "";
if (input.BusinessUnitIds != null && input.BusinessUnitIds.Any())
@@ -329,10 +336,10 @@ namespace NCC.Extend
SELECT
o.F_Id as BusinessUnitId,
o.F_FullName as BusinessUnitName,
- COALESCE(SUM(store.xsyj), 0) as TargetPerformance,
- COUNT(DISTINCT store.F_Id) as StoreCount
+ COALESCE(SUM(target.F_BusinessUnitTarget), 0) as TargetPerformance,
+ COUNT(DISTINCT target.F_StoreId) as StoreCount
FROM base_organize o
- LEFT JOIN lq_mdxx store ON store.syb = o.F_Id
+ LEFT JOIN lq_md_target target ON target.F_BusinessUnit = o.F_Id AND target.F_Month = '{month}'
WHERE o.F_Category = 'department'
AND (o.F_DeleteMark IS NULL OR o.F_DeleteMark != 1)
AND o.F_FullName IN ('事业一部', '事业二部', '事业三部', '事业四部', '事业五部', '事业六部')
@@ -432,10 +439,10 @@ namespace NCC.Extend
/// 返回说明:
/// - DepartmentId: 部门ID
/// - DepartmentName: 部门名称(教育一部、教育二部、科技一部、科技二部、大项目一部、大项目二部)
- /// - TargetPerformance: 目标业绩(管理门店的生命线总和)
+ /// - TargetPerformance: 目标业绩(来自门店目标表lq_md_target,根据部门类型使用对应字段:教育部使用F_EducationDepartmentTarget,科技部使用F_TechDepartmentTarget,大项目部使用F_MajorProjectDepartmentTarget,根据开始时间所在月份获取,通过对应归属字段关联,如果未查询到则为0)
/// - CompletedPerformance: 完成业绩(指定时间范围内的开单业绩总和)
/// - CompletionRate: 完成率(百分比,CompletedPerformance / TargetPerformance * 100)
- /// - StoreCount: 门店数量
+ /// - StoreCount: 门店数量(根据门店目标表中归属该部门的门店数统计)
///
/// 查询参数
/// 天王团业绩完成情况列表
@@ -449,6 +456,9 @@ namespace NCC.Extend
// 获取时间范围
var (startDate, endDate) = GetTimeRange(input.StartTime, input.EndTime);
+ // 根据开始时间确定月份(YYYYMM格式)
+ var month = startDate.ToString("yyyyMM");
+
// 构建部门过滤条件
var departmentFilter = "";
if (input.DepartmentIds != null && input.DepartmentIds.Any())
@@ -457,12 +467,12 @@ namespace NCC.Extend
departmentFilter = $"AND o.F_Id IN ('{filterDeptIdsStr}')";
}
- // 天王团部门信息(字段名和部门名称的映射)
- var tianwangDepartments = new Dictionary
+ // 天王团部门信息(字段名、目标字段名和部门名称的映射)
+ var tianwangDepartments = new Dictionary
{
- { "jyb", ("jyb", new[] { "教育一部", "教育二部" }) },
- { "kjb", ("kjb", new[] { "科技一部", "科技二部" }) },
- { "dxmb", ("dxmb", new[] { "大项目一部", "大项目二部" }) }
+ { "jyb", ("F_EducationDepartment", "F_EducationDepartmentTarget", new[] { "教育一部", "教育二部" }) },
+ { "kjb", ("F_TechDepartment", "F_TechDepartmentTarget", new[] { "科技一部", "科技二部" }) },
+ { "dxmb", ("F_MajorProjectDepartment", "F_MajorProjectDepartmentTarget", new[] { "大项目一部", "大项目二部" }) }
};
// 分步查询,提高效率
@@ -480,10 +490,10 @@ namespace NCC.Extend
SELECT
o.F_Id as DepartmentId,
o.F_FullName as DepartmentName,
- COALESCE(SUM(store.xsyj), 0) as TargetPerformance,
- COUNT(DISTINCT store.F_Id) as StoreCount
+ COALESCE(SUM(target.{deptType.Value.targetFieldName}), 0) as TargetPerformance,
+ COUNT(DISTINCT target.F_StoreId) as StoreCount
FROM base_organize o
- LEFT JOIN lq_mdxx store ON store.{deptType.Key} = o.F_Id
+ LEFT JOIN lq_md_target target ON target.{deptType.Value.fieldName} = o.F_Id AND target.F_Month = '{month}'
WHERE o.F_Category = 'department'
AND (o.F_DeleteMark IS NULL OR o.F_DeleteMark != 1)
AND o.F_FullName IN ('{deptNamesStr}')
@@ -608,7 +618,7 @@ namespace NCC.Extend
/// - ManagerId: 经理用户ID
/// - ManagerName: 经理姓名
/// - StoreId/StoreName: 门店信息
- /// - Target1/2/3: 目标业绩一/二/三阶段(smx1/smx2/smx3)
+ /// - Target1/2/3: 目标业绩一/二/三阶段(来自门店总经理生命线设置表lq_md_general_manager_lifeline的F_Lifeline1/F_Lifeline2/F_Lifeline3字段,根据开始时间所在月份获取,如果未查询到则为0)
/// - CompletedPerformance: 完成业绩(指定时间范围内的开单业绩总和)
/// - CompletionRate1/2/3: 完成率各阶段(百分比)
///
@@ -624,38 +634,41 @@ namespace NCC.Extend
// 获取时间范围
var (startDate, endDate) = GetTimeRange(input.StartTime, input.EndTime);
+ // 根据开始时间确定月份(YYYYMM格式)
+ var month = startDate.ToString("yyyyMM");
+
// 构建经理过滤条件
var managerFilter = "";
if (!string.IsNullOrWhiteSpace(input.ManagerId))
{
- managerFilter = $"AND target.zjl_userid = '{input.ManagerId}'";
+ managerFilter = $"AND target.F_GeneralManagerId = '{input.ManagerId}'";
}
// SQL查询:获取经理在各门店的目标业绩和完成业绩
var sql = $@"
SELECT
- target.zjl_userid as ManagerId,
+ target.F_GeneralManagerId as ManagerId,
u.F_RealName as ManagerName,
- target.md_id as StoreId,
+ target.F_StoreId as StoreId,
store.dm as StoreName,
- target.smx1 as Target1,
- target.smx2 as Target2,
- target.smx3 as Target3,
+ target.F_Lifeline1 as Target1,
+ target.F_Lifeline2 as Target2,
+ target.F_Lifeline3 as Target3,
-- 完成业绩
COALESCE((
SELECT SUM(billing.sfyj)
FROM lq_kd_kdjlb billing
- WHERE billing.djmd = target.md_id
+ WHERE billing.djmd = target.F_StoreId
AND billing.F_IsEffective = 1
AND DATE(billing.kdrq) >= '{startDate:yyyy-MM-dd}'
AND DATE(billing.kdrq) <= '{endDate:yyyy-MM-dd}'
), 0) as CompletedPerformance
- FROM lq_zjl_mdsmxsz target
- INNER JOIN BASE_USER u ON target.zjl_userid = u.F_Id
- INNER JOIN lq_mdxx store ON target.md_id = store.F_Id
- WHERE target.deletemark = 0
+ FROM lq_md_general_manager_lifeline target
+ INNER JOIN BASE_USER u ON target.F_GeneralManagerId = u.F_Id
+ INNER JOIN lq_mdxx store ON target.F_StoreId = store.F_Id
+ WHERE target.F_Month = '{month}'
{managerFilter}
- ORDER BY target.zjl_userid, store.dm";
+ ORDER BY target.F_GeneralManagerId, store.dm";
var result = await _db.Ado.SqlQueryAsync(sql);
@@ -712,10 +725,10 @@ namespace NCC.Extend
/// 返回说明:
/// - ManagerId: 经理用户ID
/// - ManagerName: 经理姓名
- /// - TotalTarget1/2/3: 总目标业绩一/二/三阶段
+ /// - TotalTarget1/2/3: 总目标业绩一/二/三阶段(来自门店总经理生命线设置表lq_md_general_manager_lifeline的F_Lifeline1/F_Lifeline2/F_Lifeline3字段,根据开始时间所在月份获取并汇总)
/// - TotalCompletedPerformance: 总完成业绩(指定时间范围内的开单业绩总和)
/// - TotalCompletionRate1/2/3: 总完成率各阶段
- /// - StoreCount: 管理门店数量
+ /// - StoreCount: 管理门店数量(根据门店总经理生命线设置表中归属该经理的门店数统计)
///
/// 查询参数
/// 经理汇总业绩完成情况列表
@@ -729,37 +742,40 @@ namespace NCC.Extend
// 获取时间范围
var (startDate, endDate) = GetTimeRange(input.StartTime, input.EndTime);
+ // 根据开始时间确定月份(YYYYMM格式)
+ var month = startDate.ToString("yyyyMM");
+
// 构建经理过滤条件
var managerFilter = "";
if (!string.IsNullOrWhiteSpace(input.ManagerId))
{
- managerFilter = $"AND target.zjl_userid = '{input.ManagerId}'";
+ managerFilter = $"AND target.F_GeneralManagerId = '{input.ManagerId}'";
}
// SQL查询:获取经理汇总业绩
var sql = $@"
SELECT
- target.zjl_userid as ManagerId,
+ target.F_GeneralManagerId as ManagerId,
u.F_RealName as ManagerName,
- SUM(target.smx1) as TotalTarget1,
- COALESCE(SUM(target.smx2), 0) as TotalTarget2,
- COALESCE(SUM(target.smx3), 0) as TotalTarget3,
- COUNT(DISTINCT target.md_id) as StoreCount,
+ SUM(target.F_Lifeline1) as TotalTarget1,
+ COALESCE(SUM(target.F_Lifeline2), 0) as TotalTarget2,
+ COALESCE(SUM(target.F_Lifeline3), 0) as TotalTarget3,
+ COUNT(DISTINCT target.F_StoreId) as StoreCount,
-- 总完成业绩
SUM(COALESCE((
SELECT SUM(billing.sfyj)
FROM lq_kd_kdjlb billing
- WHERE billing.djmd = target.md_id
+ WHERE billing.djmd = target.F_StoreId
AND billing.F_IsEffective = 1
AND DATE(billing.kdrq) >= '{startDate:yyyy-MM-dd}'
AND DATE(billing.kdrq) <= '{endDate:yyyy-MM-dd}'
), 0)) as TotalCompletedPerformance
- FROM lq_zjl_mdsmxsz target
- INNER JOIN BASE_USER u ON target.zjl_userid = u.F_Id
- INNER JOIN lq_mdxx store ON target.md_id = store.F_Id
- WHERE target.deletemark = 0
+ FROM lq_md_general_manager_lifeline target
+ INNER JOIN BASE_USER u ON target.F_GeneralManagerId = u.F_Id
+ INNER JOIN lq_mdxx store ON target.F_StoreId = store.F_Id
+ WHERE target.F_Month = '{month}'
{managerFilter}
- GROUP BY target.zjl_userid, u.F_RealName
+ GROUP BY target.F_GeneralManagerId, u.F_RealName
ORDER BY TotalCompletedPerformance DESC";
var result = await _db.Ado.SqlQueryAsync(sql);
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqMdTargetService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqMdTargetService.cs
index 6723656..67f6751 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqMdTargetService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqMdTargetService.cs
@@ -88,6 +88,7 @@ namespace NCC.Extend.LqMdTarget
businessUnitTarget = it.BusinessUnitTarget,
techDepartmentTarget = it.TechDepartmentTarget,
educationDepartmentTarget = it.EducationDepartmentTarget,
+ majorProjectDepartmentTarget = it.MajorProjectDepartmentTarget,
businessUnitGeneralManager = it.BusinessUnitGeneralManager,
businessUnitManager = it.BusinessUnitManager,
storeTarget = it.StoreTarget,
--
libgit2 0.21.4