0cfc43b9
“wangming”
修复科技部总经理工资计算逻辑及相关...
|
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
|
# 科技部总经理Cell金额计算问题诊断
## 问题描述
重启服务并重新计算后,Cell金额仍然是 **60,994.30**,而不是预期的 **69,838.00**。
## 诊断结果
### 1. SQL查询是正确的
直接查询数据库,使用正确的SQL和时间范围,结果正确:
```sql
SELECT COALESCE(SUM(CAST(jksyj AS DECIMAL(18,2))), 0) as Amount
FROM lq_kd_jksyj
WHERE F_IsEffective = 1
AND F_StoreId IN (...)
AND (F_BeautyType = 'cell' OR F_BeautyType = 'Cell')
AND yjsj >= '2025-12-01 00:00:00'
AND yjsj <= '2025-12-31 23:59:59'
```
**查询结果**:69,838.00 元(正确)
### 2. 代码逻辑检查
- ✅ `endDateTime` 变量已正确定义
- ✅ SQL字符串格式化正确
- ✅ 使用原生SQL在数据库层面转换
- ✅ 时间范围处理正确
### 3. 问题定位
**可能的原因**:SqlSugar 的 `Updateable` 默认只更新有变化的字段。如果计算出来的值与数据库中的值相同(或接近),可能不会触发更新。
**解决方案**:添加 `IgnoreColumns` 确保强制更新所有字段(已添加)
## 已修复的问题
### 1. 添加了 IgnoreColumns
```csharp
await _db.Updateable(recordsToUpdate)
.IgnoreColumns(x => x.CreateTime)
.IgnoreColumns(x => x.CreateUser)
.ExecuteCommandAsync();
```
### 2. 添加了日志记录
```csharp
_logger.LogInformation($"已更新 {recordsToUpdate.Count} 条科技部总经理工资记录(月份:{monthStr})");
```
## 验证步骤
### 1. 重新编译和重启服务
```bash
cd netcore
dotnet build
# 重启服务
```
### 2. 重新执行计算
```bash
POST /api/Extend/lqtechgeneralmanagersalary/calculate/tech-general-manager?year=2025&month=12
```
### 3. 验证结果
```sql
SELECT F_EmployeeName, F_StatisticsMonth, F_CellAmount, F_UpdateTime
FROM lq_tech_general_manager_salary_statistics
WHERE F_EmployeeName LIKE '%夏萍%' AND F_StatisticsMonth = '202512'
```
**预期结果**:
- Cell金额:**69,838.00** 元
- UpdateTime:当前时间
## 门店明细预期值
| 门店ID | 门店名称 | 预期Cell金额 |
|--------|---------|------------|
| 1649328471923847170 | 绿纤龙湖店 | 7,140.00 |
| 1649328471923847172 | 绿纤华润店 | 5,500.00 |
| 1649328471923847173 | 绿纤静居寺店 | **46,110.00** (当前:37,400.00) |
| 1649328471923847184 | 绿纤大丰店 | 8,888.00 |
| 1649328471923847187 | 绿纤明信店 | **2,200.00** (当前:2,000.00) |
| 1649328471923847175 | 绿纤468店 | **0.00** (当前:66.30) |
## 注意事项
1. **确保服务已重启**:代码修改后必须重启服务才能生效
2. **检查日志**:查看是否有 "已更新 X 条科技部总经理工资记录" 的日志
3. **验证更新时间**:F_UpdateTime 应该更新为当前时间
4. **对比科技部驾驶舱接口**:Cell金额应该与 `/api/Extend/LqTechDepartmentDashboard/GetStatistics` 接口返回的值一致
|