3fcf01d8
hexiaodong
hxd202509112049
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
# 绿纤美业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. 克隆项目
```bash
git clone [项目地址]
cd service/LqSalaryCalculationService
```
### 2. 配置数据库
编辑 `appsettings.json` 文件,配置数据库连接字符串:
```json
{
"ConnectionStrings": {
"DefaultConnection": "Database=lqerp;Data Source=your-server;Port=3306;User Id=your-username;Password=your-password;Charset=utf8;"
}
}
```
### 3. 运行服务
#### Windows
```cmd
# 计算当前月份工资
start.bat
# 计算指定月份工资
start.bat 2024-09
# 显示帮助
start.bat --help
```
#### Linux/CentOS
```bash
# 计算当前月份工资
./start.sh
# 计算指定月份工资
./start.sh 2024-09
# 显示帮助
./start.sh --help
```
#### 直接使用dotnet命令
```bash
# 还原包
dotnet restore
# 构建项目
dotnet build -c Release
# 运行服务
dotnet run --configuration Release -- 2024-09
```
## Docker部署
### 1. 构建Docker镜像
```bash
docker build -t lq-salary-calculation-service .
```
### 2. 运行容器
```bash
# 运行容器
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
```bash
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
## 配置说明
### appsettings.json配置项
```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`(工资表)的对应字段:
- `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**: 致命错误
## 故障排除
### 常见问题
1. **数据库连接失败**
- 检查数据库连接字符串是否正确
- 确认数据库服务是否运行
- 检查网络连接
2. **权限不足**
- 确保有足够的文件系统权限
- 检查输出目录是否可写
3. **依赖包问题**
- 运行 `dotnet restore` 还原包
- 检查网络连接
### 调试模式
```bash
# 启用详细日志
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容器化
## 许可证
本项目仅供内部使用,请勿用于商业用途。
## 技术支持
如有技术问题,请联系开发团队或查看项目文档。
---
**注意**: 请确保在生产环境中正确配置数据库连接和邮件设置。
|