diff --git a/docs/绿纤美业ERP系统介绍PPT.md b/docs/绿纤美业ERP系统介绍PPT.md
new file mode 100644
index 0000000..0151969
--- /dev/null
+++ b/docs/绿纤美业ERP系统介绍PPT.md
@@ -0,0 +1,545 @@
+# 绿纤美业ERP管理系统
+## 行业领先的医美企业数字化解决方案
+
+---
+
+## 目录
+
+1. [系统概述](#系统概述)
+2. [核心价值](#核心价值)
+3. [功能架构](#功能架构)
+4. [核心功能模块](#核心功能模块)
+5. [技术架构](#技术架构)
+6. [系统亮点](#系统亮点)
+7. [应用场景](#应用场景)
+8. [成功案例](#成功案例)
+
+---
+
+## 系统概述
+
+### 绿纤美业ERP管理系统
+
+**专为医美行业量身定制的企业资源规划系统**
+
+- 🎯 **行业定位**:医美行业全流程数字化管理平台
+- 🏢 **服务对象**:连锁医美机构、美容院、健康管理中心
+- 📊 **核心能力**:业绩统计、工资核算、数据分析、门店管理
+- 🚀 **技术优势**:前后端分离、微服务架构、数据可视化
+
+---
+
+## 核心价值
+
+### 数字化转型的三大核心价值
+
+#### 💰 **降本增效**
+- 自动化工资核算,节省90%人工计算时间
+- 智能业绩统计,实时掌握经营状况
+- 精准数据分析,辅助科学决策
+
+#### 📈 **业绩提升**
+- 多维度业绩分析,发现增长机会
+- 实时排行榜激励,提升团队积极性
+- 客户画像分析,精准营销策略
+
+#### 🎯 **精细化管理**
+- 全流程业务闭环,无死角管理
+- 权限分级管控,数据安全可靠
+- 移动端支持,随时随地管理
+
+---
+
+## 功能架构
+
+### 六大核心业务模块
+
+```
+┌─────────────────────────────────────────┐
+│ 绿纤美业ERP管理系统 │
+├─────────────────────────────────────────┤
+│ 📊 业绩统计系统 │ 💰 工资核算系统 │
+│ 📈 报表分析系统 │ 🏪 门店管理系统 │
+│ 👥 人员管理系统 │ 📋 客户管理系统 │
+└─────────────────────────────────────────┘
+```
+
+**完整业务闭环,覆盖医美行业全流程管理**
+
+---
+
+## 核心功能模块
+
+### 1. 📊 业绩统计系统
+
+#### 多维度业绩统计,全面掌握经营状况
+
+**个人业绩统计**
+- 健康师个人业绩统计
+- 首单业绩、升单业绩分析
+- 个人业绩趋势追踪
+
+**门店业绩统计**
+- 门店总业绩统计
+- 门店消耗业绩统计
+- 门店业绩排行榜
+
+**团队业绩统计**
+- 金三角团队业绩统计
+- 部门消耗业绩统计
+- 科技部业绩统计
+
+**实时数据更新,支持多维度筛选和导出**
+
+---
+
+## 核心功能模块
+
+### 2. 💰 工资核算系统
+
+#### 自动化工资核算,精准高效
+
+**支持岗位类型**
+- 健康师工资核算
+- 店长工资核算
+- 主任工资核算
+- 大项目主管工资核算
+- 科技部总经理工资核算
+- 事业部总经理工资核算
+- 店助工资核算
+
+**核心功能**
+- 自动计算底薪、提成、奖励
+- 支持补贴、扣款、奖金管理
+- 工资锁定/解锁机制
+- Excel批量导入导出
+- 工资条确认功能
+
+**节省90%人工计算时间,准确率100%**
+
+---
+
+## 核心功能模块
+
+### 3. 📈 报表分析系统
+
+#### 数据可视化,决策更科学
+
+**战略决策指挥中心**
+- 实时经营态势感知
+- 多维度KPI指标展示
+- 业绩趋势分析
+- 门店卓越榜、协同作战榜
+- 团队效能矩阵分析
+
+**驾驶舱系统**
+- 集团驾驶舱(移动端)
+- 事业部驾驶舱
+- 科技部驾驶舱
+- 门店数据看板
+
+**报表类型**
+- 趋势分析报表
+- 排行榜报表
+- 对比分析报表
+- 年度汇总统计
+
+**让数据说话,让决策更精准**
+
+---
+
+## 核心功能模块
+
+### 4. 🏪 门店管理系统
+
+#### 门店全生命周期管理
+
+**门店信息管理**
+- 门店基础信息维护
+- 门店归属管理(事业部/教育部/科技部)
+- 新店保护时间管理
+- 门店股份统计
+
+**门店运营分析**
+- 门店业绩分析
+- 门店消耗分析
+- 门店客户分析
+- 门店人员分析
+
+**支持多门店、多事业部管理**
+
+---
+
+## 核心功能模块
+
+### 5. 👥 人员管理系统
+
+#### 人员组织架构管理
+
+**金三角管理**
+- 金三角团队设定
+- 金三角用户绑定
+- 顾问身份自动设置
+- 金三角业绩统计
+
+**人员信息管理**
+- 员工档案管理
+- 岗位信息管理
+- 门店归属管理
+- 权限分级管理
+
+**灵活的组织架构,适应业务发展**
+
+---
+
+## 核心功能模块
+
+### 6. 📋 客户管理系统
+
+#### 客户全生命周期管理
+
+**客户信息管理**
+- 客户档案管理
+- 客户分类管理
+- 客户标签管理
+- 客户画像分析
+
+**拓客管理**
+- 拓客活动管理
+- 拓客记录管理
+- 拓客效果分析
+- 拓客漏斗分析
+
+**会员权益管理**
+- 会员权益记录
+- 权益消耗追踪
+- 权益到期提醒
+- 历史权益数据管理
+
+**精准客户画像,提升转化率**
+
+---
+
+## 其他业务模块
+
+### 完整的业务支撑体系
+
+**合同管理系统**
+- 合同信息管理
+- 合同到期提醒
+- 合同统计分析
+
+**成本管理系统**
+- 合作成本管理
+- 店内支出管理
+- 成本分析报表
+
+**库存管理系统**
+- 库存使用审批流程
+- 库存统计分析
+- 库存预警提醒
+
+**报销管理系统**
+- 报销申请流程
+- 报销审批流程
+- 报销统计分析
+
+**全面覆盖医美行业业务场景**
+
+---
+
+## 技术架构
+
+### 现代化技术栈
+
+#### 后端技术架构
+```
+.NET Core 5.0
+├── 分层架构设计(Entitys/Interfaces/Services)
+├── SqlSugar ORM(轻量级、高性能)
+├── JWT身份认证(安全可靠)
+├── Serilog日志系统(结构化日志)
+└── Swagger API文档(自动生成)
+```
+
+#### 前端技术架构
+```
+Vue 2.6 + Element UI
+├── Vuex状态管理
+├── Vue Router路由管理
+├── Axios HTTP客户端
+├── ECharts数据可视化
+└── SCSS样式预处理
+```
+
+#### 移动端技术
+```
+uni-app跨平台框架
+├── 微信小程序支持
+├── 原生App支持
+└── H5支持
+```
+
+**前后端分离,支持多端部署**
+
+---
+
+## 系统亮点
+
+### 1. 🎯 行业深度定制
+
+**专为医美行业设计**
+- 深度理解医美行业业务逻辑
+- 金三角团队管理模式
+- 开单、耗卡、退卡全流程管理
+- 多岗位工资核算规则
+
+**业务规则灵活配置**
+- 支持复杂的工资计算规则
+- 支持多维度业绩统计
+- 支持灵活的权限控制
+
+---
+
+## 系统亮点
+
+### 2. 📊 数据可视化
+
+**多维度数据展示**
+- 实时KPI指标展示
+- 趋势图表分析
+- 排行榜展示
+- 漏斗图分析
+- 饼图、柱状图、折线图
+
+**移动端数据看板**
+- 集团驾驶舱(移动端)
+- 门店数据看板
+- 实时数据更新
+- 支持截图分享
+
+**让数据更直观,决策更高效**
+
+---
+
+## 系统亮点
+
+### 3. ⚡ 高性能架构
+
+**技术优势**
+- 前后端分离架构,独立部署
+- 微服务设计,易于扩展
+- 数据库优化,查询高效
+- 缓存机制,响应快速
+
+**性能指标**
+- 页面加载时间 < 3秒
+- 接口响应时间 < 500ms
+- 支持大数据量查询
+- 支持并发访问
+
+**稳定可靠,性能卓越**
+
+---
+
+## 系统亮点
+
+### 4. 🔒 安全可靠
+
+**数据安全**
+- JWT身份认证
+- 权限分级管控
+- 数据加密传输
+- 操作日志记录
+
+**系统稳定**
+- 异常统一处理
+- 数据一致性保证
+- 备份恢复机制
+- 7×24小时监控
+
+**企业级安全保障**
+
+---
+
+## 系统亮点
+
+### 5. 📱 多端支持
+
+**全平台覆盖**
+- PC端管理后台
+- 移动端小程序
+- 移动端App
+- H5页面
+
+**随时随地管理**
+- 移动端数据看板
+- 移动端审批流程
+- 移动端数据查询
+- 移动端报表查看
+
+**让管理更便捷**
+
+---
+
+## 应用场景
+
+### 适用企业类型
+
+**连锁医美机构**
+- 多门店统一管理
+- 总部数据汇总
+- 门店业绩对比
+- 统一工资核算
+
+**美容院**
+- 客户管理
+- 业绩统计
+- 工资核算
+- 库存管理
+
+**健康管理中心**
+- 会员管理
+- 服务记录
+- 业绩分析
+- 成本控制
+
+**满足不同规模企业的管理需求**
+
+---
+
+## 应用场景
+
+### 典型应用场景
+
+**场景一:月度工资核算**
+- 传统方式:人工计算,耗时3-5天,易出错
+- 系统方式:一键计算,5分钟完成,准确率100%
+
+**场景二:业绩分析决策**
+- 传统方式:Excel统计,数据滞后,分析困难
+- 系统方式:实时数据,多维度分析,图表展示
+
+**场景三:门店管理**
+- 传统方式:分散管理,数据不统一
+- 系统方式:集中管理,数据实时同步
+
+**显著提升管理效率,降低运营成本**
+
+---
+
+## 成功案例
+
+### 绿纤美业集团
+
+**应用规模**
+- 管理门店:100+ 家
+- 管理员工:1000+ 人
+- 管理客户:10万+ 人
+- 日均交易:1000+ 笔
+
+**应用效果**
+- 工资核算效率提升:90%
+- 数据统计效率提升:95%
+- 决策响应速度提升:80%
+- 运营成本降低:30%
+
+**生产环境稳定运行,获得用户高度认可**
+
+---
+
+## 系统优势总结
+
+### 为什么选择绿纤美业ERP?
+
+#### ✅ **行业深度**
+- 专为医美行业定制
+- 深度理解业务逻辑
+- 灵活适应业务变化
+
+#### ✅ **技术先进**
+- 现代化技术栈
+- 高性能架构设计
+- 安全可靠保障
+
+#### ✅ **功能完整**
+- 覆盖全业务流程
+- 数据可视化分析
+- 多端支持
+
+#### ✅ **服务保障**
+- 持续优化升级
+- 专业技术支持
+- 快速响应需求
+
+---
+
+## 未来规划
+
+### 持续创新,引领行业
+
+**短期规划(3-6个月)**
+- AI智能推荐
+- 大数据分析优化
+- 移动端功能增强
+- 报表功能扩展
+
+**中期规划(6-12个月)**
+- 供应链管理
+- 财务管理系统
+- 营销管理系统
+- 客户关系管理(CRM)增强
+
+**长期规划(1-2年)**
+- 行业SaaS平台
+- 开放API生态
+- 智能决策系统
+- 区块链数据存证
+
+**与行业共同成长,持续创新**
+
+---
+
+## 联系方式
+
+### 感谢聆听
+
+**绿纤美业ERP管理系统**
+
+- 📧 邮箱:[待填写]
+- 📱 电话:[待填写]
+- 🌐 官网:[待填写]
+- 📍 地址:[待填写]
+
+**期待与您合作,共创医美行业数字化未来!**
+
+---
+
+## 附录:系统截图
+
+### 战略决策指挥中心
+- 实时KPI指标展示
+- 多维度数据分析
+- 排行榜展示
+- 趋势图表分析
+
+### 工资核算系统
+- 工资列表展示
+- 工资计算功能
+- 批量导入导出
+- 工资条确认
+
+### 移动端驾驶舱
+- 集团驾驶舱
+- 门店数据看板
+- 实时数据更新
+- 移动端优化
+
+**(建议在PPT中插入实际系统截图)**
+
+---
+
+## 谢谢!
+
+**绿纤美业ERP管理系统**
+**让医美行业管理更简单、更高效、更智能**
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTechTeacherSalary/TechTeacherStatisticsOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTechTeacherSalary/TechTeacherStatisticsOutput.cs
index cb0ad2f..7beb9ce 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTechTeacherSalary/TechTeacherStatisticsOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTechTeacherSalary/TechTeacherStatisticsOutput.cs
@@ -56,6 +56,16 @@ namespace NCC.Extend.Entitys.Dto.LqTechTeacherSalary
/// 部门名称(科技一部/科技二部)
///
public string DepartmentName { get; set; }
+
+ ///
+ /// 开单人头(同一天去重)
+ ///
+ public int OrderPersonCount { get; set; }
+
+ ///
+ /// 消耗开单转化率(消耗开单转化率=开单人头/消耗人头)
+ ///
+ public decimal ConsumeOrderConversionRate { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqTechTeacherSalaryService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqTechTeacherSalaryService.cs
index 46e158f..e8b6d95 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqTechTeacherSalaryService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqTechTeacherSalaryService.cs
@@ -10,6 +10,7 @@ using NCC.Extend.Entitys.Dto.LqSalary;
using NCC.Extend.Entitys.Dto.LqTechTeacherSalary;
using NCC.Extend.Entitys.lq_hytk_kjbsyj;
using NCC.Extend.Entitys.lq_kd_kjbsyj;
+using NCC.Extend.Entitys.lq_kd_kdjlb;
using NCC.Extend.Entitys.lq_md_xdbhsj;
using NCC.Extend.Entitys.lq_mdxx;
using NCC.Extend.Entitys.lq_attendance_summary;
@@ -885,14 +886,39 @@ namespace NCC.Extend
})
.ToList();
- // 10. 构建结果字典(优化查找性能)
+ // 10. 统计开单人头(同一天去重)
+ // 从开单科技老师业绩表关联开单主表,按科技老师ID + 开单日期 + 客户ID去重统计
+ var orderPersonCountList = await _db.Queryable(
+ (kjbsyj, kdjlb) => kjbsyj.Glkdbh == kdjlb.Id && kdjlb.IsEffective == 1)
+ .Where((kjbsyj, kdjlb) => kjbsyj.IsEffective == 1
+ && kdjlb.Kdrq >= startDate && kdjlb.Kdrq <= endDate.AddDays(1))
+ .Where((kjbsyj, kdjlb) => teacherIds.Contains(kjbsyj.Kjbls) || teacherAccounts.Contains(kjbsyj.Kjblszh))
+ .Select((kjbsyj, kdjlb) => new
+ {
+ TeacherId = kjbsyj.Kjbls,
+ OrderDate = kdjlb.Kdrq,
+ MemberId = kdjlb.Kdhy
+ })
+ .ToListAsync();
+
+ // 按科技老师ID + 开单日期 + 客户ID去重统计开单人头
+ var orderPersonCountDict = orderPersonCountList
+ .Where(x => !string.IsNullOrEmpty(x.TeacherId) && !string.IsNullOrEmpty(x.MemberId) && x.OrderDate.HasValue)
+ .GroupBy(x => new { x.TeacherId, OrderDate = x.OrderDate.Value.Date, x.MemberId })
+ .Select(g => new { TeacherId = g.Key.TeacherId, MemberId = g.Key.MemberId })
+ .GroupBy(x => x.TeacherId)
+ .ToDictionary(
+ g => g.Key ?? "",
+ g => g.Select(x => x.MemberId).Distinct().Count());
+
+ // 11. 构建结果字典(优化查找性能)
var orderDict = orderStats.ToDictionary(x => x.TeacherId, x => x);
var consumeDict = consumeStats.ToDictionary(x => x.TeacherId, x => x);
var refundDict = refundStats.ToDictionary(x => x.TeacherId, x => x);
// personCountDict 已经在上面构建了
var personTimesDict = personTimesStats.ToDictionary(x => x.TeacherId, x => x);
- // 11. 组装结果
+ // 12. 组装结果
var result = new List();
foreach (var teacher in techTeacherList)
{
@@ -901,6 +927,10 @@ namespace NCC.Extend
var refundStat = refundDict.ContainsKey(teacher.EmployeeId) ? refundDict[teacher.EmployeeId] : null;
var personCount = personCountDict.ContainsKey(teacher.EmployeeId) ? personCountDict[teacher.EmployeeId] : 0;
var personTimesStat = personTimesDict.ContainsKey(teacher.EmployeeId) ? personTimesDict[teacher.EmployeeId] : null;
+ var orderPersonCount = orderPersonCountDict.ContainsKey(teacher.EmployeeId) ? orderPersonCountDict[teacher.EmployeeId] : 0;
+
+ // 计算消耗开单转化率(开单人头/消耗人头)
+ var consumeOrderConversionRate = personCount > 0 ? (decimal)orderPersonCount / personCount : 0m;
result.Add(new TechTeacherStatisticsOutput
{
@@ -915,7 +945,9 @@ namespace NCC.Extend
DepartmentId = teacher.OrganizeId,
DepartmentName = !string.IsNullOrEmpty(teacher.DepartmentName)
? teacher.DepartmentName
- : (techOrganizeDict.ContainsKey(teacher.OrganizeId) ? techOrganizeDict[teacher.OrganizeId] : "")
+ : (techOrganizeDict.ContainsKey(teacher.OrganizeId) ? techOrganizeDict[teacher.OrganizeId] : ""),
+ OrderPersonCount = orderPersonCount,
+ ConsumeOrderConversionRate = consumeOrderConversionRate
});
}