Files
f9-web-ai-test/工作进度/工作进度-26.md
T
yanpeng200212 1f1b184411 新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块
- 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面
- 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代
- 调整路由、仪表盘、Lsjl 流丝记录实体与服务
- 更新业务种子数据与 DbSeeder
- 补充工作进度文档 14-27
2026-10-27 09:09:57 +08:00

8.8 KiB
Raw Blame History

工作进度-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()(完整移植,含多部门 / 多工种分支):
    1. 总旷工 ≥ 半天 → 0;2. 总出勤 ≤ 3 天 → 0;
    2. 多部门:∑出勤+带薪 ≥ 15 天 按实际出勤折算,否则按标准出勤折算;离职 / 新入职分别处理;
    3. 单部门:∑出勤+带薪请假 ≥ 15 天 取全额,否则 全勤奖/标准出勤时长×总出勤;
    4. 设备办全职:出勤含加班达前缫天数且不低于标准 → 请假不扣;
    5. 其余:全勤奖 - (全勤奖 / 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 条)已全部清理。

五、待办 / 已知差异

  1. 跨部门重复考勤提示:老系统在加载时提示「X 职工已在 Y 部门录入」,本轮未移植(需额外接口),后续补
  2. 岗位胜任考核放在【薪资】下(老系统属 CalXzMain 薪资模块),仅按年月维护考核结果,未做考核流程
  3. 统计页的列宽 / 分组表头在窄屏下需横向滚动,后续可加列配置
  4. 报表设计器脚本 F9ReportDesignerHandler.ps1 改完必须确认 UTF-8 BOM 仍在
  5. 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.cs
    • Services/Prod/KaoqinService.cs(CQDJ + CQTJ 全部口径)、Services/PayRoll/ConfEmployeeService.cs
    • Controllers/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\
  • 每轮对话结尾记得生成本工作进度文档