Name Last Update
..
Models Loading commit data...
Services Loading commit data...
Dockerfile Loading commit data...
LqSalaryCalculationService.csproj Loading commit data...
Program.cs Loading commit data...
README.md Loading commit data...
appsettings.json Loading commit data...
docker-compose.yml Loading commit data...
start.bat Loading commit data...
start.sh Loading commit data...

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. 用户信息初始化

服务启动时首先执行以下步骤:

  1. 获取用户基础信息

    • BASE_USER 表获取 F_Id(用户编号)、F_REALNAME(姓名)、F_GW(岗位)
    • 通过 F_MDID(门店编号)关联 lq_mdxx 表获取 dm(门店名称)
  2. 获取金三角信息

    • 通过用户ID在 lq_jinsanjiao_user 表中查找对应月份的金三角ID
    • 通过金三角ID在 lq_ycsd_jsj 表中获取 jsj(金三角名称)
  3. 插入工资表

    • 将用户信息插入到 lq_gz(工资表)的对应字段:
      • useridF_Id(用户编号)
      • xmF_REALNAME(姓名)
      • hsgwF_GW(岗位)
      • mddm(门店名称)
      • jsjzdjsj(金三角名称)

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: 致命错误

故障排除

常见问题

  1. 数据库连接失败

    • 检查数据库连接字符串是否正确
    • 确认数据库服务是否运行
    • 检查网络连接
  2. 权限不足

    • 确保有足够的文件系统权限
    • 检查输出目录是否可写
  3. 依赖包问题

    • 运行 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                  # 说明文档

添加新的薪酬规则

  1. SalaryCalculationService.cs 中添加新的计算方法
  2. CalculateSalaryAsync 方法中添加新的岗位判断
  3. 更新配置文件以支持新的参数

版本历史

v1.0.0 (2024-09-11)

  • 初始版本发布
  • 支持基础工资核算功能
  • 支持跨平台部署
  • 支持Docker容器化

许可证

本项目仅供内部使用,请勿用于商业用途。

技术支持

如有技术问题,请联系开发团队或查看项目文档。


注意: 请确保在生产环境中正确配置数据库连接和邮件设置。