README.md
绿纤美业ERP工资核算服务
项目简介
这是一个基于.NET 6开发的跨平台控制台服务,专门用于绿纤美业ERP系统的月末财务工资核算。该服务支持Windows、Linux、CentOS等操作系统,能够自动计算员工工资、生成工资报表并发送邮件通知。
功能特性
- ✅ 跨平台支持: 支持Windows、Linux、CentOS等操作系统
- ✅ 用户信息初始化: 自动从系统用户表获取用户信息并插入到工资表
- ✅ 自动工资核算: 根据绿纤美业薪酬规则自动计算员工工资
- ✅ 多角色支持: 支持健康师、店长、主任、店助等不同岗位的工资计算
- ✅ 金三角提成: 支持金三角(战队)提成计算
- ✅ 门店生命线: 基于门店生命线的考核机制
- ✅ 新店保护: 支持新店特殊薪酬规则
- ✅ 报表导出: 自动生成Excel/CSV格式的工资报表
- ✅ 邮件通知: 支持邮件通知功能
- ✅ 日志记录: 完整的操作日志记录
- ✅ Docker支持: 支持Docker容器化部署
技术栈
- .NET 6.0: 跨平台运行时
- SqlSugar: ORM框架,支持MySQL数据库
- Serilog: 结构化日志记录
- Microsoft.Extensions: 依赖注入和配置管理
- Yitter.IdGenerator: 分布式ID生成
系统要求
开发环境
- .NET 6.0 SDK
- Visual Studio 2022 或 VS Code
- MySQL 5.7+ 或 8.0+
运行环境
- .NET 6.0 Runtime
- MySQL数据库连接
- 网络连接(用于数据库访问)
快速开始
1. 克隆项目
git clone [项目地址]
cd service/LqSalaryCalculationService
2. 配置数据库
编辑 appsettings.json 文件,配置数据库连接字符串:
{
"ConnectionStrings": {
"DefaultConnection": "Database=lqerp;Data Source=your-server;Port=3306;User Id=your-username;Password=your-password;Charset=utf8;"
}
}
3. 运行服务
Windows
# 计算当前月份工资
start.bat
# 计算指定月份工资
start.bat 2024-09
# 显示帮助
start.bat --help
Linux/CentOS
# 计算当前月份工资
./start.sh
# 计算指定月份工资
./start.sh 2024-09
# 显示帮助
./start.sh --help
直接使用dotnet命令
# 还原包
dotnet restore
# 构建项目
dotnet build -c Release
# 运行服务
dotnet run --configuration Release -- 2024-09
Docker部署
1. 构建Docker镜像
docker build -t lq-salary-calculation-service .
2. 运行容器
# 运行容器
docker run -d \
--name salary-service \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/output:/app/output \
-v $(pwd)/backup:/app/backup \
lq-salary-calculation-service 2024-09
# 查看日志
docker logs salary-service
3. 使用Docker Compose
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
配置说明
appsettings.json配置项
{
"ConnectionStrings": {
"DefaultConnection": "数据库连接字符串"
},
"SalaryCalculation": {
"CalculationMonth": "计算月份",
"OutputPath": "./output",
"BackupPath": "./backup",
"LogPath": "./logs",
"EnableEmailNotification": true,
"EmailSettings": {
"SmtpServer": "smtp.163.com",
"SmtpPort": 587,
"Username": "邮箱用户名",
"Password": "邮箱密码",
"FromEmail": "发件人邮箱",
"ToEmails": ["收件人邮箱列表"]
}
}
}
工作流程
1. 用户信息初始化
服务启动时首先执行以下步骤:
获取用户基础信息:
- 从
BASE_USER表获取F_Id(用户编号)、F_REALNAME(姓名)、F_GW(岗位) - 通过
F_MDID(门店编号)关联lq_mdxx表获取dm(门店名称)
- 从
获取金三角信息:
- 通过用户ID在
lq_jinsanjiao_user表中查找对应月份的金三角ID - 通过金三角ID在
lq_ycsd_jsj表中获取jsj(金三角名称)
- 通过用户ID在
插入工资表:
- 将用户信息插入到
lq_gz(工资表)的对应字段:userid←F_Id(用户编号)xm←F_REALNAME(姓名)hsgw←F_GW(岗位)md←dm(门店名称)jsjzd←jsj(金三角名称)
- 将用户信息插入到
2. 工资核算
完成用户信息初始化后,执行工资核算:
薪酬规则
健康师薪酬规则
- 一星: 月消耗≥10000元 且 项目数≥96个 → 底薪2000元
- 二星: 月消耗≥20000元 且 项目数≥126个 → 底薪2200元
- 三星: 月消耗≥40000元 且 项目数≥156个 → 底薪2400元
- 0星: 未达到最低标准 → 底薪1800元
金三角提成规则
- 3人战队: 业绩30000-150000元,提成比例3%-7%
- 2人战队: 业绩20000-80000元,提成比例3%-6%
- 1人战队: 业绩10000-60000元,提成比例3%-6%
管理岗位薪酬规则
- 店长: 底薪4000元,基于毛利的提成计算
- 主任: 底薪3500元,基于毛利的提成计算
- 店助: 底薪3000元,基于毛利的提成计算
输出文件
服务运行后会在以下目录生成文件:
./output/: 工资报表文件(Excel/CSV格式)./logs/: 日志文件./backup/: 备份文件
日志说明
日志文件位置:./logs/salary-calculation-YYYY-MM-DD.log
日志级别:
- Information: 一般信息
- Warning: 警告信息
- Error: 错误信息
- Fatal: 致命错误
故障排除
常见问题
数据库连接失败
- 检查数据库连接字符串是否正确
- 确认数据库服务是否运行
- 检查网络连接
权限不足
- 确保有足够的文件系统权限
- 检查输出目录是否可写
依赖包问题
- 运行
dotnet restore还原包 - 检查网络连接
- 运行
调试模式
# 启用详细日志
export ASPNETCORE_ENVIRONMENT=Development
dotnet run --configuration Debug -- 2024-09
开发指南
项目结构
LqSalaryCalculationService/
├── Models/ # 数据模型
│ ├── EmployeeSalary.cs # 员工工资模型
│ └── SalaryCalculationConfig.cs # 配置模型
├── Services/ # 服务层
│ ├── ISalaryCalculationService.cs # 服务接口
│ └── SalaryCalculationService.cs # 服务实现
├── Program.cs # 程序入口
├── appsettings.json # 配置文件
├── Dockerfile # Docker配置
├── docker-compose.yml # Docker Compose配置
├── start.sh # Linux启动脚本
├── start.bat # Windows启动脚本
└── README.md # 说明文档
添加新的薪酬规则
- 在
SalaryCalculationService.cs中添加新的计算方法 - 在
CalculateSalaryAsync方法中添加新的岗位判断 - 更新配置文件以支持新的参数
版本历史
v1.0.0 (2024-09-11)
- 初始版本发布
- 支持基础工资核算功能
- 支持跨平台部署
- 支持Docker容器化
许可证
本项目仅供内部使用,请勿用于商业用途。
技术支持
如有技术问题,请联系开发团队或查看项目文档。
注意: 请确保在生产环境中正确配置数据库连接和邮件设置。