README.md 7.24 KB

绿纤美业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容器化

许可证

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

技术支持

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


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