- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块 - 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面 - 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代 - 调整路由、仪表盘、Lsjl 流丝记录实体与服务 - 更新业务种子数据与 DbSeeder - 补充工作进度文档 14-27
8.8 KiB
8.8 KiB
工作进度-26:参考老系统完成整个考勤模块(CQDJ 补齐 + CQTJ 新建 + 依赖配置)
协作规则(长期生效):每次对话结尾都要生成工作进度。 即在每轮对话结束前,把本轮完成的内容追加为
工作进度/工作进度-N.md,并在文档中保留本条规则,方便下一轮接续。
一、需求
用户要求:完善整个考勤模块,不要删减,并给出老系统参考目录
D:\AntaiProject - 副本\trunk\WinClient\F9.Business.Prod\KQ(CQDJ 考勤登记 + CQTJ 考勤统计)。
二、老系统源码研读结论(KQ 目录)
| 文件 | 大小 | 结论 |
|---|---|---|
CQDJ\Page_Cqdj.cs |
19KB | 查询口径:日期 + 部门 + 工种 + 班次;录入/删除整组、初始化为正常出勤;「从指定日期复制」 |
CQDJ\Page_Cqdj_Edit.cs |
77KB | 工具栏 8 个按钮(标准/出勤/加班/流动/事假/公假/代班/夜班)+ 添加/删除职工 + 刷新;保存整组覆盖、倒挤「正常」 |
CQDJ\Page_Cqdj_addOtherChejian_select.cs |
— | 确认无引用,遗留功能,不移植 |
CQTJ\Page_Cqtj.cs |
84KB | 统计是月快照;录入时库中有快照取库,否则 CqtjViews 实时汇总;含 quanqin 全勤奖、jiaqiBuzhuJisuan 假期补助、jisuanJiabanMkHours 加班免扣、jisuanJianbanJine 加班费、liudongJineJisuan 流动、daibanJineJisuan 代班、jisuanCqTianci 出勤天次、Yijianshengcheng 一键生成 |
CQTJ\Page_Cqtj_Edit.cs |
7.5KB | 可编辑列:年假/公假/调休/法定假/全勤免扣/全勤计算/全勤奖/加班费/流动工资/代班工资/假期补助分项与合计/夜班补助/旷工考核 |
CQTJ 强依赖(老系统在 PayRoll 侧):
- CONFZQ 薪资配置-账期:
QsQuanqinDays前缫出勤天数(为 0 时直接抛错不让录入) - CONFEMPLOYEE 薪资配置-职工:
Hours_FadingBz/Hours_FadingGz/IsXuegong - 岗位胜任考核:考核结果决定加班费单价档位(无记录时回落
JiabanJineBz)
三、本轮新增 / 修改
后端(新增)
| 文件 | 说明 |
|---|---|
Domain/Entities/Prod/Cqtj.cs |
考勤统计实体(biz_prod_kq_cqtj),含天数/时长/请假分项/学工/法定假/全勤相关时长/全部金额字段 |
Domain/Entities/PayRoll/ConfEmployee.cs |
ConfZq(ConfZqs)、ConfEmployee(ConfEmployees)、Gwsrkh(Gwsrkhs) |
Dtos/Prod/KaoqinDtos.cs |
追加 CqtjRowDto / CqtjSaveDto / CqtjGenerateDto / CqtjViewDto |
Dtos/PayRoll/ConfEmployeeDtos.cs |
ConfZqDto / ConfEmployeeDto / GwsrkhDto |
Services/Prod/KaoqinService.cs |
追加 CQTJ:分页、录入(取库 or 实时汇总)、保存(整组覆盖)、删除、一键生成、全部删除;并新增 8 个口径函数 |
Services/PayRoll/ConfEmployeeService.cs |
IConfZqService / IConfEmployeeService / IGwsrkhService 接口 + 实现 |
Api/Controllers/Prod/KaoqinController.cs |
追加 GET/POST/DELETE /cqtj、GET /cqtj/edit、POST /cqtj/generate |
Api/Controllers/PayRoll/ConfEmployeeController.cs |
api/payroll/confzq、api/payroll/confemployee、api/payroll/gwsrkh |
Application/DependencyInjection.cs |
注册 IConfZqService / IConfEmployeeService / IGwsrkhService |
Infrastructure/Data/DbSeeder.cs |
菜单:生产-考勤 增「考勤统计」;薪资 增「账期薪资配置 / 职工薪资配置 / 岗位胜任考核」 |
后端口径(严格对齐老系统)
- 正常倒挤:
正常 = 标准 - 请假 - 旷工 - 流动 - 外派 - 代班 - 工伤;出勤 = 正常 + 流动 + 代班 + 外派 + 工伤(不含加班) - 出勤天数:
标准 = 工种配置 QqDaysStandard;实际 = 本部门出勤时长 / HoursPerday;天次 = (出勤+加班)>0 的天数 - 全勤奖
quanqin()(完整移植,含多部门 / 多工种分支):- 总旷工 ≥ 半天 → 0;2. 总出勤 ≤ 3 天 → 0;
- 多部门:
∑出勤+带薪 ≥ 15 天按实际出勤折算,否则按标准出勤折算;离职 / 新入职分别处理; - 单部门:
∑出勤+带薪请假 ≥ 15 天取全额,否则全勤奖/标准出勤时长×总出勤; - 设备办全职:出勤含加班达前缫天数且不低于标准 → 请假不扣;
- 其余:
全勤奖 - (全勤奖 / QqHoursMaxQj) × 请假时长
- 假期补助:按明细「请假类型 × 出勤工种」分组,病假/轮休/婚假/丧假/法定假/年假/调休分别乘工种单价;
法定假 = 补助小时×JiaqiJineFadingBz + 工资小时×JiaqiJineFadingGz - 加班免扣请假:
出勤+加班 ≥ 前缫出勤天数×HoursPerday 且 加班 ≥ QqHoursDkMinjiaban→ 免扣QqHoursDkQingjia - 加班费:按加班明细工种取单价;有岗位胜任考核时按 欠合格/期望/合格/胜任/超胜任 取
Jiaban_GwsrkhJine*,无记录取JiabanJineBz;学工加班 =XgJineGangwei /(QqDaysStandard×HoursPerday) × 时长 - 流动 =
LiudongJineGuding × 时长;代班 =JineGangwei /(QqDaysStandard×HoursPerday) × 时长;夜班 =JineYeban × 夜班次数;旷工考核 =JiaqiJineKuangongKk × 旷工时长 - 扎帐校验:账期
IsZhaZhang时禁止保存 / 删除 / 生成
前端
| 文件 | 说明 |
|---|---|
views/prod/kaoqin/index.vue(改) |
补齐工具栏:刷新 / 复制指定日期 / 设标准时长 / 设出勤时长 / 加班 / 流动 / 事假 / 公假 / 代班 / 夜班 / 添加职工 / 删除职工 / 删除整组 / 保存;职工表加多选列;明细表加「出勤部门 / 出勤工种」(代班、流动跨车间);保存前「出勤超标准」二次确认;新增复制日期弹窗(可勾选初始化为正常出勤) |
views/prod/kaoqin/cqtj/index.vue(新) |
考勤统计:年月 + 部门 + 工种 + 关键字;分组表头(出勤天数 / 时长 / 学工 / 请假分项 / 全勤与金额);录入(弹窗内可编辑带「*」字段)、删除、一键生成、全部删除;分页 |
views/payroll/confzq/index.vue(新) |
账期薪资配置:年度/月份/前缫出勤天数 |
views/payroll/confemployee/index.vue(新) |
职工薪资配置:职工/工种/法定补助h/法定工资h/学工 |
views/payroll/gwsrkh/index.vue(新) |
岗位胜任考核:年度/月份/部门/职工/考核结果 |
router/index.js(改) |
新增 5 条 componentMap |
四、验证
| 项 | 结果 |
|---|---|
| 解决方案编译 | 0 个错误 |
GET /auth/menus |
✅ 生产-考勤 → 考勤登记 / 考勤统计;薪资 → …/账期薪资配置 / 职工薪资配置 / 岗位胜任考核 |
| 账期薪资配置 | ✅ POST 2026/10 QsQuanqinDays=26 成功 |
| 考勤登记 | ✅ 46 人保存成功(含 1 人加班 2h + 病假 1h + 夜班 1) |
| 实时汇总 | ✅ 曾红君 出勤=8 加班=2 请假=1 实际天=0.89 天次=1 加班费=30 病假补助=5 补助合计=5 夜班补助=20(与手算一致:正常 9-1=8,加班费 2×15,病假 1×5,夜班 1×20) |
| 统计保存 / 列表 / 取库 | ✅ 保存 46 → 列表 total=46 → 再录入 exists=True |
| 删除 / 一键生成 | ✅ 删除 46;一键生成 1 个车间 |
| 前端 5 个页面 | ✅ vite 全部 200,无 lint |
测试数据(2026-10-26 的 46 条登记、统计快照、测试用工种薪资配置 3 条、账期配置 1 条)已全部清理。
五、待办 / 已知差异
- 跨部门重复考勤提示:老系统在加载时提示「X 职工已在 Y 部门录入」,本轮未移植(需额外接口),后续补
- 岗位胜任考核放在【薪资】下(老系统属
CalXzMain薪资模块),仅按年月维护考核结果,未做考核流程 - 统计页的列宽 / 分组表头在窄屏下需横向滚动,后续可加列配置
- 报表设计器脚本
F9ReportDesignerHandler.ps1改完必须确认 UTF-8 BOM 仍在 views/notification/type/index.vue里仍有/attendance/approve?leaveId=示例文本
六、下次接续提示
- 改后端先按端口
Stop-Process再编译,否则 DLL 锁定;vite 卡死时同样按端口杀掉重启 (当前:后端 3000 PID 17000,前端 5173 PID 26328) - 登录 admin / 123456
- 考勤相关文件:
- 后端
Domain/Entities/Prod/Cqdj.cs、Cqtj.cs、Domain/Entities/PayRoll/ConfEmployee.cs Dtos/Prod/KaoqinDtos.cs、Dtos/PayRoll/ConfEmployeeDtos.csServices/Prod/KaoqinService.cs(CQDJ + CQTJ 全部口径)、Services/PayRoll/ConfEmployeeService.csControllers/Prod/KaoqinController.cs、Controllers/PayRoll/ConfEmployeeController.cs- 前端
views/prod/kaoqin/index.vue、views/prod/kaoqin/cqtj/index.vue、views/payroll/confzq|confemployee|gwsrkh/index.vue
- 后端
- 老系统参考:
D:\AntaiProject - 副本\trunk\WinClient\F9.Business.Prod\KQ\ - 每轮对话结尾记得生成本工作进度文档