diff --git a/pom.xml b/pom.xml
index cd9f6af..72630b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -352,6 +352,13 @@
${ruoyi-flowable-plus.version}
+
+
+ com.ruoyi
+ ruoyi-pay
+ ${ruoyi-flowable-plus.version}
+
+
@@ -367,6 +374,7 @@
ruoyi-oss
ruoyi-sms
ruoyi-system
+ ruoyi-pay
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 3316f7d..bc888e8 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -84,6 +84,11 @@
ruoyi-demo
+
+ com.ruoyi
+ ruoyi-pay
+ 0.8.2
+
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index b4be53e..a457df2 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -285,7 +285,7 @@ flowable:
# 关闭定时任务 job
async-executor-activate: false
# 库与数据库表结构不一致时,会自动将数据库表结构升级至新版本。
- database-schema-update: true
+ database-schema-update: false
idm:
# 关闭idm引擎 数据库不会创建act_id_*表,流程流转不会使用act_id_*相关的表
enabled: false
diff --git a/ruoyi-pay/pom.xml b/ruoyi-pay/pom.xml
new file mode 100644
index 0000000..71f54f9
--- /dev/null
+++ b/ruoyi-pay/pom.xml
@@ -0,0 +1,46 @@
+
+
+
+ ruoyi-flowable-plus
+ com.ruoyi
+ 0.8.2
+
+ 4.0.0
+
+ ruoyi-pay
+
+
+
+ org.projectlombok
+ lombok
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+ com.github.yulichang
+ mybatis-plus-join-boot-starter
+ 1.4.4
+
+
+
+ io.github.biezhi
+ TinyPinyin
+ 2.0.3.RELEASE
+
+
+ org.freemarker
+ freemarker
+ 2.3.31
+
+
+
+
+ 11
+ 11
+
+
+
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayAttendanceController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayAttendanceController.java
new file mode 100644
index 0000000..56aecef
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayAttendanceController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayAttendanceVo;
+import com.ruoyi.pay.domain.bo.PayAttendanceBo;
+import com.ruoyi.pay.service.IPayAttendanceService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 考勤
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/attendance")
+public class PayAttendanceController extends BaseController {
+
+ private final IPayAttendanceService iPayAttendanceService;
+
+ /**
+ * 查询考勤列表
+ */
+ @SaCheckPermission("pay:attendance:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayAttendanceBo bo, PageQuery pageQuery) {
+ return iPayAttendanceService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出考勤列表
+ */
+ @SaCheckPermission("pay:attendance:export")
+ @Log(title = "考勤", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayAttendanceBo bo, HttpServletResponse response) {
+ List list = iPayAttendanceService.queryList(bo);
+ ExcelUtil.exportExcel(list, "考勤", PayAttendanceVo.class, response);
+ }
+
+ /**
+ * 获取考勤详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:attendance:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayAttendanceService.queryById(id));
+ }
+
+ /**
+ * 新增考勤
+ */
+ @SaCheckPermission("pay:attendance:add")
+ @Log(title = "考勤", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayAttendanceBo bo) {
+ return toAjax(iPayAttendanceService.insertByBo(bo));
+ }
+
+ /**
+ * 修改考勤
+ */
+ @SaCheckPermission("pay:attendance:edit")
+ @Log(title = "考勤", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayAttendanceBo bo) {
+ return toAjax(iPayAttendanceService.updateByBo(bo));
+ }
+
+ /**
+ * 删除考勤
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:attendance:remove")
+ @Log(title = "考勤", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayAttendanceService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoEmployeeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoEmployeeController.java
new file mode 100644
index 0000000..9242b3a
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoEmployeeController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayBaohuoEmployeeVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoEmployeeBo;
+import com.ruoyi.pay.service.IPayBaohuoEmployeeService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 包活工单员工关联
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/baohuoEmployee")
+public class PayBaohuoEmployeeController extends BaseController {
+
+ private final IPayBaohuoEmployeeService iPayBaohuoEmployeeService;
+
+ /**
+ * 查询包活工单员工关联列表
+ */
+ @SaCheckPermission("pay:baohuoEmployee:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayBaohuoEmployeeBo bo, PageQuery pageQuery) {
+ return iPayBaohuoEmployeeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出包活工单员工关联列表
+ */
+ @SaCheckPermission("pay:baohuoEmployee:export")
+ @Log(title = "包活工单员工关联", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayBaohuoEmployeeBo bo, HttpServletResponse response) {
+ List list = iPayBaohuoEmployeeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "包活工单员工关联", PayBaohuoEmployeeVo.class, response);
+ }
+
+ /**
+ * 获取包活工单员工关联详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:baohuoEmployee:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayBaohuoEmployeeService.queryById(id));
+ }
+
+ /**
+ * 新增包活工单员工关联
+ */
+ @SaCheckPermission("pay:baohuoEmployee:add")
+ @Log(title = "包活工单员工关联", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayBaohuoEmployeeBo bo) {
+ return toAjax(iPayBaohuoEmployeeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改包活工单员工关联
+ */
+ @SaCheckPermission("pay:baohuoEmployee:edit")
+ @Log(title = "包活工单员工关联", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayBaohuoEmployeeBo bo) {
+ return toAjax(iPayBaohuoEmployeeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除包活工单员工关联
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:baohuoEmployee:remove")
+ @Log(title = "包活工单员工关联", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayBaohuoEmployeeService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoProductController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoProductController.java
new file mode 100644
index 0000000..27091f7
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoProductController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayBaohuoProductVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoProductBo;
+import com.ruoyi.pay.service.IPayBaohuoProductService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 包活工单产品关联
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/baohuoProduct")
+public class PayBaohuoProductController extends BaseController {
+
+ private final IPayBaohuoProductService iPayBaohuoProductService;
+
+ /**
+ * 查询包活工单产品关联列表
+ */
+ @SaCheckPermission("pay:baohuoProduct:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayBaohuoProductBo bo, PageQuery pageQuery) {
+ return iPayBaohuoProductService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出包活工单产品关联列表
+ */
+ @SaCheckPermission("pay:baohuoProduct:export")
+ @Log(title = "包活工单产品关联", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayBaohuoProductBo bo, HttpServletResponse response) {
+ List list = iPayBaohuoProductService.queryList(bo);
+ ExcelUtil.exportExcel(list, "包活工单产品关联", PayBaohuoProductVo.class, response);
+ }
+
+ /**
+ * 获取包活工单产品关联详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:baohuoProduct:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayBaohuoProductService.queryById(id));
+ }
+
+ /**
+ * 新增包活工单产品关联
+ */
+ @SaCheckPermission("pay:baohuoProduct:add")
+ @Log(title = "包活工单产品关联", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayBaohuoProductBo bo) {
+ return toAjax(iPayBaohuoProductService.insertByBo(bo));
+ }
+
+ /**
+ * 修改包活工单产品关联
+ */
+ @SaCheckPermission("pay:baohuoProduct:edit")
+ @Log(title = "包活工单产品关联", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayBaohuoProductBo bo) {
+ return toAjax(iPayBaohuoProductService.updateByBo(bo));
+ }
+
+ /**
+ * 删除包活工单产品关联
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:baohuoProduct:remove")
+ @Log(title = "包活工单产品关联", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayBaohuoProductService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoWorktimeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoWorktimeController.java
new file mode 100644
index 0000000..c6f69ae
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayBaohuoWorktimeController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoWorktimeBo;
+import com.ruoyi.pay.service.IPayBaohuoWorktimeService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 包活工单工时关联
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/baohuoWorktime")
+public class PayBaohuoWorktimeController extends BaseController {
+
+ private final IPayBaohuoWorktimeService iPayBaohuoWorktimeService;
+
+ /**
+ * 查询包活工单工时关联列表
+ */
+ @SaCheckPermission("pay:baohuoWorktime:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayBaohuoWorktimeBo bo, PageQuery pageQuery) {
+ return iPayBaohuoWorktimeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出包活工单工时关联列表
+ */
+ @SaCheckPermission("pay:baohuoWorktime:export")
+ @Log(title = "包活工单工时关联", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayBaohuoWorktimeBo bo, HttpServletResponse response) {
+ List list = iPayBaohuoWorktimeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "包活工单工时关联", PayBaohuoWorktimeVo.class, response);
+ }
+
+ /**
+ * 获取包活工单工时关联详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:baohuoWorktime:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayBaohuoWorktimeService.queryById(id));
+ }
+
+ /**
+ * 新增包活工单工时关联
+ */
+ @SaCheckPermission("pay:baohuoWorktime:add")
+ @Log(title = "包活工单工时关联", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayBaohuoWorktimeBo bo) {
+ return toAjax(iPayBaohuoWorktimeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改包活工单工时关联
+ */
+ @SaCheckPermission("pay:baohuoWorktime:edit")
+ @Log(title = "包活工单工时关联", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayBaohuoWorktimeBo bo) {
+ return toAjax(iPayBaohuoWorktimeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除包活工单工时关联
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:baohuoWorktime:remove")
+ @Log(title = "包活工单工时关联", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayBaohuoWorktimeService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieController.java
new file mode 100644
index 0000000..1cd3e07
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayButieVo;
+import com.ruoyi.pay.domain.bo.PayButieBo;
+import com.ruoyi.pay.service.IPayButieService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 补贴扣减
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/butie")
+public class PayButieController extends BaseController {
+
+ private final IPayButieService iPayButieService;
+
+ /**
+ * 查询补贴扣减列表
+ */
+ @SaCheckPermission("pay:butie:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayButieBo bo, PageQuery pageQuery) {
+ return iPayButieService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出补贴扣减列表
+ */
+ @SaCheckPermission("pay:butie:export")
+ @Log(title = "补贴扣减", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayButieBo bo, HttpServletResponse response) {
+ List list = iPayButieService.queryList(bo);
+ ExcelUtil.exportExcel(list, "补贴扣减", PayButieVo.class, response);
+ }
+
+ /**
+ * 获取补贴扣减详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:butie:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayButieService.queryById(id));
+ }
+
+ /**
+ * 新增补贴扣减
+ */
+ @SaCheckPermission("pay:butie:add")
+ @Log(title = "补贴扣减", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayButieBo bo) {
+ return toAjax(iPayButieService.insertByBo(bo));
+ }
+
+ /**
+ * 修改补贴扣减
+ */
+ @SaCheckPermission("pay:butie:edit")
+ @Log(title = "补贴扣减", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayButieBo bo) {
+ return toAjax(iPayButieService.updateByBo(bo));
+ }
+
+ /**
+ * 删除补贴扣减
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:butie:remove")
+ @Log(title = "补贴扣减", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayButieService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java
new file mode 100644
index 0000000..82d4edc
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayButieEmplyeeVo;
+import com.ruoyi.pay.domain.bo.PayButieEmplyeeBo;
+import com.ruoyi.pay.service.IPayButieEmplyeeService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 补贴和员工联系
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/butieEmplyee")
+public class PayButieEmplyeeController extends BaseController {
+
+ private final IPayButieEmplyeeService iPayButieEmplyeeService;
+
+ /**
+ * 查询补贴和员工联系列表
+ */
+ @SaCheckPermission("pay:butieEmplyee:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayButieEmplyeeBo bo, PageQuery pageQuery) {
+ return iPayButieEmplyeeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出补贴和员工联系列表
+ */
+ @SaCheckPermission("pay:butieEmplyee:export")
+ @Log(title = "补贴和员工联系", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayButieEmplyeeBo bo, HttpServletResponse response) {
+ List list = iPayButieEmplyeeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "补贴和员工联系", PayButieEmplyeeVo.class, response);
+ }
+
+ /**
+ * 获取补贴和员工联系详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:butieEmplyee:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayButieEmplyeeService.queryById(id));
+ }
+
+ /**
+ * 新增补贴和员工联系
+ */
+ @SaCheckPermission("pay:butieEmplyee:add")
+ @Log(title = "补贴和员工联系", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayButieEmplyeeBo bo) {
+ return toAjax(iPayButieEmplyeeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改补贴和员工联系
+ */
+ @SaCheckPermission("pay:butieEmplyee:edit")
+ @Log(title = "补贴和员工联系", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayButieEmplyeeBo bo) {
+ return toAjax(iPayButieEmplyeeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除补贴和员工联系
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:butieEmplyee:remove")
+ @Log(title = "补贴和员工联系", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayButieEmplyeeService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java
new file mode 100644
index 0000000..493de65
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
+import com.ruoyi.pay.domain.bo.PayDayWorkHoursBo;
+import com.ruoyi.pay.service.IPayDayWorkHoursService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 日工工时
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/dayWorkHours")
+public class PayDayWorkHoursController extends BaseController {
+
+ private final IPayDayWorkHoursService iPayDayWorkHoursService;
+
+ /**
+ * 查询日工工时列表
+ */
+ @SaCheckPermission("pay:dayWorkHours:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayDayWorkHoursBo bo, PageQuery pageQuery) {
+ return iPayDayWorkHoursService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出日工工时列表
+ */
+ @SaCheckPermission("pay:dayWorkHours:export")
+ @Log(title = "日工工时", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayDayWorkHoursBo bo, HttpServletResponse response) {
+ List list = iPayDayWorkHoursService.queryList(bo);
+ ExcelUtil.exportExcel(list, "日工工时", PayDayWorkHoursVo.class, response);
+ }
+
+ /**
+ * 获取日工工时详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:dayWorkHours:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayDayWorkHoursService.queryById(id));
+ }
+
+ /**
+ * 新增日工工时
+ */
+ @SaCheckPermission("pay:dayWorkHours:add")
+ @Log(title = "日工工时", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayDayWorkHoursBo bo) {
+ return toAjax(iPayDayWorkHoursService.insertByBo(bo));
+ }
+
+ /**
+ * 修改日工工时
+ */
+ @SaCheckPermission("pay:dayWorkHours:edit")
+ @Log(title = "日工工时", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayDayWorkHoursBo bo) {
+ return toAjax(iPayDayWorkHoursService.updateByBo(bo));
+ }
+
+ /**
+ * 删除日工工时
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:dayWorkHours:remove")
+ @Log(title = "日工工时", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayDayWorkHoursService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDwHoursContrastController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDwHoursContrastController.java
new file mode 100644
index 0000000..1d5ad61
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDwHoursContrastController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayDwHoursContrastVo;
+import com.ruoyi.pay.domain.bo.PayDwHoursContrastBo;
+import com.ruoyi.pay.service.IPayDwHoursContrastService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 日工工时时间关联
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/dwHoursContrast")
+public class PayDwHoursContrastController extends BaseController {
+
+ private final IPayDwHoursContrastService iPayDwHoursContrastService;
+
+ /**
+ * 查询日工工时时间关联列表
+ */
+ @SaCheckPermission("pay:dwHoursContrast:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayDwHoursContrastBo bo, PageQuery pageQuery) {
+ return iPayDwHoursContrastService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出日工工时时间关联列表
+ */
+ @SaCheckPermission("pay:dwHoursContrast:export")
+ @Log(title = "日工工时时间关联", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayDwHoursContrastBo bo, HttpServletResponse response) {
+ List list = iPayDwHoursContrastService.queryList(bo);
+ ExcelUtil.exportExcel(list, "日工工时时间关联", PayDwHoursContrastVo.class, response);
+ }
+
+ /**
+ * 获取日工工时时间关联详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:dwHoursContrast:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayDwHoursContrastService.queryById(id));
+ }
+
+ /**
+ * 新增日工工时时间关联
+ */
+ @SaCheckPermission("pay:dwHoursContrast:add")
+ @Log(title = "日工工时时间关联", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayDwHoursContrastBo bo) {
+ return toAjax(iPayDwHoursContrastService.insertByBo(bo));
+ }
+
+ /**
+ * 修改日工工时时间关联
+ */
+ @SaCheckPermission("pay:dwHoursContrast:edit")
+ @Log(title = "日工工时时间关联", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayDwHoursContrastBo bo) {
+ return toAjax(iPayDwHoursContrastService.updateByBo(bo));
+ }
+
+ /**
+ * 删除日工工时时间关联
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:dwHoursContrast:remove")
+ @Log(title = "日工工时时间关联", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayDwHoursContrastService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayEmployeeInfoController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayEmployeeInfoController.java
new file mode 100644
index 0000000..8633c6d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayEmployeeInfoController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo;
+import com.ruoyi.pay.domain.bo.PayEmployeeInfoBo;
+import com.ruoyi.pay.service.IPayEmployeeInfoService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 员工信息
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/employeeInfo")
+public class PayEmployeeInfoController extends BaseController {
+
+ private final IPayEmployeeInfoService iPayEmployeeInfoService;
+
+ /**
+ * 查询员工信息列表
+ */
+ @SaCheckPermission("pay:employeeInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayEmployeeInfoBo bo, PageQuery pageQuery) {
+ return iPayEmployeeInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出员工信息列表
+ */
+ @SaCheckPermission("pay:employeeInfo:export")
+ @Log(title = "员工信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayEmployeeInfoBo bo, HttpServletResponse response) {
+ List list = iPayEmployeeInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "员工信息", PayEmployeeInfoVo.class, response);
+ }
+
+ /**
+ * 获取员工信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:employeeInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayEmployeeInfoService.queryById(id));
+ }
+
+ /**
+ * 新增员工信息
+ */
+ @SaCheckPermission("pay:employeeInfo:add")
+ @Log(title = "员工信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayEmployeeInfoBo bo) {
+ return toAjax(iPayEmployeeInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改员工信息
+ */
+ @SaCheckPermission("pay:employeeInfo:edit")
+ @Log(title = "员工信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayEmployeeInfoBo bo) {
+ return toAjax(iPayEmployeeInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除员工信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:employeeInfo:remove")
+ @Log(title = "员工信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayEmployeeInfoService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayMaterialController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayMaterialController.java
new file mode 100644
index 0000000..ec4e060
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayMaterialController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayMaterialVo;
+import com.ruoyi.pay.domain.bo.PayMaterialBo;
+import com.ruoyi.pay.service.IPayMaterialService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 毛料信息
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/material")
+public class PayMaterialController extends BaseController {
+
+ private final IPayMaterialService iPayMaterialService;
+
+ /**
+ * 查询毛料信息列表
+ */
+ @SaCheckPermission("pay:material:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayMaterialBo bo, PageQuery pageQuery) {
+ return iPayMaterialService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出毛料信息列表
+ */
+ @SaCheckPermission("pay:material:export")
+ @Log(title = "毛料信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayMaterialBo bo, HttpServletResponse response) {
+ List list = iPayMaterialService.queryList(bo);
+ ExcelUtil.exportExcel(list, "毛料信息", PayMaterialVo.class, response);
+ }
+
+ /**
+ * 获取毛料信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:material:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayMaterialService.queryById(id));
+ }
+
+ /**
+ * 新增毛料信息
+ */
+ @SaCheckPermission("pay:material:add")
+ @Log(title = "毛料信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayMaterialBo bo) {
+ return toAjax(iPayMaterialService.insertByBo(bo));
+ }
+
+ /**
+ * 修改毛料信息
+ */
+ @SaCheckPermission("pay:material:edit")
+ @Log(title = "毛料信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayMaterialBo bo) {
+ return toAjax(iPayMaterialService.updateByBo(bo));
+ }
+
+ /**
+ * 删除毛料信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:material:remove")
+ @Log(title = "毛料信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayMaterialService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductMaterialController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductMaterialController.java
new file mode 100644
index 0000000..9c13032
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductMaterialController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayProductMaterialVo;
+import com.ruoyi.pay.domain.bo.PayProductMaterialBo;
+import com.ruoyi.pay.service.IPayProductMaterialService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 产品毛料关联
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/productMaterial")
+public class PayProductMaterialController extends BaseController {
+
+ private final IPayProductMaterialService iPayProductMaterialService;
+
+ /**
+ * 查询产品毛料关联列表
+ */
+ @SaCheckPermission("pay:productMaterial:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayProductMaterialBo bo, PageQuery pageQuery) {
+ return iPayProductMaterialService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出产品毛料关联列表
+ */
+ @SaCheckPermission("pay:productMaterial:export")
+ @Log(title = "产品毛料关联", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayProductMaterialBo bo, HttpServletResponse response) {
+ List list = iPayProductMaterialService.queryList(bo);
+ ExcelUtil.exportExcel(list, "产品毛料关联", PayProductMaterialVo.class, response);
+ }
+
+ /**
+ * 获取产品毛料关联详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:productMaterial:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayProductMaterialService.queryById(id));
+ }
+
+ /**
+ * 新增产品毛料关联
+ */
+ @SaCheckPermission("pay:productMaterial:add")
+ @Log(title = "产品毛料关联", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayProductMaterialBo bo) {
+ return toAjax(iPayProductMaterialService.insertByBo(bo));
+ }
+
+ /**
+ * 修改产品毛料关联
+ */
+ @SaCheckPermission("pay:productMaterial:edit")
+ @Log(title = "产品毛料关联", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayProductMaterialBo bo) {
+ return toAjax(iPayProductMaterialService.updateByBo(bo));
+ }
+
+ /**
+ * 删除产品毛料关联
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:productMaterial:remove")
+ @Log(title = "产品毛料关联", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayProductMaterialService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductsController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductsController.java
new file mode 100644
index 0000000..567f6bb
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayProductsController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayProductsVo;
+import com.ruoyi.pay.domain.bo.PayProductsBo;
+import com.ruoyi.pay.service.IPayProductsService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 产品
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/products")
+public class PayProductsController extends BaseController {
+
+ private final IPayProductsService iPayProductsService;
+
+ /**
+ * 查询产品列表
+ */
+ @SaCheckPermission("pay:products:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayProductsBo bo, PageQuery pageQuery) {
+ return iPayProductsService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出产品列表
+ */
+ @SaCheckPermission("pay:products:export")
+ @Log(title = "产品", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayProductsBo bo, HttpServletResponse response) {
+ List list = iPayProductsService.queryList(bo);
+ ExcelUtil.exportExcel(list, "产品", PayProductsVo.class, response);
+ }
+
+ /**
+ * 获取产品详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:products:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayProductsService.queryById(id));
+ }
+
+ /**
+ * 新增产品
+ */
+ @SaCheckPermission("pay:products:add")
+ @Log(title = "产品", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayProductsBo bo) {
+ return toAjax(iPayProductsService.insertByBo(bo));
+ }
+
+ /**
+ * 修改产品
+ */
+ @SaCheckPermission("pay:products:edit")
+ @Log(title = "产品", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayProductsBo bo) {
+ return toAjax(iPayProductsService.updateByBo(bo));
+ }
+
+ /**
+ * 删除产品
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:products:remove")
+ @Log(title = "产品", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayProductsService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayRequireAttendanceReportController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayRequireAttendanceReportController.java
new file mode 100644
index 0000000..d05e3ec
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayRequireAttendanceReportController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayRequireAttendanceReportVo;
+import com.ruoyi.pay.domain.bo.PayRequireAttendanceReportBo;
+import com.ruoyi.pay.service.IPayRequireAttendanceReportService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 应出勤报
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/requireAttendanceReport")
+public class PayRequireAttendanceReportController extends BaseController {
+
+ private final IPayRequireAttendanceReportService iPayRequireAttendanceReportService;
+
+ /**
+ * 查询应出勤报列表
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayRequireAttendanceReportBo bo, PageQuery pageQuery) {
+ return iPayRequireAttendanceReportService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出应出勤报列表
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:export")
+ @Log(title = "应出勤报", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayRequireAttendanceReportBo bo, HttpServletResponse response) {
+ List list = iPayRequireAttendanceReportService.queryList(bo);
+ ExcelUtil.exportExcel(list, "应出勤报", PayRequireAttendanceReportVo.class, response);
+ }
+
+ /**
+ * 获取应出勤报详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayRequireAttendanceReportService.queryById(id));
+ }
+
+ /**
+ * 新增应出勤报
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:add")
+ @Log(title = "应出勤报", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayRequireAttendanceReportBo bo) {
+ return toAjax(iPayRequireAttendanceReportService.insertByBo(bo));
+ }
+
+ /**
+ * 修改应出勤报
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:edit")
+ @Log(title = "应出勤报", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayRequireAttendanceReportBo bo) {
+ return toAjax(iPayRequireAttendanceReportService.updateByBo(bo));
+ }
+
+ /**
+ * 删除应出勤报
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:requireAttendanceReport:remove")
+ @Log(title = "应出勤报", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayRequireAttendanceReportService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java
new file mode 100644
index 0000000..3586039
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PaySalaryReportVo;
+import com.ruoyi.pay.domain.bo.PaySalaryReportBo;
+import com.ruoyi.pay.service.IPaySalaryReportService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工资明细总
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/salaryReport")
+public class PaySalaryReportController extends BaseController {
+
+ private final IPaySalaryReportService iPaySalaryReportService;
+
+ /**
+ * 查询工资明细总列表
+ */
+ @SaCheckPermission("pay:salaryReport:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PaySalaryReportBo bo, PageQuery pageQuery) {
+ return iPaySalaryReportService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工资明细总列表
+ */
+ @SaCheckPermission("pay:salaryReport:export")
+ @Log(title = "工资明细总", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PaySalaryReportBo bo, HttpServletResponse response) {
+ List list = iPaySalaryReportService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工资明细总", PaySalaryReportVo.class, response);
+ }
+
+ /**
+ * 获取工资明细总详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:salaryReport:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPaySalaryReportService.queryById(id));
+ }
+
+ /**
+ * 新增工资明细总
+ */
+ @SaCheckPermission("pay:salaryReport:add")
+ @Log(title = "工资明细总", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PaySalaryReportBo bo) {
+ return toAjax(iPaySalaryReportService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工资明细总
+ */
+ @SaCheckPermission("pay:salaryReport:edit")
+ @Log(title = "工资明细总", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PaySalaryReportBo bo) {
+ return toAjax(iPaySalaryReportService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工资明细总
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:salaryReport:remove")
+ @Log(title = "工资明细总", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPaySalaryReportService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubInfoController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubInfoController.java
new file mode 100644
index 0000000..ea710ca
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubInfoController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PaySubInfoVo;
+import com.ruoyi.pay.domain.bo.PaySubInfoBo;
+import com.ruoyi.pay.service.IPaySubInfoService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 租户订阅信息
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/subInfo")
+public class PaySubInfoController extends BaseController {
+
+ private final IPaySubInfoService iPaySubInfoService;
+
+ /**
+ * 查询租户订阅信息列表
+ */
+ @SaCheckPermission("pay:subInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PaySubInfoBo bo, PageQuery pageQuery) {
+ return iPaySubInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出租户订阅信息列表
+ */
+ @SaCheckPermission("pay:subInfo:export")
+ @Log(title = "租户订阅信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PaySubInfoBo bo, HttpServletResponse response) {
+ List list = iPaySubInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "租户订阅信息", PaySubInfoVo.class, response);
+ }
+
+ /**
+ * 获取租户订阅信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:subInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPaySubInfoService.queryById(id));
+ }
+
+ /**
+ * 新增租户订阅信息
+ */
+ @SaCheckPermission("pay:subInfo:add")
+ @Log(title = "租户订阅信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PaySubInfoBo bo) {
+ return toAjax(iPaySubInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改租户订阅信息
+ */
+ @SaCheckPermission("pay:subInfo:edit")
+ @Log(title = "租户订阅信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PaySubInfoBo bo) {
+ return toAjax(iPaySubInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除租户订阅信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:subInfo:remove")
+ @Log(title = "租户订阅信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPaySubInfoService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubPlanController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubPlanController.java
new file mode 100644
index 0000000..37619f4
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySubPlanController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PaySubPlanVo;
+import com.ruoyi.pay.domain.bo.PaySubPlanBo;
+import com.ruoyi.pay.service.IPaySubPlanService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 订阅套餐
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/subPlan")
+public class PaySubPlanController extends BaseController {
+
+ private final IPaySubPlanService iPaySubPlanService;
+
+ /**
+ * 查询订阅套餐列表
+ */
+ @SaCheckPermission("pay:subPlan:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PaySubPlanBo bo, PageQuery pageQuery) {
+ return iPaySubPlanService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出订阅套餐列表
+ */
+ @SaCheckPermission("pay:subPlan:export")
+ @Log(title = "订阅套餐", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PaySubPlanBo bo, HttpServletResponse response) {
+ List list = iPaySubPlanService.queryList(bo);
+ ExcelUtil.exportExcel(list, "订阅套餐", PaySubPlanVo.class, response);
+ }
+
+ /**
+ * 获取订阅套餐详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:subPlan:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPaySubPlanService.queryById(id));
+ }
+
+ /**
+ * 新增订阅套餐
+ */
+ @SaCheckPermission("pay:subPlan:add")
+ @Log(title = "订阅套餐", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PaySubPlanBo bo) {
+ return toAjax(iPaySubPlanService.insertByBo(bo));
+ }
+
+ /**
+ * 修改订阅套餐
+ */
+ @SaCheckPermission("pay:subPlan:edit")
+ @Log(title = "订阅套餐", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PaySubPlanBo bo) {
+ return toAjax(iPaySubPlanService.updateByBo(bo));
+ }
+
+ /**
+ * 删除订阅套餐
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:subPlan:remove")
+ @Log(title = "订阅套餐", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPaySubPlanService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayTenantController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayTenantController.java
new file mode 100644
index 0000000..2274182
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayTenantController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayTenantVo;
+import com.ruoyi.pay.domain.bo.PayTenantBo;
+import com.ruoyi.pay.service.IPayTenantService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 租户
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/tenant")
+public class PayTenantController extends BaseController {
+
+ private final IPayTenantService iPayTenantService;
+
+ /**
+ * 查询租户列表
+ */
+ @SaCheckPermission("pay:tenant:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayTenantBo bo, PageQuery pageQuery) {
+ return iPayTenantService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出租户列表
+ */
+ @SaCheckPermission("pay:tenant:export")
+ @Log(title = "租户", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayTenantBo bo, HttpServletResponse response) {
+ List list = iPayTenantService.queryList(bo);
+ ExcelUtil.exportExcel(list, "租户", PayTenantVo.class, response);
+ }
+
+ /**
+ * 获取租户详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:tenant:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayTenantService.queryById(id));
+ }
+
+ /**
+ * 新增租户
+ */
+ @SaCheckPermission("pay:tenant:add")
+ @Log(title = "租户", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayTenantBo bo) {
+ return toAjax(iPayTenantService.insertByBo(bo));
+ }
+
+ /**
+ * 修改租户
+ */
+ @SaCheckPermission("pay:tenant:edit")
+ @Log(title = "租户", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayTenantBo bo) {
+ return toAjax(iPayTenantService.updateByBo(bo));
+ }
+
+ /**
+ * 删除租户
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:tenant:remove")
+ @Log(title = "租户", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayTenantService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java
new file mode 100644
index 0000000..afee8e8
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo;
+import com.ruoyi.pay.service.IPayWorkOrderBaohuoService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 包活派工单
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/workOrderBaohuo")
+public class PayWorkOrderBaohuoController extends BaseController {
+
+ private final IPayWorkOrderBaohuoService iPayWorkOrderBaohuoService;
+
+ /**
+ * 查询包活派工单列表
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayWorkOrderBaohuoBo bo, PageQuery pageQuery) {
+ return iPayWorkOrderBaohuoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出包活派工单列表
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:export")
+ @Log(title = "包活派工单", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayWorkOrderBaohuoBo bo, HttpServletResponse response) {
+ List list = iPayWorkOrderBaohuoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "包活派工单", PayWorkOrderBaohuoVo.class, response);
+ }
+
+ /**
+ * 获取包活派工单详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayWorkOrderBaohuoService.queryById(id));
+ }
+
+ /**
+ * 新增包活派工单
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:add")
+ @Log(title = "包活派工单", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayWorkOrderBaohuoBo bo) {
+ return toAjax(iPayWorkOrderBaohuoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改包活派工单
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:edit")
+ @Log(title = "包活派工单", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayWorkOrderBaohuoBo bo) {
+ return toAjax(iPayWorkOrderBaohuoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除包活派工单
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:workOrderBaohuo:remove")
+ @Log(title = "包活派工单", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayWorkOrderBaohuoService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderEmployeeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderEmployeeController.java
new file mode 100644
index 0000000..81bb7f9
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderEmployeeController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayWorkOrderEmployeeVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderEmployeeBo;
+import com.ruoyi.pay.service.IPayWorkOrderEmployeeService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工单和员工联系
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/workOrderEmployee")
+public class PayWorkOrderEmployeeController extends BaseController {
+
+ private final IPayWorkOrderEmployeeService iPayWorkOrderEmployeeService;
+
+ /**
+ * 查询工单和员工联系列表
+ */
+ @SaCheckPermission("pay:workOrderEmployee:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayWorkOrderEmployeeBo bo, PageQuery pageQuery) {
+ return iPayWorkOrderEmployeeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工单和员工联系列表
+ */
+ @SaCheckPermission("pay:workOrderEmployee:export")
+ @Log(title = "工单和员工联系", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayWorkOrderEmployeeBo bo, HttpServletResponse response) {
+ List list = iPayWorkOrderEmployeeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工单和员工联系", PayWorkOrderEmployeeVo.class, response);
+ }
+
+ /**
+ * 获取工单和员工联系详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:workOrderEmployee:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayWorkOrderEmployeeService.queryById(id));
+ }
+
+ /**
+ * 新增工单和员工联系
+ */
+ @SaCheckPermission("pay:workOrderEmployee:add")
+ @Log(title = "工单和员工联系", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayWorkOrderEmployeeBo bo) {
+ return toAjax(iPayWorkOrderEmployeeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工单和员工联系
+ */
+ @SaCheckPermission("pay:workOrderEmployee:edit")
+ @Log(title = "工单和员工联系", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayWorkOrderEmployeeBo bo) {
+ return toAjax(iPayWorkOrderEmployeeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工单和员工联系
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:workOrderEmployee:remove")
+ @Log(title = "工单和员工联系", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayWorkOrderEmployeeService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderInfoController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderInfoController.java
new file mode 100644
index 0000000..014b0f5
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderInfoController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayWorkOrderInfoVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderInfoBo;
+import com.ruoyi.pay.service.IPayWorkOrderInfoService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 工单信息
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/workOrderInfo")
+public class PayWorkOrderInfoController extends BaseController {
+
+ private final IPayWorkOrderInfoService iPayWorkOrderInfoService;
+
+ /**
+ * 查询工单信息列表
+ */
+ @SaCheckPermission("pay:workOrderInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayWorkOrderInfoBo bo, PageQuery pageQuery) {
+ return iPayWorkOrderInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出工单信息列表
+ */
+ @SaCheckPermission("pay:workOrderInfo:export")
+ @Log(title = "工单信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayWorkOrderInfoBo bo, HttpServletResponse response) {
+ List list = iPayWorkOrderInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "工单信息", PayWorkOrderInfoVo.class, response);
+ }
+
+ /**
+ * 获取工单信息详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:workOrderInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayWorkOrderInfoService.queryById(id));
+ }
+
+ /**
+ * 新增工单信息
+ */
+ @SaCheckPermission("pay:workOrderInfo:add")
+ @Log(title = "工单信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayWorkOrderInfoBo bo) {
+ return toAjax(iPayWorkOrderInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改工单信息
+ */
+ @SaCheckPermission("pay:workOrderInfo:edit")
+ @Log(title = "工单信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayWorkOrderInfoBo bo) {
+ return toAjax(iPayWorkOrderInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除工单信息
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:workOrderInfo:remove")
+ @Log(title = "工单信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayWorkOrderInfoService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderTuzhiController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderTuzhiController.java
new file mode 100644
index 0000000..5ff8961
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderTuzhiController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayWorkOrderTuzhiVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderTuzhiBo;
+import com.ruoyi.pay.service.IPayWorkOrderTuzhiService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 图纸流程卡工单
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/workOrderTuzhi")
+public class PayWorkOrderTuzhiController extends BaseController {
+
+ private final IPayWorkOrderTuzhiService iPayWorkOrderTuzhiService;
+
+ /**
+ * 查询图纸流程卡工单列表
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayWorkOrderTuzhiBo bo, PageQuery pageQuery) {
+ return iPayWorkOrderTuzhiService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出图纸流程卡工单列表
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:export")
+ @Log(title = "图纸流程卡工单", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayWorkOrderTuzhiBo bo, HttpServletResponse response) {
+ List list = iPayWorkOrderTuzhiService.queryList(bo);
+ ExcelUtil.exportExcel(list, "图纸流程卡工单", PayWorkOrderTuzhiVo.class, response);
+ }
+
+ /**
+ * 获取图纸流程卡工单详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayWorkOrderTuzhiService.queryById(id));
+ }
+
+ /**
+ * 新增图纸流程卡工单
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:add")
+ @Log(title = "图纸流程卡工单", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayWorkOrderTuzhiBo bo) {
+ return toAjax(iPayWorkOrderTuzhiService.insertByBo(bo));
+ }
+
+ /**
+ * 修改图纸流程卡工单
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:edit")
+ @Log(title = "图纸流程卡工单", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayWorkOrderTuzhiBo bo) {
+ return toAjax(iPayWorkOrderTuzhiService.updateByBo(bo));
+ }
+
+ /**
+ * 删除图纸流程卡工单
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:workOrderTuzhi:remove")
+ @Log(title = "图纸流程卡工单", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayWorkOrderTuzhiService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkTimeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkTimeController.java
new file mode 100644
index 0000000..5fe6a82
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkTimeController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.pay.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.pay.domain.vo.PayWorkTimeVo;
+import com.ruoyi.pay.domain.bo.PayWorkTimeBo;
+import com.ruoyi.pay.service.IPayWorkTimeService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 员工工时时间段
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/pay/workTime")
+public class PayWorkTimeController extends BaseController {
+
+ private final IPayWorkTimeService iPayWorkTimeService;
+
+ /**
+ * 查询员工工时时间段列表
+ */
+ @SaCheckPermission("pay:workTime:list")
+ @GetMapping("/list")
+ public TableDataInfo list(PayWorkTimeBo bo, PageQuery pageQuery) {
+ return iPayWorkTimeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出员工工时时间段列表
+ */
+ @SaCheckPermission("pay:workTime:export")
+ @Log(title = "员工工时时间段", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(PayWorkTimeBo bo, HttpServletResponse response) {
+ List list = iPayWorkTimeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "员工工时时间段", PayWorkTimeVo.class, response);
+ }
+
+ /**
+ * 获取员工工时时间段详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("pay:workTime:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(iPayWorkTimeService.queryById(id));
+ }
+
+ /**
+ * 新增员工工时时间段
+ */
+ @SaCheckPermission("pay:workTime:add")
+ @Log(title = "员工工时时间段", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody PayWorkTimeBo bo) {
+ return toAjax(iPayWorkTimeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改员工工时时间段
+ */
+ @SaCheckPermission("pay:workTime:edit")
+ @Log(title = "员工工时时间段", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody PayWorkTimeBo bo) {
+ return toAjax(iPayWorkTimeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除员工工时时间段
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("pay:workTime:remove")
+ @Log(title = "员工工时时间段", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(iPayWorkTimeService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayAttendance.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayAttendance.java
new file mode 100644
index 0000000..df5538e
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayAttendance.java
@@ -0,0 +1,81 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 考勤对象 pay_attendance
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_attendance")
+public class PayAttendance extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 部门名称
+ */
+ private String deptName;
+ /**
+ * 部门id
+ */
+ private Long deptId;
+ /**
+ * 上午开始时间
+ */
+ private Date amStartTime;
+ /**
+ * 上午结束时间
+ */
+ private Date amEndTime;
+ /**
+ * 下午开始时间
+ */
+ private Date pmStartTime;
+ /**
+ * 下午结束时间
+ */
+ private Date pmEndTime;
+ /**
+ * 考勤日期
+ */
+ private Date kaoqinDate;
+ /**
+ * 考勤年份月份 (yyyy-MM)
+ */
+ private String kaoqinYearMonth;
+ /**
+ * 考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)
+ */
+ private String kaoqinjiNum;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoEmployee.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoEmployee.java
new file mode 100644
index 0000000..42efdde
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoEmployee.java
@@ -0,0 +1,70 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单员工关联对象 pay_baohuo_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_baohuo_employee")
+public class PayBaohuoEmployee extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 包活工单ID
+ */
+ private Long woId;
+ /**
+ * 员工ID
+ */
+ private Long empId;
+ /**
+ * 部门ID
+ */
+ private Long deptId;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 工单员工工资
+ */
+ private BigDecimal amount;
+ /**
+ * 月份(yyyy-MM)
+ */
+ private String month;
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ private Integer helper;
+ /**
+ * 入库日期
+ */
+ private Date intime;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoProduct.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoProduct.java
new file mode 100644
index 0000000..af7b98c
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoProduct.java
@@ -0,0 +1,72 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单产品关联对象 pay_baohuo_product
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_baohuo_product")
+public class PayBaohuoProduct extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 产品ID
+ */
+ private Long productId;
+ /**
+ * 包活工单ID
+ */
+ private Long woId;
+ /**
+ * 产品名称
+ */
+ private String productName;
+ /**
+ * 加工数量
+ */
+ private BigDecimal productNum;
+ /**
+ * 最低价格
+ */
+ private BigDecimal minPrice;
+ /**
+ * 最高价格
+ */
+ private BigDecimal maxPrice;
+ /**
+ * 总金额
+ */
+ private BigDecimal amount;
+ /**
+ * 单价
+ */
+ private BigDecimal price;
+ /**
+ * 单位-字典
+ */
+ private String unit;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoWorktime.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoWorktime.java
new file mode 100644
index 0000000..1ae771f
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayBaohuoWorktime.java
@@ -0,0 +1,70 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单工时关联对象 pay_baohuo_worktime
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_baohuo_worktime")
+public class PayBaohuoWorktime extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 包活工单ID
+ */
+ private Long woId;
+ /**
+ * 员工ID
+ */
+ private Long empId;
+ /**
+ * 包活工单员工关联表ID
+ */
+ private Long bheId;
+ /**
+ * 开始时间
+ */
+ private Date stime;
+ /**
+ * 结束时间
+ */
+ private Date etime;
+ /**
+ * 有效时长
+ */
+ private BigDecimal validHours;
+ /**
+ * 工作日期
+ */
+ private Date date;
+ /**
+ * 入库日期
+ */
+ private Date intime;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButie.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButie.java
new file mode 100644
index 0000000..0258623
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButie.java
@@ -0,0 +1,55 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 补贴扣减对象 pay_butie
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_butie")
+public class PayButie extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 补贴或者扣减项名称
+ */
+ private String name;
+ /**
+ * 固定(0-不固定 1-固定)
+ */
+ private String fixed;
+ /**
+ * 类型(0-减项 1-增项)
+ */
+ private String type;
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButieEmplyee.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButieEmplyee.java
new file mode 100644
index 0000000..8770df1
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayButieEmplyee.java
@@ -0,0 +1,56 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 补贴和员工联系对象 pay_butie_emplyee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_butie_emplyee")
+public class PayButieEmplyee extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 补贴id
+ */
+ private Long butieId;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 补贴扣减金额
+ */
+ private BigDecimal money;
+ /**
+ * 年月日期
+ */
+ private String date;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDayWorkHours.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDayWorkHours.java
new file mode 100644
index 0000000..84271b0
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDayWorkHours.java
@@ -0,0 +1,65 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 日工工时对象 pay_day_work_hours
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_day_work_hours")
+public class PayDayWorkHours extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 员工部门id
+ */
+ private Long deptId;
+ /**
+ * 员工部门名称
+ */
+ private String deptName;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 日工日期
+ */
+ private Date date;
+ /**
+ * 日工年月
+ */
+ private String dwYearMonth;
+ /**
+ * 备注
+ */
+ private String note;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDwHoursContrast.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDwHoursContrast.java
new file mode 100644
index 0000000..15e7298
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayDwHoursContrast.java
@@ -0,0 +1,70 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 日工工时时间关联对象 pay_dw_hours_contrast
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_dw_hours_contrast")
+public class PayDwHoursContrast extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 日工工时id
+ */
+ private Long dwHoursId;
+ /**
+ * 工时部门id
+ */
+ private Long deptId;
+ /**
+ * 工时部门
+ */
+ private String deptName;
+ /**
+ * 上午开始时间
+ */
+ private Date startTime;
+ /**
+ * 上午结束时间
+ */
+ private Date endTime;
+ /**
+ * 时长
+ */
+ private BigDecimal hours;
+ /**
+ * 业务员
+ */
+ private String salesman;
+ /**
+ * 是否帮工 (0:否 1:是)
+ */
+ private Integer isHelper;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayEmployeeInfo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayEmployeeInfo.java
new file mode 100644
index 0000000..418d2aa
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayEmployeeInfo.java
@@ -0,0 +1,144 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 员工信息对象 pay_employee_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_employee_info")
+public class PayEmployeeInfo extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 登录用户id
+ */
+ private Long userId;
+ /**
+ * 员工所属部门
+ */
+ private Long deptId;
+ /**
+ * 员工姓名
+ */
+ private String name;
+ /**
+ * 性别(0:男 1:女)
+ */
+ private String sex;
+ /**
+ * 年龄
+ */
+ private Long age;
+ /**
+ * 手机号
+ */
+ private String phone;
+ /**
+ * 身份证号
+ */
+ private String idcard;
+ /**
+ * 银行卡号
+ */
+ private String bankCardNumber;
+ /**
+ * 开户行
+ */
+ private String openingBank;
+ /**
+ * 基本工资
+ */
+ private BigDecimal basicSalary;
+ /**
+ * 日薪
+ */
+ private BigDecimal daySalary;
+ /**
+ * 时薪
+ */
+ private BigDecimal hourSalary;
+ /**
+ * 休息类型(0 :周休 1:非周休 2:天休 3:小时 4:包月 5:周二天)
+ */
+ private String restType;
+ /**
+ * 每日应出勤小时数
+ */
+ private BigDecimal hoursPerDay;
+ /**
+ * 工资计算类型(
+0:日薪(日工+包活)
+1:月薪(日工+包活)
+2:喷涂按小时数(16/17、17/18)
+3.外贸按小时数(17/21)
+4.包月工资)
+
+ */
+ private String payCalcType;
+ /**
+ * 学历
+ */
+ private String education;
+ /**
+ * 家庭住址
+ */
+ private String address;
+ /**
+ * 紧急联系人
+ */
+ private String contact;
+ /**
+ * 紧急联系人电话
+ */
+ private String contactPhone;
+ /**
+ * 质检(1-是 0-否)
+ */
+ private Integer zhijian;
+ /**
+ * 业务员(1-是 0-否)
+ */
+ private Integer yewu;
+ /**
+ * 合同补助开始时间
+ */
+ private Date htstime;
+ /**
+ * 合同补助结束时间
+ */
+ private Date htetime;
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayMaterial.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayMaterial.java
new file mode 100644
index 0000000..07d7d9c
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayMaterial.java
@@ -0,0 +1,59 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 毛料信息对象 pay_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_material")
+public class PayMaterial extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 毛料名称
+ */
+ private String name;
+ /**
+ * 材料种类
+ */
+ private String materialType;
+ /**
+ * 规格
+ */
+ private String specification;
+ /**
+ * 尺寸
+ */
+ private String size;
+ /**
+ * 单位
+ */
+ private String unit;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProductMaterial.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProductMaterial.java
new file mode 100644
index 0000000..66f8b83
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProductMaterial.java
@@ -0,0 +1,43 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 产品毛料关联对象 pay_product_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_product_material")
+public class PayProductMaterial extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 毛料ID
+ */
+ private Long materialId;
+ /**
+ * 产品ID
+ */
+ private Long productId;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProducts.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProducts.java
new file mode 100644
index 0000000..26dd6fe
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayProducts.java
@@ -0,0 +1,102 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 产品对象 pay_products
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_products")
+public class PayProducts extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 毛料ID
+ */
+ private Long materialId;
+ /**
+ * 产品名称
+ */
+ private String productName;
+ /**
+ * 网机编号
+ */
+ private String netMachineNo;
+ /**
+ * 图纸编号
+ */
+ private String drawingNum;
+ /**
+ * 工序
+ */
+ private String process;
+ /**
+ * 规格型号
+ */
+ private String model;
+ /**
+ * 产品单位
+ */
+ private String danwei;
+ /**
+ * 毛料名称
+ */
+ private String originName;
+ /**
+ * 毛料规格
+ */
+ private String originModel;
+ /**
+ * 毛料尺寸
+ */
+ private String originSize;
+ /**
+ * 毛料单位
+ */
+ private String originDanwei;
+ /**
+ * 入库时间
+ */
+ private Date storageTime;
+ /**
+ * 最低价格
+ */
+ private BigDecimal minPrice;
+ /**
+ * 最高价格
+ */
+ private BigDecimal maxPrice;
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayRequireAttendanceReport.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayRequireAttendanceReport.java
new file mode 100644
index 0000000..fac074f
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayRequireAttendanceReport.java
@@ -0,0 +1,92 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 应出勤报对象 pay_require_attendance_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_require_attendance_report")
+public class PayRequireAttendanceReport extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 年份
+ */
+ private String year;
+ /**
+ * 月份
+ */
+ private String month;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 部门名称
+ */
+ private String deptName;
+ /**
+ * 休息类别
+ */
+ private String restType;
+ /**
+ * 应出勤天数
+ */
+ private Long requireDays;
+ /**
+ * 出勤天数
+ */
+ private Long avtiveDays;
+ /**
+ * 出勤小时数
+ */
+ private BigDecimal attendanceHours;
+ /**
+ * 加班小时数
+ */
+ private BigDecimal overtimeHours;
+ /**
+ * 放假天数
+ */
+ private Long holidays;
+ /**
+ * 放假小时数
+ */
+ private BigDecimal holidayHours;
+ /**
+ *
+ */
+ private BigDecimal leaveDays;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySalaryReport.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySalaryReport.java
new file mode 100644
index 0000000..b2fa72d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySalaryReport.java
@@ -0,0 +1,160 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工资明细总对象 pay_salary_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_salary_report")
+public class PaySalaryReport extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 年
+ */
+ private String year;
+ /**
+ * 月
+ */
+ private String month;
+ /**
+ * 部门id
+ */
+ private Long deptId;
+ /**
+ * 部门名称
+ */
+ private String deptName;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 员工姓名
+ */
+ private String employeeName;
+ /**
+ * 基本工资
+ */
+ private BigDecimal basicSalary;
+ /**
+ * 实际出勤天数
+ */
+ private Long actuallyDays;
+ /**
+ * 实际出勤小时数
+ */
+ private BigDecimal actuallyHours;
+ /**
+ * 出勤工时
+ */
+ private BigDecimal dayWorkHours;
+ /**
+ * 包活工时
+ */
+ private BigDecimal workOrderHours;
+ /**
+ * 加班工时
+ */
+ private BigDecimal overtimeWorkHours;
+ /**
+ * 日工帮工工时
+ */
+ private BigDecimal rigongHelpHours;
+ /**
+ * 日工工资
+ */
+ private BigDecimal dayWorkPay;
+ /**
+ * 包活工资
+ */
+ private BigDecimal workOrderPay;
+ /**
+ * 加班工资
+ */
+ private BigDecimal overtime;
+ /**
+ * 帮工工资
+ */
+ private BigDecimal banggongPay;
+ /**
+ * 值班/拉货工资 废弃
+ */
+ private BigDecimal zhibanOrLahuo;
+ /**
+ * 节假日工资 废弃
+ */
+ private BigDecimal holiday;
+ /**
+ * 岗位津贴 废弃
+ */
+ private BigDecimal post;
+ /**
+ * 话费及其他补贴 废弃
+ */
+ private BigDecimal phoneCharge;
+ /**
+ * 合同补 废弃
+ */
+ private BigDecimal contract;
+ /**
+ * 全勤奖 废弃
+ */
+ private BigDecimal fullTime;
+ /**
+ * 上月差异 废弃
+ */
+ private BigDecimal diffOfLastMonth;
+ /**
+ * 应付工资
+ */
+ private BigDecimal shoudPayMoney;
+ /**
+ * 扣款忘刷迟到 废弃
+ */
+ private BigDecimal late;
+ /**
+ * 扣款保险/党费 废弃
+ */
+ private BigDecimal insurance;
+ /**
+ * 实发工资
+ */
+ private BigDecimal actuallyPayMoney;
+ /**
+ * 员工补贴对象
+ */
+ private String allButieData;
+ /**
+ * 备注
+ */
+ private String note;
+ /**
+ * 员工工资是否可查
+ */
+ private Long empQuery;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubInfo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubInfo.java
new file mode 100644
index 0000000..d1e5990
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubInfo.java
@@ -0,0 +1,65 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 租户订阅信息对象 pay_sub_info
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_sub_info")
+public class PaySubInfo extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 订阅ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 公司ID
+ */
+ private Long tenantId;
+ /**
+ * 公司名称
+ */
+ private String companyName;
+ /**
+ * 开始时间
+ */
+ private Date startTime;
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+ /**
+ * 激活情况(0已激活 1停用)
+ */
+ private String active;
+ /**
+ * 订阅计划ID
+ */
+ private Long subplanId;
+ /**
+ * 订阅名称
+ */
+ private String subplanName;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubPlan.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubPlan.java
new file mode 100644
index 0000000..5977466
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PaySubPlan.java
@@ -0,0 +1,47 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 订阅套餐对象 pay_sub_plan
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_sub_plan")
+public class PaySubPlan extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 订阅ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 订阅名称
+ */
+ private String name;
+ /**
+ * 价格
+ */
+ private Long price;
+ /**
+ * 计划描述
+ */
+ private String description;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayTenant.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayTenant.java
new file mode 100644
index 0000000..8ea66fd
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayTenant.java
@@ -0,0 +1,55 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 租户对象 pay_tenant
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_tenant")
+public class PayTenant extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 租户id
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 公司名称
+ */
+ private String name;
+ /**
+ * 公司电话
+ */
+ private String phone;
+ /**
+ * 公司固话
+ */
+ private String fixPhone;
+ /**
+ * 公司地址
+ */
+ private String address;
+ /**
+ * 公司网址
+ */
+ private String website;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderBaohuo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderBaohuo.java
new file mode 100644
index 0000000..b26f935
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderBaohuo.java
@@ -0,0 +1,118 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活派工单对象 pay_work_order_baohuo
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_work_order_baohuo")
+public class PayWorkOrderBaohuo extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 归档ID
+ */
+ private String archiveId;
+ /**
+ * 产品ID
+ */
+ private Long productId;
+ /**
+ * 部门ID
+ */
+ private Long deptId;
+ /**
+ * 车间
+ */
+ private String workshop;
+ /**
+ * 包活工单名称
+ */
+ private String name;
+ /**
+ * 工作内容
+ */
+ private String content;
+ /**
+ * 加工数量
+ */
+ private BigDecimal productNum;
+ /**
+ * 产品单价
+ */
+ private BigDecimal price;
+ /**
+ * 单位
+ */
+ private String unit;
+ /**
+ * 加工总金额
+ */
+ private BigDecimal amount;
+ /**
+ * 开始时间
+ */
+ private Date beginTime;
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+ /**
+ * 质检人员
+ */
+ private String qualityName;
+ /**
+ * 检验说明
+ */
+ private String qualityRemark;
+ /**
+ * 入库时间
+ */
+ private Date instorageTime;
+ /**
+ * 入库人员
+ */
+ private String instorageName;
+ /**
+ * 实际入库数量
+ */
+ private Long instorageNum;
+ /**
+ * 项目经理
+ */
+ private String managerName;
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderEmployee.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderEmployee.java
new file mode 100644
index 0000000..c216c45
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderEmployee.java
@@ -0,0 +1,102 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单和员工联系对象 pay_work_order_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_work_order_employee")
+public class PayWorkOrderEmployee extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 工单id
+ */
+ private Long workOrderId;
+ /**
+ * 员工id
+ */
+ private Long employeeId;
+ /**
+ * 部门ID
+ */
+ private Long deptId;
+ /**
+ * 类型-用于区别工单
+ */
+ private String type;
+ /**
+ * 员工姓名
+ */
+ private String empName;
+ /**
+ * 开始时间 弃用
+ */
+ private Date startTime;
+ /**
+ * 结束时间 弃用
+ */
+ private Date endTime;
+ /**
+ * 有效工作时长 弃用
+ */
+ private BigDecimal validHours;
+ /**
+ * 干活日期 弃用
+ */
+ private Date date;
+ /**
+ * 年月(yyyy-MM)
+ */
+ private String month;
+ /**
+ * 工序类型
+ */
+ private String processingType;
+ /**
+ * 工序单价
+ */
+ private BigDecimal processingPrice;
+ /**
+ * 工序加工数量
+ */
+ private Long processingNum;
+ /**
+ * 总金额
+ */
+ private BigDecimal amount;
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ private Integer helper;
+ /**
+ * 入库日期
+ */
+ private Date intime;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderInfo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderInfo.java
new file mode 100644
index 0000000..eeb6935
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderInfo.java
@@ -0,0 +1,86 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单信息对象 pay_work_order_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_work_order_info")
+public class PayWorkOrderInfo extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 产品id
+ */
+ private Long productId;
+ /**
+ * 工单所属部门id
+ */
+ private Long deptId;
+ /**
+ * 件数
+ */
+ private Long numbers;
+ /**
+ * 单价
+ */
+ private BigDecimal price;
+ /**
+ * 派单人
+ */
+ private String bookPerson;
+ /**
+ * 质检人
+ */
+ private String qualityPerson;
+ /**
+ * 工单总金额
+ */
+ private BigDecimal totalAmount;
+ /**
+ * 工单完成日期
+ */
+ private Date completeTime;
+ /**
+ * 工单完成状态(0未完成 1完成)
+ */
+ private String state;
+ /**
+ * 包活总工时
+ */
+ private BigDecimal baohuoHours;
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderTuzhi.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderTuzhi.java
new file mode 100644
index 0000000..9fdf7da
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkOrderTuzhi.java
@@ -0,0 +1,122 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 图纸流程卡工单对象 pay_work_order_tuzhi
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_work_order_tuzhi")
+public class PayWorkOrderTuzhi extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 归档ID
+ */
+ private String archiveId;
+ /**
+ * 产品ID
+ */
+ private Long productId;
+ /**
+ * 网机编号
+ */
+ private String machineId;
+ /**
+ * 部门ID
+ */
+ private Long deptId;
+ /**
+ * 车间
+ */
+ private String workshop;
+ /**
+ * 图纸编号及名称
+ */
+ private String name;
+ /**
+ * 加工数量
+ */
+ private Long productNum;
+ /**
+ * 原材料
+ */
+ private String productMaterial;
+ /**
+ * 规格
+ */
+ private String productSpecification;
+ /**
+ * 原材料数量
+ */
+ private Long materialNum;
+ /**
+ * 字典-下料类型ID
+ */
+ private String xialiao;
+ /**
+ * 字典-加工类型ID
+ */
+ private String processingType;
+ /**
+ * 加工单价
+ */
+ private BigDecimal price;
+ /**
+ * 开始时间
+ */
+ private Date beginTime;
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+ /**
+ * 质检人员
+ */
+ private String qualityName;
+ /**
+ * 入库日期
+ */
+ private Date instorageTime;
+ /**
+ * 入库人员
+ */
+ private String instorageName;
+ /**
+ * 实际入库数量
+ */
+ private Long instorageNum;
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ private Integer deleted;
+ /**
+ * 备注
+ */
+ private String remark;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkTime.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkTime.java
new file mode 100644
index 0000000..aed1a7a
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/PayWorkTime.java
@@ -0,0 +1,66 @@
+package com.ruoyi.pay.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 员工工时时间段对象 pay_work_time
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_work_time")
+public class PayWorkTime extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 租户id
+ */
+ private Long tenantId;
+ /**
+ * 员工ID
+ */
+ private Long empId;
+ /**
+ * 员工工时ID
+ */
+ private Long woeId;
+ /**
+ * 开始时间
+ */
+ private Date stime;
+ /**
+ * 结束时间
+ */
+ private Date etime;
+ /**
+ * 有效时长
+ */
+ private BigDecimal validHours;
+ /**
+ * 工作日期
+ */
+ private Date date;
+ /**
+ * 入库日期
+ */
+ private Date intime;
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java
new file mode 100644
index 0000000..c61ec19
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java
@@ -0,0 +1,105 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 考勤业务对象 pay_attendance
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayAttendanceBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String empName;
+
+ /**
+ * 部门名称
+ */
+ @NotBlank(message = "部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deptName;
+
+ /**
+ * 部门id
+ */
+ @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 上午开始时间
+ */
+ @NotNull(message = "上午开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date amStartTime;
+
+ /**
+ * 上午结束时间
+ */
+ @NotNull(message = "上午结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date amEndTime;
+
+ /**
+ * 下午开始时间
+ */
+ @NotNull(message = "下午开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date pmStartTime;
+
+ /**
+ * 下午结束时间
+ */
+ @NotNull(message = "下午结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date pmEndTime;
+
+ /**
+ * 考勤日期
+ */
+ @NotNull(message = "考勤日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date kaoqinDate;
+
+ /**
+ * 考勤年份月份 (yyyy-MM)
+ */
+ @NotBlank(message = "考勤年份月份 (yyyy-MM)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kaoqinYearMonth;
+
+ /**
+ * 考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)
+ */
+ @NotBlank(message = "考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String kaoqinjiNum;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoEmployeeBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoEmployeeBo.java
new file mode 100644
index 0000000..4b83c25
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoEmployeeBo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单员工关联业务对象 pay_baohuo_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayBaohuoEmployeeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 包活工单ID
+ */
+ @NotNull(message = "包活工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long woId;
+
+ /**
+ * 员工ID
+ */
+ @NotNull(message = "员工ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long empId;
+
+ /**
+ * 部门ID
+ */
+ @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String empName;
+
+ /**
+ * 工单员工工资
+ */
+ @NotNull(message = "工单员工工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal amount;
+
+ /**
+ * 月份(yyyy-MM)
+ */
+ @NotBlank(message = "月份(yyyy-MM)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String month;
+
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ @NotNull(message = "是否帮工(0-否 1-是)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer helper;
+
+ /**
+ * 入库日期
+ */
+ @NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoProductBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoProductBo.java
new file mode 100644
index 0000000..e83893b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoProductBo.java
@@ -0,0 +1,92 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单产品关联业务对象 pay_baohuo_product
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayBaohuoProductBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 产品ID
+ */
+ @NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productId;
+
+ /**
+ * 包活工单ID
+ */
+ @NotNull(message = "包活工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long woId;
+
+ /**
+ * 产品名称
+ */
+ @NotBlank(message = "产品名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String productName;
+
+ /**
+ * 加工数量
+ */
+ @NotNull(message = "加工数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal productNum;
+
+ /**
+ * 最低价格
+ */
+ @NotNull(message = "最低价格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal minPrice;
+
+ /**
+ * 最高价格
+ */
+ @NotNull(message = "最高价格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal maxPrice;
+
+ /**
+ * 总金额
+ */
+ @NotNull(message = "总金额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal amount;
+
+ /**
+ * 单价
+ */
+ @NotNull(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal price;
+
+ /**
+ * 单位-字典
+ */
+ @NotBlank(message = "单位-字典不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String unit;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoWorktimeBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoWorktimeBo.java
new file mode 100644
index 0000000..e4581e3
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayBaohuoWorktimeBo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活工单工时关联业务对象 pay_baohuo_worktime
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayBaohuoWorktimeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 包活工单ID
+ */
+ @NotNull(message = "包活工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long woId;
+
+ /**
+ * 员工ID
+ */
+ @NotNull(message = "员工ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long empId;
+
+ /**
+ * 包活工单员工关联表ID
+ */
+ @NotNull(message = "包活工单员工关联表ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long bheId;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date stime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date etime;
+
+ /**
+ * 有效时长
+ */
+ @NotNull(message = "有效时长不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal validHours;
+
+ /**
+ * 工作日期
+ */
+ @NotNull(message = "工作日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date date;
+
+ /**
+ * 入库日期
+ */
+ @NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieBo.java
new file mode 100644
index 0000000..1f6c7f3
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieBo.java
@@ -0,0 +1,67 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 补贴扣减业务对象 pay_butie
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayButieBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 补贴或者扣减项名称
+ */
+ @NotBlank(message = "补贴或者扣减项名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 固定(0-不固定 1-固定)
+ */
+ @NotBlank(message = "固定(0-不固定 1-固定)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String fixed;
+
+ /**
+ * 类型(0-减项 1-增项)
+ */
+ @NotBlank(message = "类型(0-减项 1-增项)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String type;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @NotNull(message = "删除标志(0-可用 1-删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieEmplyeeBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieEmplyeeBo.java
new file mode 100644
index 0000000..672541b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayButieEmplyeeBo.java
@@ -0,0 +1,68 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 补贴和员工联系业务对象 pay_butie_emplyee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayButieEmplyeeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 补贴id
+ */
+ @NotNull(message = "补贴id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long butieId;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 补贴扣减金额
+ */
+ @NotNull(message = "补贴扣减金额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal money;
+
+ /**
+ * 年月日期
+ */
+ @NotBlank(message = "年月日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String date;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDayWorkHoursBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDayWorkHoursBo.java
new file mode 100644
index 0000000..8f46232
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDayWorkHoursBo.java
@@ -0,0 +1,81 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 日工工时业务对象 pay_day_work_hours
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayDayWorkHoursBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 员工部门id
+ */
+ @NotNull(message = "员工部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 员工部门名称
+ */
+ @NotBlank(message = "员工部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deptName;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String empName;
+
+ /**
+ * 日工日期
+ */
+ @NotNull(message = "日工日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date date;
+
+ /**
+ * 日工年月
+ */
+ @NotBlank(message = "日工年月不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String dwYearMonth;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String note;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDwHoursContrastBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDwHoursContrastBo.java
new file mode 100644
index 0000000..7191775
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayDwHoursContrastBo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 日工工时时间关联业务对象 pay_dw_hours_contrast
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayDwHoursContrastBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 日工工时id
+ */
+ @NotNull(message = "日工工时id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long dwHoursId;
+
+ /**
+ * 工时部门id
+ */
+ @NotNull(message = "工时部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 工时部门
+ */
+ @NotBlank(message = "工时部门不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deptName;
+
+ /**
+ * 上午开始时间
+ */
+ @NotNull(message = "上午开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date startTime;
+
+ /**
+ * 上午结束时间
+ */
+ @NotNull(message = "上午结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date endTime;
+
+ /**
+ * 时长
+ */
+ @NotNull(message = "时长不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal hours;
+
+ /**
+ * 业务员
+ */
+ @NotBlank(message = "业务员不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String salesman;
+
+ /**
+ * 是否帮工 (0:否 1:是)
+ */
+ @NotNull(message = "是否帮工 (0:否 1:是)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer isHelper;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayEmployeeInfoBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayEmployeeInfoBo.java
new file mode 100644
index 0000000..7fedc77
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayEmployeeInfoBo.java
@@ -0,0 +1,196 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 员工信息业务对象 pay_employee_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayEmployeeInfoBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 登录用户id
+ */
+ @NotNull(message = "登录用户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 员工所属部门
+ */
+ @NotNull(message = "员工所属部门不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 性别(0:男 1:女)
+ */
+ @NotBlank(message = "性别(0:男 1:女)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String sex;
+
+ /**
+ * 年龄
+ */
+ @NotNull(message = "年龄不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long age;
+
+ /**
+ * 手机号
+ */
+ @NotBlank(message = "手机号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String phone;
+
+ /**
+ * 身份证号
+ */
+ @NotBlank(message = "身份证号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String idcard;
+
+ /**
+ * 银行卡号
+ */
+ @NotBlank(message = "银行卡号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String bankCardNumber;
+
+ /**
+ * 开户行
+ */
+ @NotBlank(message = "开户行不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String openingBank;
+
+ /**
+ * 基本工资
+ */
+ @NotNull(message = "基本工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal basicSalary;
+
+ /**
+ * 日薪
+ */
+ @NotNull(message = "日薪不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal daySalary;
+
+ /**
+ * 时薪
+ */
+ @NotNull(message = "时薪不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal hourSalary;
+
+ /**
+ * 休息类型(0 :周休 1:非周休 2:天休 3:小时 4:包月 5:周二天)
+ */
+ @NotBlank(message = "休息类型(0 :周休 1:非周休 2:天休 3:小时 4:包月 5:周二天)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String restType;
+
+ /**
+ * 每日应出勤小时数
+ */
+ @NotNull(message = "每日应出勤小时数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal hoursPerDay;
+
+ /**
+ * 工资计算类型(
+0:日薪(日工+包活)
+1:月薪(日工+包活)
+2:喷涂按小时数(16/17、17/18)
+3.外贸按小时数(17/21)
+4.包月工资)
+
+ */
+ @NotBlank(message = "工资计算类型", groups = { AddGroup.class, EditGroup.class })
+ private String payCalcType;
+
+ /**
+ * 学历
+ */
+ @NotBlank(message = "学历不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String education;
+
+ /**
+ * 家庭住址
+ */
+ @NotBlank(message = "家庭住址不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String address;
+
+ /**
+ * 紧急联系人
+ */
+ @NotBlank(message = "紧急联系人不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String contact;
+
+ /**
+ * 紧急联系人电话
+ */
+ @NotBlank(message = "紧急联系人电话不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String contactPhone;
+
+ /**
+ * 质检(1-是 0-否)
+ */
+ @NotNull(message = "质检(1-是 0-否)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer zhijian;
+
+ /**
+ * 业务员(1-是 0-否)
+ */
+ @NotNull(message = "业务员(1-是 0-否)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer yewu;
+
+ /**
+ * 合同补助开始时间
+ */
+ @NotNull(message = "合同补助开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date htstime;
+
+ /**
+ * 合同补助结束时间
+ */
+ @NotNull(message = "合同补助结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date htetime;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @NotNull(message = "删除标志(1:删除 0:未删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayMaterialBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayMaterialBo.java
new file mode 100644
index 0000000..6414d61
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayMaterialBo.java
@@ -0,0 +1,73 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 毛料信息业务对象 pay_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayMaterialBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 毛料名称
+ */
+ @NotBlank(message = "毛料名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 材料种类
+ */
+ @NotBlank(message = "材料种类不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String materialType;
+
+ /**
+ * 规格
+ */
+ @NotBlank(message = "规格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String specification;
+
+ /**
+ * 尺寸
+ */
+ @NotBlank(message = "尺寸不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String size;
+
+ /**
+ * 单位
+ */
+ @NotBlank(message = "单位不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String unit;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductMaterialBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductMaterialBo.java
new file mode 100644
index 0000000..1396317
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductMaterialBo.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 产品毛料关联业务对象 pay_product_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayProductMaterialBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 毛料ID
+ */
+ @NotNull(message = "毛料ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long materialId;
+
+ /**
+ * 产品ID
+ */
+ @NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productId;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductsBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductsBo.java
new file mode 100644
index 0000000..099a8e9
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayProductsBo.java
@@ -0,0 +1,136 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 产品业务对象 pay_products
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayProductsBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 毛料ID
+ */
+ @NotNull(message = "毛料ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long materialId;
+
+ /**
+ * 产品名称
+ */
+ @NotBlank(message = "产品名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String productName;
+
+ /**
+ * 网机编号
+ */
+ @NotBlank(message = "网机编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String netMachineNo;
+
+ /**
+ * 图纸编号
+ */
+ @NotBlank(message = "图纸编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String drawingNum;
+
+ /**
+ * 工序
+ */
+ @NotBlank(message = "工序不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String process;
+
+ /**
+ * 规格型号
+ */
+ @NotBlank(message = "规格型号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String model;
+
+ /**
+ * 产品单位
+ */
+ @NotBlank(message = "产品单位不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String danwei;
+
+ /**
+ * 毛料名称
+ */
+ @NotBlank(message = "毛料名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String originName;
+
+ /**
+ * 毛料规格
+ */
+ @NotBlank(message = "毛料规格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String originModel;
+
+ /**
+ * 毛料尺寸
+ */
+ @NotBlank(message = "毛料尺寸不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String originSize;
+
+ /**
+ * 毛料单位
+ */
+ @NotBlank(message = "毛料单位不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String originDanwei;
+
+ /**
+ * 入库时间
+ */
+ @NotNull(message = "入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date storageTime;
+
+ /**
+ * 最低价格
+ */
+ @NotNull(message = "最低价格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal minPrice;
+
+ /**
+ * 最高价格
+ */
+ @NotNull(message = "最高价格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal maxPrice;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @NotNull(message = "删除标志(1:删除 0:未删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayRequireAttendanceReportBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayRequireAttendanceReportBo.java
new file mode 100644
index 0000000..a0d0734
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayRequireAttendanceReportBo.java
@@ -0,0 +1,122 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 应出勤报业务对象 pay_require_attendance_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayRequireAttendanceReportBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 年份
+ */
+ @NotBlank(message = "年份不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String year;
+
+ /**
+ * 月份
+ */
+ @NotBlank(message = "月份不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String month;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String empName;
+
+ /**
+ * 部门名称
+ */
+ @NotBlank(message = "部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deptName;
+
+ /**
+ * 休息类别
+ */
+ @NotBlank(message = "休息类别不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String restType;
+
+ /**
+ * 应出勤天数
+ */
+ @NotNull(message = "应出勤天数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long requireDays;
+
+ /**
+ * 出勤天数
+ */
+ @NotNull(message = "出勤天数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long avtiveDays;
+
+ /**
+ * 出勤小时数
+ */
+ @NotNull(message = "出勤小时数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal attendanceHours;
+
+ /**
+ * 加班小时数
+ */
+ @NotNull(message = "加班小时数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal overtimeHours;
+
+ /**
+ * 放假天数
+ */
+ @NotNull(message = "放假天数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long holidays;
+
+ /**
+ * 放假小时数
+ */
+ @NotNull(message = "放假小时数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal holidayHours;
+
+ /**
+ *
+ */
+ @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal leaveDays;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySalaryReportBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySalaryReportBo.java
new file mode 100644
index 0000000..0bc2e42
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySalaryReportBo.java
@@ -0,0 +1,224 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工资明细总业务对象 pay_salary_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PaySalaryReportBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 年
+ */
+ @NotBlank(message = "年不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String year;
+
+ /**
+ * 月
+ */
+ @NotBlank(message = "月不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String month;
+
+ /**
+ * 部门id
+ */
+ @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 部门名称
+ */
+ @NotBlank(message = "部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deptName;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String employeeName;
+
+ /**
+ * 基本工资
+ */
+ @NotNull(message = "基本工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal basicSalary;
+
+ /**
+ * 实际出勤天数
+ */
+ @NotNull(message = "实际出勤天数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long actuallyDays;
+
+ /**
+ * 实际出勤小时数
+ */
+ @NotNull(message = "实际出勤小时数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal actuallyHours;
+
+ /**
+ * 出勤工时
+ */
+ @NotNull(message = "出勤工时不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal dayWorkHours;
+
+ /**
+ * 包活工时
+ */
+ @NotNull(message = "包活工时不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal workOrderHours;
+
+ /**
+ * 加班工时
+ */
+ @NotNull(message = "加班工时不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal overtimeWorkHours;
+
+ /**
+ * 日工帮工工时
+ */
+ @NotNull(message = " 日工帮工工时不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal rigongHelpHours;
+
+ /**
+ * 日工工资
+ */
+ @NotNull(message = "日工工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal dayWorkPay;
+
+ /**
+ * 包活工资
+ */
+ @NotNull(message = "包活工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal workOrderPay;
+
+ /**
+ * 加班工资
+ */
+ @NotNull(message = "加班工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal overtime;
+
+ /**
+ * 帮工工资
+ */
+ @NotNull(message = "帮工工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal banggongPay;
+
+ /**
+ * 值班/拉货工资 废弃
+ */
+ @NotNull(message = "值班/拉货工资 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal zhibanOrLahuo;
+
+ /**
+ * 节假日工资 废弃
+ */
+ @NotNull(message = "节假日工资 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal holiday;
+
+ /**
+ * 岗位津贴 废弃
+ */
+ @NotNull(message = "岗位津贴 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal post;
+
+ /**
+ * 话费及其他补贴 废弃
+ */
+ @NotNull(message = "话费及其他补贴 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal phoneCharge;
+
+ /**
+ * 合同补 废弃
+ */
+ @NotNull(message = "合同补 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal contract;
+
+ /**
+ * 全勤奖 废弃
+ */
+ @NotNull(message = "全勤奖 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal fullTime;
+
+ /**
+ * 上月差异 废弃
+ */
+ @NotNull(message = "上月差异 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal diffOfLastMonth;
+
+ /**
+ * 应付工资
+ */
+ @NotNull(message = "应付工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal shoudPayMoney;
+
+ /**
+ * 扣款忘刷迟到 废弃
+ */
+ @NotNull(message = "扣款忘刷迟到 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal late;
+
+ /**
+ * 扣款保险/党费 废弃
+ */
+ @NotNull(message = "扣款保险/党费 废弃不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal insurance;
+
+ /**
+ * 实发工资
+ */
+ @NotNull(message = "实发工资不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal actuallyPayMoney;
+
+ /**
+ * 员工补贴对象
+ */
+ @NotBlank(message = "员工补贴对象不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String allButieData;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String note;
+
+ /**
+ * 员工工资是否可查
+ */
+ @NotNull(message = "员工工资是否可查不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long empQuery;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubInfoBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubInfoBo.java
new file mode 100644
index 0000000..97d6318
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubInfoBo.java
@@ -0,0 +1,81 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 租户订阅信息业务对象 pay_sub_info
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PaySubInfoBo extends BaseEntity {
+
+ /**
+ * 订阅ID
+ */
+ @NotNull(message = "订阅ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 公司ID
+ */
+ @NotNull(message = "公司ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 公司名称
+ */
+ @NotBlank(message = "公司名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String companyName;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date startTime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date endTime;
+
+ /**
+ * 激活情况(0已激活 1停用)
+ */
+ @NotBlank(message = "激活情况(0已激活 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String active;
+
+ /**
+ * 订阅计划ID
+ */
+ @NotNull(message = "订阅计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long subplanId;
+
+ /**
+ * 订阅名称
+ */
+ @NotBlank(message = "订阅名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String subplanName;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubPlanBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubPlanBo.java
new file mode 100644
index 0000000..c5b3d2f
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PaySubPlanBo.java
@@ -0,0 +1,55 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 订阅套餐业务对象 pay_sub_plan
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PaySubPlanBo extends BaseEntity {
+
+ /**
+ * 订阅ID
+ */
+ @NotNull(message = "订阅ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 订阅名称
+ */
+ @NotBlank(message = "订阅名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 价格
+ */
+ @NotNull(message = "价格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long price;
+
+ /**
+ * 计划描述
+ */
+ @NotBlank(message = "计划描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String description;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayTenantBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayTenantBo.java
new file mode 100644
index 0000000..5baa274
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayTenantBo.java
@@ -0,0 +1,67 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 租户业务对象 pay_tenant
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayTenantBo extends BaseEntity {
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 公司名称
+ */
+ @NotBlank(message = "公司名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 公司电话
+ */
+ @NotBlank(message = "公司电话不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String phone;
+
+ /**
+ * 公司固话
+ */
+ @NotBlank(message = "公司固话不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String fixPhone;
+
+ /**
+ * 公司地址
+ */
+ @NotBlank(message = "公司地址不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String address;
+
+ /**
+ * 公司网址
+ */
+ @NotBlank(message = "公司网址不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String website;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderBaohuoBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderBaohuoBo.java
new file mode 100644
index 0000000..4d07b05
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderBaohuoBo.java
@@ -0,0 +1,160 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 包活派工单业务对象 pay_work_order_baohuo
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayWorkOrderBaohuoBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 归档ID
+ */
+ @NotBlank(message = "归档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String archiveId;
+
+ /**
+ * 产品ID
+ */
+ @NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productId;
+
+ /**
+ * 部门ID
+ */
+ @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 车间
+ */
+ @NotBlank(message = "车间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String workshop;
+
+ /**
+ * 包活工单名称
+ */
+ @NotBlank(message = "包活工单名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 工作内容
+ */
+ @NotBlank(message = "工作内容不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String content;
+
+ /**
+ * 加工数量
+ */
+ @NotNull(message = "加工数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal productNum;
+
+ /**
+ * 产品单价
+ */
+ @NotNull(message = "产品单价不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal price;
+
+ /**
+ * 单位
+ */
+ @NotBlank(message = "单位不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String unit;
+
+ /**
+ * 加工总金额
+ */
+ @NotNull(message = "加工总金额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal amount;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date beginTime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date endTime;
+
+ /**
+ * 质检人员
+ */
+ @NotBlank(message = "质检人员不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String qualityName;
+
+ /**
+ * 检验说明
+ */
+ @NotBlank(message = "检验说明不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String qualityRemark;
+
+ /**
+ * 入库时间
+ */
+ @NotNull(message = "入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date instorageTime;
+
+ /**
+ * 入库人员
+ */
+ @NotBlank(message = "入库人员不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String instorageName;
+
+ /**
+ * 实际入库数量
+ */
+ @NotNull(message = "实际入库数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long instorageNum;
+
+ /**
+ * 项目经理
+ */
+ @NotBlank(message = "项目经理不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String managerName;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @NotNull(message = "删除标志(0-可用 1-删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderEmployeeBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderEmployeeBo.java
new file mode 100644
index 0000000..33b563d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderEmployeeBo.java
@@ -0,0 +1,136 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单和员工联系业务对象 pay_work_order_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayWorkOrderEmployeeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 工单id
+ */
+ @NotNull(message = "工单id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long workOrderId;
+
+ /**
+ * 员工id
+ */
+ @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long employeeId;
+
+ /**
+ * 部门ID
+ */
+ @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 类型-用于区别工单
+ */
+ @NotBlank(message = "类型-用于区别工单不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String type;
+
+ /**
+ * 员工姓名
+ */
+ @NotBlank(message = "员工姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String empName;
+
+ /**
+ * 开始时间 弃用
+ */
+ @NotNull(message = "开始时间 弃用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date startTime;
+
+ /**
+ * 结束时间 弃用
+ */
+ @NotNull(message = "结束时间 弃用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date endTime;
+
+ /**
+ * 有效工作时长 弃用
+ */
+ @NotNull(message = "有效工作时长 弃用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal validHours;
+
+ /**
+ * 干活日期 弃用
+ */
+ @NotNull(message = "干活日期 弃用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date date;
+
+ /**
+ * 年月(yyyy-MM)
+ */
+ @NotBlank(message = "年月(yyyy-MM)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String month;
+
+ /**
+ * 工序类型
+ */
+ @NotBlank(message = "工序类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String processingType;
+
+ /**
+ * 工序单价
+ */
+ @NotNull(message = "工序单价不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal processingPrice;
+
+ /**
+ * 工序加工数量
+ */
+ @NotNull(message = "工序加工数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long processingNum;
+
+ /**
+ * 总金额
+ */
+ @NotNull(message = "总金额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal amount;
+
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ @NotNull(message = "是否帮工(0-否 1-是)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer helper;
+
+ /**
+ * 入库日期
+ */
+ @NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderInfoBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderInfoBo.java
new file mode 100644
index 0000000..fdfeb56
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderInfoBo.java
@@ -0,0 +1,112 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 工单信息业务对象 pay_work_order_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayWorkOrderInfoBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 产品id
+ */
+ @NotNull(message = "产品id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productId;
+
+ /**
+ * 工单所属部门id
+ */
+ @NotNull(message = "工单所属部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 件数
+ */
+ @NotNull(message = "件数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long numbers;
+
+ /**
+ * 单价
+ */
+ @NotNull(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal price;
+
+ /**
+ * 派单人
+ */
+ @NotBlank(message = "派单人不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String bookPerson;
+
+ /**
+ * 质检人
+ */
+ @NotBlank(message = "质检人不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String qualityPerson;
+
+ /**
+ * 工单总金额
+ */
+ @NotNull(message = "工单总金额不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal totalAmount;
+
+ /**
+ * 工单完成日期
+ */
+ @NotNull(message = "工单完成日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date completeTime;
+
+ /**
+ * 工单完成状态(0未完成 1完成)
+ */
+ @NotBlank(message = "工单完成状态(0未完成 1完成)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String state;
+
+ /**
+ * 包活总工时
+ */
+ @NotNull(message = "包活总工时不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal baohuoHours;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @NotNull(message = "删除标志(1:删除 0:未删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderTuzhiBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderTuzhiBo.java
new file mode 100644
index 0000000..3b2094d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkOrderTuzhiBo.java
@@ -0,0 +1,166 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 图纸流程卡工单业务对象 pay_work_order_tuzhi
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayWorkOrderTuzhiBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 归档ID
+ */
+ @NotBlank(message = "归档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String archiveId;
+
+ /**
+ * 产品ID
+ */
+ @NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productId;
+
+ /**
+ * 网机编号
+ */
+ @NotBlank(message = "网机编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String machineId;
+
+ /**
+ * 部门ID
+ */
+ @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deptId;
+
+ /**
+ * 车间
+ */
+ @NotBlank(message = "车间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String workshop;
+
+ /**
+ * 图纸编号及名称
+ */
+ @NotBlank(message = "图纸编号及名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 加工数量
+ */
+ @NotNull(message = "加工数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long productNum;
+
+ /**
+ * 原材料
+ */
+ @NotBlank(message = "原材料不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String productMaterial;
+
+ /**
+ * 规格
+ */
+ @NotBlank(message = "规格不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String productSpecification;
+
+ /**
+ * 原材料数量
+ */
+ @NotNull(message = "原材料数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long materialNum;
+
+ /**
+ * 字典-下料类型ID
+ */
+ @NotBlank(message = "字典-下料类型ID 不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String xialiao;
+
+ /**
+ * 字典-加工类型ID
+ */
+ @NotBlank(message = "字典-加工类型ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String processingType;
+
+ /**
+ * 加工单价
+ */
+ @NotNull(message = "加工单价不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal price;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date beginTime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date endTime;
+
+ /**
+ * 质检人员
+ */
+ @NotBlank(message = "质检人员不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String qualityName;
+
+ /**
+ * 入库日期
+ */
+ @NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date instorageTime;
+
+ /**
+ * 入库人员
+ */
+ @NotBlank(message = "入库人员不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String instorageName;
+
+ /**
+ * 实际入库数量
+ */
+ @NotNull(message = "实际入库数量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long instorageNum;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @NotNull(message = "删除标志(0-可用 1-删除)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkTimeBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkTimeBo.java
new file mode 100644
index 0000000..b12bfb4
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayWorkTimeBo.java
@@ -0,0 +1,82 @@
+package com.ruoyi.pay.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 员工工时时间段业务对象 pay_work_time
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PayWorkTimeBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @NotNull(message = "租户id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long tenantId;
+
+ /**
+ * 员工ID
+ */
+ @NotNull(message = "员工ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long empId;
+
+ /**
+ * 员工工时ID
+ */
+ @NotNull(message = "员工工时ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long woeId;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date stime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date etime;
+
+ /**
+ * 有效时长
+ */
+ @NotNull(message = "有效时长不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal validHours;
+
+ /**
+ * 工作日期
+ */
+ @NotNull(message = "工作日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date date;
+
+ /**
+ * 入库日期
+ */
+ @NotNull(message = "入库日期不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayAttendanceVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayAttendanceVo.java
new file mode 100644
index 0000000..a9ef272
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayAttendanceVo.java
@@ -0,0 +1,105 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 考勤视图对象 pay_attendance
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayAttendanceVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 部门名称
+ */
+ @ExcelProperty(value = "部门名称")
+ private String deptName;
+
+ /**
+ * 部门id
+ */
+ @ExcelProperty(value = "部门id")
+ private Long deptId;
+
+ /**
+ * 上午开始时间
+ */
+ @ExcelProperty(value = "上午开始时间")
+ private Date amStartTime;
+
+ /**
+ * 上午结束时间
+ */
+ @ExcelProperty(value = "上午结束时间")
+ private Date amEndTime;
+
+ /**
+ * 下午开始时间
+ */
+ @ExcelProperty(value = "下午开始时间")
+ private Date pmStartTime;
+
+ /**
+ * 下午结束时间
+ */
+ @ExcelProperty(value = "下午结束时间")
+ private Date pmEndTime;
+
+ /**
+ * 考勤日期
+ */
+ @ExcelProperty(value = "考勤日期")
+ private Date kaoqinDate;
+
+ /**
+ * 考勤年份月份 (yyyy-MM)
+ */
+ @ExcelProperty(value = "考勤年份月份 (yyyy-MM)")
+ private String kaoqinYearMonth;
+
+ /**
+ * 考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)
+ */
+ @ExcelProperty(value = "考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)")
+ private String kaoqinjiNum;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoEmployeeVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoEmployeeVo.java
new file mode 100644
index 0000000..d292da6
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoEmployeeVo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 包活工单员工关联视图对象 pay_baohuo_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayBaohuoEmployeeVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 包活工单ID
+ */
+ @ExcelProperty(value = "包活工单ID")
+ private Long woId;
+
+ /**
+ * 员工ID
+ */
+ @ExcelProperty(value = "员工ID")
+ private Long empId;
+
+ /**
+ * 部门ID
+ */
+ @ExcelProperty(value = "部门ID")
+ private Long deptId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 工单员工工资
+ */
+ @ExcelProperty(value = "工单员工工资")
+ private BigDecimal amount;
+
+ /**
+ * 月份(yyyy-MM)
+ */
+ @ExcelProperty(value = "月份(yyyy-MM)")
+ private String month;
+
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ @ExcelProperty(value = "是否帮工(0-否 1-是)")
+ private Integer helper;
+
+ /**
+ * 入库日期
+ */
+ @ExcelProperty(value = "入库日期")
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoProductVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoProductVo.java
new file mode 100644
index 0000000..228af36
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoProductVo.java
@@ -0,0 +1,92 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 包活工单产品关联视图对象 pay_baohuo_product
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayBaohuoProductVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 产品ID
+ */
+ @ExcelProperty(value = "产品ID")
+ private Long productId;
+
+ /**
+ * 包活工单ID
+ */
+ @ExcelProperty(value = "包活工单ID")
+ private Long woId;
+
+ /**
+ * 产品名称
+ */
+ @ExcelProperty(value = "产品名称")
+ private String productName;
+
+ /**
+ * 加工数量
+ */
+ @ExcelProperty(value = "加工数量")
+ private BigDecimal productNum;
+
+ /**
+ * 最低价格
+ */
+ @ExcelProperty(value = "最低价格")
+ private BigDecimal minPrice;
+
+ /**
+ * 最高价格
+ */
+ @ExcelProperty(value = "最高价格")
+ private BigDecimal maxPrice;
+
+ /**
+ * 总金额
+ */
+ @ExcelProperty(value = "总金额")
+ private BigDecimal amount;
+
+ /**
+ * 单价
+ */
+ @ExcelProperty(value = "单价")
+ private BigDecimal price;
+
+ /**
+ * 单位-字典
+ */
+ @ExcelProperty(value = "单位-字典")
+ private String unit;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoWorktimeVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoWorktimeVo.java
new file mode 100644
index 0000000..334181b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayBaohuoWorktimeVo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 包活工单工时关联视图对象 pay_baohuo_worktime
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayBaohuoWorktimeVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 包活工单ID
+ */
+ @ExcelProperty(value = "包活工单ID")
+ private Long woId;
+
+ /**
+ * 员工ID
+ */
+ @ExcelProperty(value = "员工ID")
+ private Long empId;
+
+ /**
+ * 包活工单员工关联表ID
+ */
+ @ExcelProperty(value = "包活工单员工关联表ID")
+ private Long bheId;
+
+ /**
+ * 开始时间
+ */
+ @ExcelProperty(value = "开始时间")
+ private Date stime;
+
+ /**
+ * 结束时间
+ */
+ @ExcelProperty(value = "结束时间")
+ private Date etime;
+
+ /**
+ * 有效时长
+ */
+ @ExcelProperty(value = "有效时长")
+ private BigDecimal validHours;
+
+ /**
+ * 工作日期
+ */
+ @ExcelProperty(value = "工作日期")
+ private Date date;
+
+ /**
+ * 入库日期
+ */
+ @ExcelProperty(value = "入库日期")
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieEmplyeeVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieEmplyeeVo.java
new file mode 100644
index 0000000..643ec0a
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieEmplyeeVo.java
@@ -0,0 +1,68 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 补贴和员工联系视图对象 pay_butie_emplyee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayButieEmplyeeVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 补贴id
+ */
+ @ExcelProperty(value = "补贴id")
+ private Long butieId;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 补贴扣减金额
+ */
+ @ExcelProperty(value = "补贴扣减金额")
+ private BigDecimal money;
+
+ /**
+ * 年月日期
+ */
+ @ExcelProperty(value = "年月日期")
+ private String date;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieVo.java
new file mode 100644
index 0000000..858fe2a
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayButieVo.java
@@ -0,0 +1,70 @@
+package com.ruoyi.pay.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 补贴扣减视图对象 pay_butie
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayButieVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 补贴或者扣减项名称
+ */
+ @ExcelProperty(value = "补贴或者扣减项名称")
+ private String name;
+
+ /**
+ * 固定(0-不固定 1-固定)
+ */
+ @ExcelProperty(value = "固定", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-不固定,1=-固定")
+ private String fixed;
+
+ /**
+ * 类型(0-减项 1-增项)
+ */
+ @ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-减项,1=-增项")
+ private String type;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-可用,1=-删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursVo.java
new file mode 100644
index 0000000..3ca4224
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursVo.java
@@ -0,0 +1,81 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 日工工时视图对象 pay_day_work_hours
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayDayWorkHoursVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 员工部门id
+ */
+ @ExcelProperty(value = "员工部门id")
+ private Long deptId;
+
+ /**
+ * 员工部门名称
+ */
+ @ExcelProperty(value = "员工部门名称")
+ private String deptName;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 日工日期
+ */
+ @ExcelProperty(value = "日工日期")
+ private Date date;
+
+ /**
+ * 日工年月
+ */
+ @ExcelProperty(value = "日工年月")
+ private String dwYearMonth;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String note;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDwHoursContrastVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDwHoursContrastVo.java
new file mode 100644
index 0000000..56d6089
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDwHoursContrastVo.java
@@ -0,0 +1,88 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 日工工时时间关联视图对象 pay_dw_hours_contrast
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayDwHoursContrastVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 日工工时id
+ */
+ @ExcelProperty(value = "日工工时id")
+ private Long dwHoursId;
+
+ /**
+ * 工时部门id
+ */
+ @ExcelProperty(value = "工时部门id")
+ private Long deptId;
+
+ /**
+ * 工时部门
+ */
+ @ExcelProperty(value = "工时部门")
+ private String deptName;
+
+ /**
+ * 上午开始时间
+ */
+ @ExcelProperty(value = "上午开始时间")
+ private Date startTime;
+
+ /**
+ * 上午结束时间
+ */
+ @ExcelProperty(value = "上午结束时间")
+ private Date endTime;
+
+ /**
+ * 时长
+ */
+ @ExcelProperty(value = "时长")
+ private BigDecimal hours;
+
+ /**
+ * 业务员
+ */
+ @ExcelProperty(value = "业务员")
+ private String salesman;
+
+ /**
+ * 是否帮工 (0:否 1:是)
+ */
+ @ExcelProperty(value = "是否帮工 (0:否 1:是)")
+ private Integer isHelper;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayEmployeeInfoVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayEmployeeInfoVo.java
new file mode 100644
index 0000000..4139188
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayEmployeeInfoVo.java
@@ -0,0 +1,198 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 员工信息视图对象 pay_employee_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayEmployeeInfoVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 登录用户id
+ */
+ @ExcelProperty(value = "登录用户id")
+ private Long userId;
+
+ /**
+ * 员工所属部门
+ */
+ @ExcelProperty(value = "员工所属部门")
+ private Long deptId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String name;
+
+ /**
+ * 性别(0:男 1:女)
+ */
+ @ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "性别(0:男 1:女)")
+ private String sex;
+
+ /**
+ * 年龄
+ */
+ @ExcelProperty(value = "年龄")
+ private Long age;
+
+ /**
+ * 手机号
+ */
+ @ExcelProperty(value = "手机号")
+ private String phone;
+
+ /**
+ * 身份证号
+ */
+ @ExcelProperty(value = "身份证号")
+ private String idcard;
+
+ /**
+ * 银行卡号
+ */
+ @ExcelProperty(value = "银行卡号")
+ private String bankCardNumber;
+
+ /**
+ * 开户行
+ */
+ @ExcelProperty(value = "开户行")
+ private String openingBank;
+
+ /**
+ * 基本工资
+ */
+ @ExcelProperty(value = "基本工资")
+ private BigDecimal basicSalary;
+
+ /**
+ * 日薪
+ */
+ @ExcelProperty(value = "日薪")
+ private BigDecimal daySalary;
+
+ /**
+ * 时薪
+ */
+ @ExcelProperty(value = "时薪")
+ private BigDecimal hourSalary;
+
+ /**
+ * 休息类型(0 :周休 1:非周休 2:天休 3:小时 4:包月 5:周二天)
+ */
+ @ExcelProperty(value = "休息类型(0 :周休 1:非周休 2:天休 3:小时 4:包月 5:周二天)")
+ private String restType;
+
+ /**
+ * 每日应出勤小时数
+ */
+ @ExcelProperty(value = "每日应出勤小时数")
+ private BigDecimal hoursPerDay;
+
+ /**
+ * 工资计算类型(
+0:日薪(日工+包活)
+1:月薪(日工+包活)
+2:喷涂按小时数(16/17、17/18)
+3.外贸按小时数(17/21)
+4.包月工资)
+
+ */
+ @ExcelProperty(value = "工资计算类型")
+ private String payCalcType;
+
+ /**
+ * 学历
+ */
+ @ExcelProperty(value = "学历")
+ private String education;
+
+ /**
+ * 家庭住址
+ */
+ @ExcelProperty(value = "家庭住址")
+ private String address;
+
+ /**
+ * 紧急联系人
+ */
+ @ExcelProperty(value = "紧急联系人")
+ private String contact;
+
+ /**
+ * 紧急联系人电话
+ */
+ @ExcelProperty(value = "紧急联系人电话")
+ private String contactPhone;
+
+ /**
+ * 质检(1-是 0-否)
+ */
+ @ExcelProperty(value = "质检(1-是 0-否)")
+ private Integer zhijian;
+
+ /**
+ * 业务员(1-是 0-否)
+ */
+ @ExcelProperty(value = "业务员(1-是 0-否)")
+ private Integer yewu;
+
+ /**
+ * 合同补助开始时间
+ */
+ @ExcelProperty(value = "合同补助开始时间")
+ private Date htstime;
+
+ /**
+ * 合同补助结束时间
+ */
+ @ExcelProperty(value = "合同补助结束时间")
+ private Date htetime;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=:删除,0=:未删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayMaterialVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayMaterialVo.java
new file mode 100644
index 0000000..422647b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayMaterialVo.java
@@ -0,0 +1,73 @@
+package com.ruoyi.pay.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 毛料信息视图对象 pay_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayMaterialVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 毛料名称
+ */
+ @ExcelProperty(value = "毛料名称")
+ private String name;
+
+ /**
+ * 材料种类
+ */
+ @ExcelProperty(value = "材料种类")
+ private String materialType;
+
+ /**
+ * 规格
+ */
+ @ExcelProperty(value = "规格")
+ private String specification;
+
+ /**
+ * 尺寸
+ */
+ @ExcelProperty(value = "尺寸")
+ private String size;
+
+ /**
+ * 单位
+ */
+ @ExcelProperty(value = "单位")
+ private String unit;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductMaterialVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductMaterialVo.java
new file mode 100644
index 0000000..c221ee7
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductMaterialVo.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 产品毛料关联视图对象 pay_product_material
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayProductMaterialVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 毛料ID
+ */
+ @ExcelProperty(value = "毛料ID")
+ private Long materialId;
+
+ /**
+ * 产品ID
+ */
+ @ExcelProperty(value = "产品ID")
+ private Long productId;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductsVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductsVo.java
new file mode 100644
index 0000000..49ecadc
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayProductsVo.java
@@ -0,0 +1,137 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 产品视图对象 pay_products
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayProductsVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 毛料ID
+ */
+ @ExcelProperty(value = "毛料ID")
+ private Long materialId;
+
+ /**
+ * 产品名称
+ */
+ @ExcelProperty(value = "产品名称")
+ private String productName;
+
+ /**
+ * 网机编号
+ */
+ @ExcelProperty(value = "网机编号")
+ private String netMachineNo;
+
+ /**
+ * 图纸编号
+ */
+ @ExcelProperty(value = "图纸编号")
+ private String drawingNum;
+
+ /**
+ * 工序
+ */
+ @ExcelProperty(value = "工序")
+ private String process;
+
+ /**
+ * 规格型号
+ */
+ @ExcelProperty(value = "规格型号")
+ private String model;
+
+ /**
+ * 产品单位
+ */
+ @ExcelProperty(value = "产品单位")
+ private String danwei;
+
+ /**
+ * 毛料名称
+ */
+ @ExcelProperty(value = "毛料名称")
+ private String originName;
+
+ /**
+ * 毛料规格
+ */
+ @ExcelProperty(value = "毛料规格")
+ private String originModel;
+
+ /**
+ * 毛料尺寸
+ */
+ @ExcelProperty(value = "毛料尺寸")
+ private String originSize;
+
+ /**
+ * 毛料单位
+ */
+ @ExcelProperty(value = "毛料单位")
+ private String originDanwei;
+
+ /**
+ * 入库时间
+ */
+ @ExcelProperty(value = "入库时间")
+ private Date storageTime;
+
+ /**
+ * 最低价格
+ */
+ @ExcelProperty(value = "最低价格")
+ private BigDecimal minPrice;
+
+ /**
+ * 最高价格
+ */
+ @ExcelProperty(value = "最高价格")
+ private BigDecimal maxPrice;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=:删除,0=:未删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayRequireAttendanceReportVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayRequireAttendanceReportVo.java
new file mode 100644
index 0000000..bcc7579
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayRequireAttendanceReportVo.java
@@ -0,0 +1,122 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 应出勤报视图对象 pay_require_attendance_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayRequireAttendanceReportVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 年份
+ */
+ @ExcelProperty(value = "年份")
+ private String year;
+
+ /**
+ * 月份
+ */
+ @ExcelProperty(value = "月份")
+ private String month;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 部门名称
+ */
+ @ExcelProperty(value = "部门名称")
+ private String deptName;
+
+ /**
+ * 休息类别
+ */
+ @ExcelProperty(value = "休息类别")
+ private String restType;
+
+ /**
+ * 应出勤天数
+ */
+ @ExcelProperty(value = "应出勤天数")
+ private Long requireDays;
+
+ /**
+ * 出勤天数
+ */
+ @ExcelProperty(value = "出勤天数")
+ private Long avtiveDays;
+
+ /**
+ * 出勤小时数
+ */
+ @ExcelProperty(value = "出勤小时数")
+ private BigDecimal attendanceHours;
+
+ /**
+ * 加班小时数
+ */
+ @ExcelProperty(value = "加班小时数")
+ private BigDecimal overtimeHours;
+
+ /**
+ * 放假天数
+ */
+ @ExcelProperty(value = "放假天数")
+ private Long holidays;
+
+ /**
+ * 放假小时数
+ */
+ @ExcelProperty(value = "放假小时数")
+ private BigDecimal holidayHours;
+
+ /**
+ *
+ */
+ @ExcelProperty(value = "")
+ private BigDecimal leaveDays;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySalaryReportVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySalaryReportVo.java
new file mode 100644
index 0000000..bcf6037
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySalaryReportVo.java
@@ -0,0 +1,224 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 工资明细总视图对象 pay_salary_report
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PaySalaryReportVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 年
+ */
+ @ExcelProperty(value = "年")
+ private String year;
+
+ /**
+ * 月
+ */
+ @ExcelProperty(value = "月")
+ private String month;
+
+ /**
+ * 部门id
+ */
+ @ExcelProperty(value = "部门id")
+ private Long deptId;
+
+ /**
+ * 部门名称
+ */
+ @ExcelProperty(value = "部门名称")
+ private String deptName;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String employeeName;
+
+ /**
+ * 基本工资
+ */
+ @ExcelProperty(value = "基本工资")
+ private BigDecimal basicSalary;
+
+ /**
+ * 实际出勤天数
+ */
+ @ExcelProperty(value = "实际出勤天数")
+ private Long actuallyDays;
+
+ /**
+ * 实际出勤小时数
+ */
+ @ExcelProperty(value = "实际出勤小时数")
+ private BigDecimal actuallyHours;
+
+ /**
+ * 出勤工时
+ */
+ @ExcelProperty(value = "出勤工时")
+ private BigDecimal dayWorkHours;
+
+ /**
+ * 包活工时
+ */
+ @ExcelProperty(value = "包活工时")
+ private BigDecimal workOrderHours;
+
+ /**
+ * 加班工时
+ */
+ @ExcelProperty(value = "加班工时")
+ private BigDecimal overtimeWorkHours;
+
+ /**
+ * 日工帮工工时
+ */
+ @ExcelProperty(value = " 日工帮工工时")
+ private BigDecimal rigongHelpHours;
+
+ /**
+ * 日工工资
+ */
+ @ExcelProperty(value = "日工工资")
+ private BigDecimal dayWorkPay;
+
+ /**
+ * 包活工资
+ */
+ @ExcelProperty(value = "包活工资")
+ private BigDecimal workOrderPay;
+
+ /**
+ * 加班工资
+ */
+ @ExcelProperty(value = "加班工资")
+ private BigDecimal overtime;
+
+ /**
+ * 帮工工资
+ */
+ @ExcelProperty(value = "帮工工资")
+ private BigDecimal banggongPay;
+
+ /**
+ * 值班/拉货工资 废弃
+ */
+ @ExcelProperty(value = "值班/拉货工资 废弃")
+ private BigDecimal zhibanOrLahuo;
+
+ /**
+ * 节假日工资 废弃
+ */
+ @ExcelProperty(value = "节假日工资 废弃")
+ private BigDecimal holiday;
+
+ /**
+ * 岗位津贴 废弃
+ */
+ @ExcelProperty(value = "岗位津贴 废弃")
+ private BigDecimal post;
+
+ /**
+ * 话费及其他补贴 废弃
+ */
+ @ExcelProperty(value = "话费及其他补贴 废弃")
+ private BigDecimal phoneCharge;
+
+ /**
+ * 合同补 废弃
+ */
+ @ExcelProperty(value = "合同补 废弃")
+ private BigDecimal contract;
+
+ /**
+ * 全勤奖 废弃
+ */
+ @ExcelProperty(value = "全勤奖 废弃")
+ private BigDecimal fullTime;
+
+ /**
+ * 上月差异 废弃
+ */
+ @ExcelProperty(value = "上月差异 废弃")
+ private BigDecimal diffOfLastMonth;
+
+ /**
+ * 应付工资
+ */
+ @ExcelProperty(value = "应付工资")
+ private BigDecimal shoudPayMoney;
+
+ /**
+ * 扣款忘刷迟到 废弃
+ */
+ @ExcelProperty(value = "扣款忘刷迟到 废弃")
+ private BigDecimal late;
+
+ /**
+ * 扣款保险/党费 废弃
+ */
+ @ExcelProperty(value = "扣款保险/党费 废弃")
+ private BigDecimal insurance;
+
+ /**
+ * 实发工资
+ */
+ @ExcelProperty(value = "实发工资")
+ private BigDecimal actuallyPayMoney;
+
+ /**
+ * 员工补贴对象
+ */
+ @ExcelProperty(value = "员工补贴对象")
+ private String allButieData;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String note;
+
+ /**
+ * 员工工资是否可查
+ */
+ @ExcelProperty(value = "员工工资是否可查")
+ private Long empQuery;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubInfoVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubInfoVo.java
new file mode 100644
index 0000000..7c0928a
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubInfoVo.java
@@ -0,0 +1,82 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 租户订阅信息视图对象 pay_sub_info
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PaySubInfoVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 订阅ID
+ */
+ @ExcelProperty(value = "订阅ID")
+ private Long id;
+
+ /**
+ * 公司ID
+ */
+ @ExcelProperty(value = "公司ID")
+ private Long tenantId;
+
+ /**
+ * 公司名称
+ */
+ @ExcelProperty(value = "公司名称")
+ private String companyName;
+
+ /**
+ * 开始时间
+ */
+ @ExcelProperty(value = "开始时间")
+ private Date startTime;
+
+ /**
+ * 结束时间
+ */
+ @ExcelProperty(value = "结束时间")
+ private Date endTime;
+
+ /**
+ * 激活情况(0已激活 1停用)
+ */
+ @ExcelProperty(value = "激活情况", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=已激活,1=停用")
+ private String active;
+
+ /**
+ * 订阅计划ID
+ */
+ @ExcelProperty(value = "订阅计划ID")
+ private Long subplanId;
+
+ /**
+ * 订阅名称
+ */
+ @ExcelProperty(value = "订阅名称")
+ private String subplanName;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubPlanVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubPlanVo.java
new file mode 100644
index 0000000..72596ed
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PaySubPlanVo.java
@@ -0,0 +1,55 @@
+package com.ruoyi.pay.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 订阅套餐视图对象 pay_sub_plan
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PaySubPlanVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 订阅ID
+ */
+ @ExcelProperty(value = "订阅ID")
+ private Long id;
+
+ /**
+ * 订阅名称
+ */
+ @ExcelProperty(value = "订阅名称")
+ private String name;
+
+ /**
+ * 价格
+ */
+ @ExcelProperty(value = "价格")
+ private Long price;
+
+ /**
+ * 计划描述
+ */
+ @ExcelProperty(value = "计划描述")
+ private String description;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayTenantVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayTenantVo.java
new file mode 100644
index 0000000..c0a9a56
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayTenantVo.java
@@ -0,0 +1,67 @@
+package com.ruoyi.pay.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 租户视图对象 pay_tenant
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayTenantVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long id;
+
+ /**
+ * 公司名称
+ */
+ @ExcelProperty(value = "公司名称")
+ private String name;
+
+ /**
+ * 公司电话
+ */
+ @ExcelProperty(value = "公司电话")
+ private String phone;
+
+ /**
+ * 公司固话
+ */
+ @ExcelProperty(value = "公司固话")
+ private String fixPhone;
+
+ /**
+ * 公司地址
+ */
+ @ExcelProperty(value = "公司地址")
+ private String address;
+
+ /**
+ * 公司网址
+ */
+ @ExcelProperty(value = "公司网址")
+ private String website;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java
new file mode 100644
index 0000000..9a3ffc2
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java
@@ -0,0 +1,161 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 包活派工单视图对象 pay_work_order_baohuo
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayWorkOrderBaohuoVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 归档ID
+ */
+ @ExcelProperty(value = "归档ID")
+ private String archiveId;
+
+ /**
+ * 产品ID
+ */
+ @ExcelProperty(value = "产品ID")
+ private Long productId;
+
+ /**
+ * 部门ID
+ */
+ @ExcelProperty(value = "部门ID")
+ private Long deptId;
+
+ /**
+ * 车间
+ */
+ @ExcelProperty(value = "车间")
+ private String workshop;
+
+ /**
+ * 包活工单名称
+ */
+ @ExcelProperty(value = "包活工单名称")
+ private String name;
+
+ /**
+ * 工作内容
+ */
+ @ExcelProperty(value = "工作内容")
+ private String content;
+
+ /**
+ * 加工数量
+ */
+ @ExcelProperty(value = "加工数量")
+ private BigDecimal productNum;
+
+ /**
+ * 产品单价
+ */
+ @ExcelProperty(value = "产品单价")
+ private BigDecimal price;
+
+ /**
+ * 单位
+ */
+ @ExcelProperty(value = "单位")
+ private String unit;
+
+ /**
+ * 加工总金额
+ */
+ @ExcelProperty(value = "加工总金额")
+ private BigDecimal amount;
+
+ /**
+ * 开始时间
+ */
+ @ExcelProperty(value = "开始时间")
+ private Date beginTime;
+
+ /**
+ * 结束时间
+ */
+ @ExcelProperty(value = "结束时间")
+ private Date endTime;
+
+ /**
+ * 质检人员
+ */
+ @ExcelProperty(value = "质检人员")
+ private String qualityName;
+
+ /**
+ * 检验说明
+ */
+ @ExcelProperty(value = "检验说明")
+ private String qualityRemark;
+
+ /**
+ * 入库时间
+ */
+ @ExcelProperty(value = "入库时间")
+ private Date instorageTime;
+
+ /**
+ * 入库人员
+ */
+ @ExcelProperty(value = "入库人员")
+ private String instorageName;
+
+ /**
+ * 实际入库数量
+ */
+ @ExcelProperty(value = "实际入库数量")
+ private Long instorageNum;
+
+ /**
+ * 项目经理
+ */
+ @ExcelProperty(value = "项目经理")
+ private String managerName;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-可用,1=-删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderEmployeeVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderEmployeeVo.java
new file mode 100644
index 0000000..1a1c857
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderEmployeeVo.java
@@ -0,0 +1,138 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 工单和员工联系视图对象 pay_work_order_employee
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayWorkOrderEmployeeVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 工单id
+ */
+ @ExcelProperty(value = "工单id")
+ private Long workOrderId;
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "员工id")
+ private Long employeeId;
+
+ /**
+ * 部门ID
+ */
+ @ExcelProperty(value = "部门ID")
+ private Long deptId;
+
+ /**
+ * 类型-用于区别工单
+ */
+ @ExcelProperty(value = "类型-用于区别工单")
+ private String type;
+
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "员工姓名")
+ private String empName;
+
+ /**
+ * 开始时间 弃用
+ */
+ @ExcelProperty(value = "开始时间 弃用")
+ private Date startTime;
+
+ /**
+ * 结束时间 弃用
+ */
+ @ExcelProperty(value = "结束时间 弃用")
+ private Date endTime;
+
+ /**
+ * 有效工作时长 弃用
+ */
+ @ExcelProperty(value = "有效工作时长 弃用")
+ private BigDecimal validHours;
+
+ /**
+ * 干活日期 弃用
+ */
+ @ExcelProperty(value = "干活日期 弃用")
+ private Date date;
+
+ /**
+ * 年月(yyyy-MM)
+ */
+ @ExcelProperty(value = "年月", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "y=yyy-MM")
+ private String month;
+
+ /**
+ * 工序类型
+ */
+ @ExcelProperty(value = "工序类型")
+ private String processingType;
+
+ /**
+ * 工序单价
+ */
+ @ExcelProperty(value = "工序单价")
+ private BigDecimal processingPrice;
+
+ /**
+ * 工序加工数量
+ */
+ @ExcelProperty(value = "工序加工数量")
+ private Long processingNum;
+
+ /**
+ * 总金额
+ */
+ @ExcelProperty(value = "总金额")
+ private BigDecimal amount;
+
+ /**
+ * 是否帮工(0-否 1-是)
+ */
+ @ExcelProperty(value = "是否帮工", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-否,1=-是")
+ private Integer helper;
+
+ /**
+ * 入库日期
+ */
+ @ExcelProperty(value = "入库日期")
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderInfoVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderInfoVo.java
new file mode 100644
index 0000000..a280250
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderInfoVo.java
@@ -0,0 +1,114 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 工单信息视图对象 pay_work_order_info
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayWorkOrderInfoVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 产品id
+ */
+ @ExcelProperty(value = "产品id")
+ private Long productId;
+
+ /**
+ * 工单所属部门id
+ */
+ @ExcelProperty(value = "工单所属部门id")
+ private Long deptId;
+
+ /**
+ * 件数
+ */
+ @ExcelProperty(value = "件数")
+ private Long numbers;
+
+ /**
+ * 单价
+ */
+ @ExcelProperty(value = "单价")
+ private BigDecimal price;
+
+ /**
+ * 派单人
+ */
+ @ExcelProperty(value = "派单人")
+ private String bookPerson;
+
+ /**
+ * 质检人
+ */
+ @ExcelProperty(value = "质检人")
+ private String qualityPerson;
+
+ /**
+ * 工单总金额
+ */
+ @ExcelProperty(value = "工单总金额")
+ private BigDecimal totalAmount;
+
+ /**
+ * 工单完成日期
+ */
+ @ExcelProperty(value = "工单完成日期")
+ private Date completeTime;
+
+ /**
+ * 工单完成状态(0未完成 1完成)
+ */
+ @ExcelProperty(value = "工单完成状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=未完成,1=完成")
+ private String state;
+
+ /**
+ * 包活总工时
+ */
+ @ExcelProperty(value = "包活总工时")
+ private BigDecimal baohuoHours;
+
+ /**
+ * 删除标志(1:删除 0:未删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=:删除,0=:未删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderTuzhiVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderTuzhiVo.java
new file mode 100644
index 0000000..9c5e610
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderTuzhiVo.java
@@ -0,0 +1,167 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 图纸流程卡工单视图对象 pay_work_order_tuzhi
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayWorkOrderTuzhiVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 归档ID
+ */
+ @ExcelProperty(value = "归档ID")
+ private String archiveId;
+
+ /**
+ * 产品ID
+ */
+ @ExcelProperty(value = "产品ID")
+ private Long productId;
+
+ /**
+ * 网机编号
+ */
+ @ExcelProperty(value = "网机编号")
+ private String machineId;
+
+ /**
+ * 部门ID
+ */
+ @ExcelProperty(value = "部门ID")
+ private Long deptId;
+
+ /**
+ * 车间
+ */
+ @ExcelProperty(value = "车间")
+ private String workshop;
+
+ /**
+ * 图纸编号及名称
+ */
+ @ExcelProperty(value = "图纸编号及名称")
+ private String name;
+
+ /**
+ * 加工数量
+ */
+ @ExcelProperty(value = "加工数量")
+ private Long productNum;
+
+ /**
+ * 原材料
+ */
+ @ExcelProperty(value = "原材料")
+ private String productMaterial;
+
+ /**
+ * 规格
+ */
+ @ExcelProperty(value = "规格")
+ private String productSpecification;
+
+ /**
+ * 原材料数量
+ */
+ @ExcelProperty(value = "原材料数量")
+ private Long materialNum;
+
+ /**
+ * 字典-下料类型ID
+ */
+ @ExcelProperty(value = "字典-下料类型ID ")
+ private String xialiao;
+
+ /**
+ * 字典-加工类型ID
+ */
+ @ExcelProperty(value = "字典-加工类型ID")
+ private String processingType;
+
+ /**
+ * 加工单价
+ */
+ @ExcelProperty(value = "加工单价")
+ private BigDecimal price;
+
+ /**
+ * 开始时间
+ */
+ @ExcelProperty(value = "开始时间")
+ private Date beginTime;
+
+ /**
+ * 结束时间
+ */
+ @ExcelProperty(value = "结束时间")
+ private Date endTime;
+
+ /**
+ * 质检人员
+ */
+ @ExcelProperty(value = "质检人员")
+ private String qualityName;
+
+ /**
+ * 入库日期
+ */
+ @ExcelProperty(value = "入库日期")
+ private Date instorageTime;
+
+ /**
+ * 入库人员
+ */
+ @ExcelProperty(value = "入库人员")
+ private String instorageName;
+
+ /**
+ * 实际入库数量
+ */
+ @ExcelProperty(value = "实际入库数量")
+ private Long instorageNum;
+
+ /**
+ * 删除标志(0-可用 1-删除)
+ */
+ @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=-可用,1=-删除")
+ private Integer deleted;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkTimeVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkTimeVo.java
new file mode 100644
index 0000000..ade6214
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkTimeVo.java
@@ -0,0 +1,82 @@
+package com.ruoyi.pay.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 员工工时时间段视图对象 pay_work_time
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PayWorkTimeVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 租户id
+ */
+ @ExcelProperty(value = "租户id")
+ private Long tenantId;
+
+ /**
+ * 员工ID
+ */
+ @ExcelProperty(value = "员工ID")
+ private Long empId;
+
+ /**
+ * 员工工时ID
+ */
+ @ExcelProperty(value = "员工工时ID")
+ private Long woeId;
+
+ /**
+ * 开始时间
+ */
+ @ExcelProperty(value = "开始时间")
+ private Date stime;
+
+ /**
+ * 结束时间
+ */
+ @ExcelProperty(value = "结束时间")
+ private Date etime;
+
+ /**
+ * 有效时长
+ */
+ @ExcelProperty(value = "有效时长")
+ private BigDecimal validHours;
+
+ /**
+ * 工作日期
+ */
+ @ExcelProperty(value = "工作日期")
+ private Date date;
+
+ /**
+ * 入库日期
+ */
+ @ExcelProperty(value = "入库日期")
+ private Date intime;
+
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayAttendanceMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayAttendanceMapper.java
new file mode 100644
index 0000000..0fd6257
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayAttendanceMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayAttendance;
+import com.ruoyi.pay.domain.vo.PayAttendanceVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 考勤Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayAttendanceMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoEmployeeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoEmployeeMapper.java
new file mode 100644
index 0000000..1b6df2f
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoEmployeeMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayBaohuoEmployee;
+import com.ruoyi.pay.domain.vo.PayBaohuoEmployeeVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 包活工单员工关联Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayBaohuoEmployeeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoProductMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoProductMapper.java
new file mode 100644
index 0000000..d5e75e9
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoProductMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayBaohuoProduct;
+import com.ruoyi.pay.domain.vo.PayBaohuoProductVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 包活工单产品关联Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayBaohuoProductMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java
new file mode 100644
index 0000000..4277423
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayBaohuoWorktime;
+import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 包活工单工时关联Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayBaohuoWorktimeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieEmplyeeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieEmplyeeMapper.java
new file mode 100644
index 0000000..a203c68
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieEmplyeeMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayButieEmplyee;
+import com.ruoyi.pay.domain.vo.PayButieEmplyeeVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 补贴和员工联系Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayButieEmplyeeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieMapper.java
new file mode 100644
index 0000000..025c13b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayButieMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayButie;
+import com.ruoyi.pay.domain.vo.PayButieVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 补贴扣减Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayButieMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java
new file mode 100644
index 0000000..48a899d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayDayWorkHours;
+import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 日工工时Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayDayWorkHoursMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java
new file mode 100644
index 0000000..2130dee
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayDwHoursContrast;
+import com.ruoyi.pay.domain.vo.PayDwHoursContrastVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 日工工时时间关联Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayDwHoursContrastMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java
new file mode 100644
index 0000000..54e68fd
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayEmployeeInfo;
+import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 员工信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayEmployeeInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayMaterialMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayMaterialMapper.java
new file mode 100644
index 0000000..0482f11
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayMaterialMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayMaterial;
+import com.ruoyi.pay.domain.vo.PayMaterialVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 毛料信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayMaterialMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductMaterialMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductMaterialMapper.java
new file mode 100644
index 0000000..1bb68e2
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductMaterialMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayProductMaterial;
+import com.ruoyi.pay.domain.vo.PayProductMaterialVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 产品毛料关联Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayProductMaterialMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductsMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductsMapper.java
new file mode 100644
index 0000000..bc37fbf
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayProductsMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayProducts;
+import com.ruoyi.pay.domain.vo.PayProductsVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 产品Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayProductsMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java
new file mode 100644
index 0000000..16bd0fd
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayRequireAttendanceReport;
+import com.ruoyi.pay.domain.vo.PayRequireAttendanceReportVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 应出勤报Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayRequireAttendanceReportMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java
new file mode 100644
index 0000000..ba61ffe
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PaySalaryReport;
+import com.ruoyi.pay.domain.vo.PaySalaryReportVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 工资明细总Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PaySalaryReportMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubInfoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubInfoMapper.java
new file mode 100644
index 0000000..310832d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubInfoMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PaySubInfo;
+import com.ruoyi.pay.domain.vo.PaySubInfoVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 租户订阅信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface PaySubInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubPlanMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubPlanMapper.java
new file mode 100644
index 0000000..fe34212
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySubPlanMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PaySubPlan;
+import com.ruoyi.pay.domain.vo.PaySubPlanVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 订阅套餐Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface PaySubPlanMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayTenantMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayTenantMapper.java
new file mode 100644
index 0000000..c4a843d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayTenantMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayTenant;
+import com.ruoyi.pay.domain.vo.PayTenantVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 租户Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayTenantMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java
new file mode 100644
index 0000000..c9c5c27
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayWorkOrderBaohuo;
+import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 包活派工单Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayWorkOrderBaohuoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderEmployeeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderEmployeeMapper.java
new file mode 100644
index 0000000..8631a9d
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderEmployeeMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayWorkOrderEmployee;
+import com.ruoyi.pay.domain.vo.PayWorkOrderEmployeeVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 工单和员工联系Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayWorkOrderEmployeeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderInfoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderInfoMapper.java
new file mode 100644
index 0000000..d496f03
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderInfoMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayWorkOrderInfo;
+import com.ruoyi.pay.domain.vo.PayWorkOrderInfoVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 工单信息Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayWorkOrderInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderTuzhiMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderTuzhiMapper.java
new file mode 100644
index 0000000..1bc369c
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderTuzhiMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayWorkOrderTuzhi;
+import com.ruoyi.pay.domain.vo.PayWorkOrderTuzhiVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 图纸流程卡工单Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayWorkOrderTuzhiMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkTimeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkTimeMapper.java
new file mode 100644
index 0000000..8caa3c4
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkTimeMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.pay.mapper;
+
+import com.ruoyi.pay.domain.PayWorkTime;
+import com.ruoyi.pay.domain.vo.PayWorkTimeVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 员工工时时间段Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface PayWorkTimeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayAttendanceService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayAttendanceService.java
new file mode 100644
index 0000000..c592815
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayAttendanceService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayAttendance;
+import com.ruoyi.pay.domain.vo.PayAttendanceVo;
+import com.ruoyi.pay.domain.bo.PayAttendanceBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 考勤Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayAttendanceService {
+
+ /**
+ * 查询考勤
+ */
+ PayAttendanceVo queryById(Long id);
+
+ /**
+ * 查询考勤列表
+ */
+ TableDataInfo queryPageList(PayAttendanceBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询考勤列表
+ */
+ List queryList(PayAttendanceBo bo);
+
+ /**
+ * 新增考勤
+ */
+ Boolean insertByBo(PayAttendanceBo bo);
+
+ /**
+ * 修改考勤
+ */
+ Boolean updateByBo(PayAttendanceBo bo);
+
+ /**
+ * 校验并批量删除考勤信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoEmployeeService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoEmployeeService.java
new file mode 100644
index 0000000..3392850
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoEmployeeService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayBaohuoEmployee;
+import com.ruoyi.pay.domain.vo.PayBaohuoEmployeeVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoEmployeeBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 包活工单员工关联Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayBaohuoEmployeeService {
+
+ /**
+ * 查询包活工单员工关联
+ */
+ PayBaohuoEmployeeVo queryById(Long id);
+
+ /**
+ * 查询包活工单员工关联列表
+ */
+ TableDataInfo queryPageList(PayBaohuoEmployeeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询包活工单员工关联列表
+ */
+ List queryList(PayBaohuoEmployeeBo bo);
+
+ /**
+ * 新增包活工单员工关联
+ */
+ Boolean insertByBo(PayBaohuoEmployeeBo bo);
+
+ /**
+ * 修改包活工单员工关联
+ */
+ Boolean updateByBo(PayBaohuoEmployeeBo bo);
+
+ /**
+ * 校验并批量删除包活工单员工关联信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoProductService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoProductService.java
new file mode 100644
index 0000000..acc48cd
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoProductService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayBaohuoProduct;
+import com.ruoyi.pay.domain.vo.PayBaohuoProductVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoProductBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 包活工单产品关联Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayBaohuoProductService {
+
+ /**
+ * 查询包活工单产品关联
+ */
+ PayBaohuoProductVo queryById(Long id);
+
+ /**
+ * 查询包活工单产品关联列表
+ */
+ TableDataInfo queryPageList(PayBaohuoProductBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询包活工单产品关联列表
+ */
+ List queryList(PayBaohuoProductBo bo);
+
+ /**
+ * 新增包活工单产品关联
+ */
+ Boolean insertByBo(PayBaohuoProductBo bo);
+
+ /**
+ * 修改包活工单产品关联
+ */
+ Boolean updateByBo(PayBaohuoProductBo bo);
+
+ /**
+ * 校验并批量删除包活工单产品关联信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoWorktimeService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoWorktimeService.java
new file mode 100644
index 0000000..a581b1e
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayBaohuoWorktimeService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayBaohuoWorktime;
+import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo;
+import com.ruoyi.pay.domain.bo.PayBaohuoWorktimeBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 包活工单工时关联Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayBaohuoWorktimeService {
+
+ /**
+ * 查询包活工单工时关联
+ */
+ PayBaohuoWorktimeVo queryById(Long id);
+
+ /**
+ * 查询包活工单工时关联列表
+ */
+ TableDataInfo queryPageList(PayBaohuoWorktimeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询包活工单工时关联列表
+ */
+ List queryList(PayBaohuoWorktimeBo bo);
+
+ /**
+ * 新增包活工单工时关联
+ */
+ Boolean insertByBo(PayBaohuoWorktimeBo bo);
+
+ /**
+ * 修改包活工单工时关联
+ */
+ Boolean updateByBo(PayBaohuoWorktimeBo bo);
+
+ /**
+ * 校验并批量删除包活工单工时关联信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieEmplyeeService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieEmplyeeService.java
new file mode 100644
index 0000000..e08ac02
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieEmplyeeService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayButieEmplyee;
+import com.ruoyi.pay.domain.vo.PayButieEmplyeeVo;
+import com.ruoyi.pay.domain.bo.PayButieEmplyeeBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 补贴和员工联系Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayButieEmplyeeService {
+
+ /**
+ * 查询补贴和员工联系
+ */
+ PayButieEmplyeeVo queryById(Long id);
+
+ /**
+ * 查询补贴和员工联系列表
+ */
+ TableDataInfo queryPageList(PayButieEmplyeeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询补贴和员工联系列表
+ */
+ List queryList(PayButieEmplyeeBo bo);
+
+ /**
+ * 新增补贴和员工联系
+ */
+ Boolean insertByBo(PayButieEmplyeeBo bo);
+
+ /**
+ * 修改补贴和员工联系
+ */
+ Boolean updateByBo(PayButieEmplyeeBo bo);
+
+ /**
+ * 校验并批量删除补贴和员工联系信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieService.java
new file mode 100644
index 0000000..d3876c7
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayButieService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayButie;
+import com.ruoyi.pay.domain.vo.PayButieVo;
+import com.ruoyi.pay.domain.bo.PayButieBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 补贴扣减Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayButieService {
+
+ /**
+ * 查询补贴扣减
+ */
+ PayButieVo queryById(Long id);
+
+ /**
+ * 查询补贴扣减列表
+ */
+ TableDataInfo queryPageList(PayButieBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询补贴扣减列表
+ */
+ List queryList(PayButieBo bo);
+
+ /**
+ * 新增补贴扣减
+ */
+ Boolean insertByBo(PayButieBo bo);
+
+ /**
+ * 修改补贴扣减
+ */
+ Boolean updateByBo(PayButieBo bo);
+
+ /**
+ * 校验并批量删除补贴扣减信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java
new file mode 100644
index 0000000..4025a15
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayDayWorkHours;
+import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
+import com.ruoyi.pay.domain.bo.PayDayWorkHoursBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 日工工时Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayDayWorkHoursService {
+
+ /**
+ * 查询日工工时
+ */
+ PayDayWorkHoursVo queryById(Long id);
+
+ /**
+ * 查询日工工时列表
+ */
+ TableDataInfo queryPageList(PayDayWorkHoursBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询日工工时列表
+ */
+ List queryList(PayDayWorkHoursBo bo);
+
+ /**
+ * 新增日工工时
+ */
+ Boolean insertByBo(PayDayWorkHoursBo bo);
+
+ /**
+ * 修改日工工时
+ */
+ Boolean updateByBo(PayDayWorkHoursBo bo);
+
+ /**
+ * 校验并批量删除日工工时信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDwHoursContrastService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDwHoursContrastService.java
new file mode 100644
index 0000000..b1e2ba1
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDwHoursContrastService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayDwHoursContrast;
+import com.ruoyi.pay.domain.vo.PayDwHoursContrastVo;
+import com.ruoyi.pay.domain.bo.PayDwHoursContrastBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 日工工时时间关联Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayDwHoursContrastService {
+
+ /**
+ * 查询日工工时时间关联
+ */
+ PayDwHoursContrastVo queryById(Long id);
+
+ /**
+ * 查询日工工时时间关联列表
+ */
+ TableDataInfo queryPageList(PayDwHoursContrastBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询日工工时时间关联列表
+ */
+ List queryList(PayDwHoursContrastBo bo);
+
+ /**
+ * 新增日工工时时间关联
+ */
+ Boolean insertByBo(PayDwHoursContrastBo bo);
+
+ /**
+ * 修改日工工时时间关联
+ */
+ Boolean updateByBo(PayDwHoursContrastBo bo);
+
+ /**
+ * 校验并批量删除日工工时时间关联信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayEmployeeInfoService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayEmployeeInfoService.java
new file mode 100644
index 0000000..2a17bbd
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayEmployeeInfoService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayEmployeeInfo;
+import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo;
+import com.ruoyi.pay.domain.bo.PayEmployeeInfoBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 员工信息Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayEmployeeInfoService {
+
+ /**
+ * 查询员工信息
+ */
+ PayEmployeeInfoVo queryById(Long id);
+
+ /**
+ * 查询员工信息列表
+ */
+ TableDataInfo queryPageList(PayEmployeeInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询员工信息列表
+ */
+ List queryList(PayEmployeeInfoBo bo);
+
+ /**
+ * 新增员工信息
+ */
+ Boolean insertByBo(PayEmployeeInfoBo bo);
+
+ /**
+ * 修改员工信息
+ */
+ Boolean updateByBo(PayEmployeeInfoBo bo);
+
+ /**
+ * 校验并批量删除员工信息信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayMaterialService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayMaterialService.java
new file mode 100644
index 0000000..3762aea
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayMaterialService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayMaterial;
+import com.ruoyi.pay.domain.vo.PayMaterialVo;
+import com.ruoyi.pay.domain.bo.PayMaterialBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 毛料信息Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayMaterialService {
+
+ /**
+ * 查询毛料信息
+ */
+ PayMaterialVo queryById(Long id);
+
+ /**
+ * 查询毛料信息列表
+ */
+ TableDataInfo queryPageList(PayMaterialBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询毛料信息列表
+ */
+ List queryList(PayMaterialBo bo);
+
+ /**
+ * 新增毛料信息
+ */
+ Boolean insertByBo(PayMaterialBo bo);
+
+ /**
+ * 修改毛料信息
+ */
+ Boolean updateByBo(PayMaterialBo bo);
+
+ /**
+ * 校验并批量删除毛料信息信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductMaterialService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductMaterialService.java
new file mode 100644
index 0000000..70f5042
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductMaterialService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayProductMaterial;
+import com.ruoyi.pay.domain.vo.PayProductMaterialVo;
+import com.ruoyi.pay.domain.bo.PayProductMaterialBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 产品毛料关联Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayProductMaterialService {
+
+ /**
+ * 查询产品毛料关联
+ */
+ PayProductMaterialVo queryById(Long id);
+
+ /**
+ * 查询产品毛料关联列表
+ */
+ TableDataInfo queryPageList(PayProductMaterialBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询产品毛料关联列表
+ */
+ List queryList(PayProductMaterialBo bo);
+
+ /**
+ * 新增产品毛料关联
+ */
+ Boolean insertByBo(PayProductMaterialBo bo);
+
+ /**
+ * 修改产品毛料关联
+ */
+ Boolean updateByBo(PayProductMaterialBo bo);
+
+ /**
+ * 校验并批量删除产品毛料关联信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductsService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductsService.java
new file mode 100644
index 0000000..6e68d8c
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayProductsService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayProducts;
+import com.ruoyi.pay.domain.vo.PayProductsVo;
+import com.ruoyi.pay.domain.bo.PayProductsBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 产品Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayProductsService {
+
+ /**
+ * 查询产品
+ */
+ PayProductsVo queryById(Long id);
+
+ /**
+ * 查询产品列表
+ */
+ TableDataInfo queryPageList(PayProductsBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询产品列表
+ */
+ List queryList(PayProductsBo bo);
+
+ /**
+ * 新增产品
+ */
+ Boolean insertByBo(PayProductsBo bo);
+
+ /**
+ * 修改产品
+ */
+ Boolean updateByBo(PayProductsBo bo);
+
+ /**
+ * 校验并批量删除产品信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java
new file mode 100644
index 0000000..709a2c1
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayRequireAttendanceReport;
+import com.ruoyi.pay.domain.vo.PayRequireAttendanceReportVo;
+import com.ruoyi.pay.domain.bo.PayRequireAttendanceReportBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 应出勤报Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayRequireAttendanceReportService {
+
+ /**
+ * 查询应出勤报
+ */
+ PayRequireAttendanceReportVo queryById(Long id);
+
+ /**
+ * 查询应出勤报列表
+ */
+ TableDataInfo queryPageList(PayRequireAttendanceReportBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询应出勤报列表
+ */
+ List queryList(PayRequireAttendanceReportBo bo);
+
+ /**
+ * 新增应出勤报
+ */
+ Boolean insertByBo(PayRequireAttendanceReportBo bo);
+
+ /**
+ * 修改应出勤报
+ */
+ Boolean updateByBo(PayRequireAttendanceReportBo bo);
+
+ /**
+ * 校验并批量删除应出勤报信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java
new file mode 100644
index 0000000..dbff5b5
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PaySalaryReport;
+import com.ruoyi.pay.domain.vo.PaySalaryReportVo;
+import com.ruoyi.pay.domain.bo.PaySalaryReportBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工资明细总Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPaySalaryReportService {
+
+ /**
+ * 查询工资明细总
+ */
+ PaySalaryReportVo queryById(Long id);
+
+ /**
+ * 查询工资明细总列表
+ */
+ TableDataInfo queryPageList(PaySalaryReportBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询工资明细总列表
+ */
+ List queryList(PaySalaryReportBo bo);
+
+ /**
+ * 新增工资明细总
+ */
+ Boolean insertByBo(PaySalaryReportBo bo);
+
+ /**
+ * 修改工资明细总
+ */
+ Boolean updateByBo(PaySalaryReportBo bo);
+
+ /**
+ * 校验并批量删除工资明细总信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubInfoService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubInfoService.java
new file mode 100644
index 0000000..532ac22
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubInfoService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PaySubInfo;
+import com.ruoyi.pay.domain.vo.PaySubInfoVo;
+import com.ruoyi.pay.domain.bo.PaySubInfoBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 租户订阅信息Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface IPaySubInfoService {
+
+ /**
+ * 查询租户订阅信息
+ */
+ PaySubInfoVo queryById(Long id);
+
+ /**
+ * 查询租户订阅信息列表
+ */
+ TableDataInfo queryPageList(PaySubInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询租户订阅信息列表
+ */
+ List queryList(PaySubInfoBo bo);
+
+ /**
+ * 新增租户订阅信息
+ */
+ Boolean insertByBo(PaySubInfoBo bo);
+
+ /**
+ * 修改租户订阅信息
+ */
+ Boolean updateByBo(PaySubInfoBo bo);
+
+ /**
+ * 校验并批量删除租户订阅信息信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubPlanService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubPlanService.java
new file mode 100644
index 0000000..0e91ccb
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySubPlanService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PaySubPlan;
+import com.ruoyi.pay.domain.vo.PaySubPlanVo;
+import com.ruoyi.pay.domain.bo.PaySubPlanBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 订阅套餐Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface IPaySubPlanService {
+
+ /**
+ * 查询订阅套餐
+ */
+ PaySubPlanVo queryById(Long id);
+
+ /**
+ * 查询订阅套餐列表
+ */
+ TableDataInfo queryPageList(PaySubPlanBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询订阅套餐列表
+ */
+ List queryList(PaySubPlanBo bo);
+
+ /**
+ * 新增订阅套餐
+ */
+ Boolean insertByBo(PaySubPlanBo bo);
+
+ /**
+ * 修改订阅套餐
+ */
+ Boolean updateByBo(PaySubPlanBo bo);
+
+ /**
+ * 校验并批量删除订阅套餐信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayTenantService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayTenantService.java
new file mode 100644
index 0000000..83a1806
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayTenantService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayTenant;
+import com.ruoyi.pay.domain.vo.PayTenantVo;
+import com.ruoyi.pay.domain.bo.PayTenantBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 租户Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayTenantService {
+
+ /**
+ * 查询租户
+ */
+ PayTenantVo queryById(Long id);
+
+ /**
+ * 查询租户列表
+ */
+ TableDataInfo queryPageList(PayTenantBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询租户列表
+ */
+ List queryList(PayTenantBo bo);
+
+ /**
+ * 新增租户
+ */
+ Boolean insertByBo(PayTenantBo bo);
+
+ /**
+ * 修改租户
+ */
+ Boolean updateByBo(PayTenantBo bo);
+
+ /**
+ * 校验并批量删除租户信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java
new file mode 100644
index 0000000..817c707
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayWorkOrderBaohuo;
+import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 包活派工单Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayWorkOrderBaohuoService {
+
+ /**
+ * 查询包活派工单
+ */
+ PayWorkOrderBaohuoVo queryById(Long id);
+
+ /**
+ * 查询包活派工单列表
+ */
+ TableDataInfo queryPageList(PayWorkOrderBaohuoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询包活派工单列表
+ */
+ List queryList(PayWorkOrderBaohuoBo bo);
+
+ /**
+ * 新增包活派工单
+ */
+ Boolean insertByBo(PayWorkOrderBaohuoBo bo);
+
+ /**
+ * 修改包活派工单
+ */
+ Boolean updateByBo(PayWorkOrderBaohuoBo bo);
+
+ /**
+ * 校验并批量删除包活派工单信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderEmployeeService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderEmployeeService.java
new file mode 100644
index 0000000..10061be
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderEmployeeService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayWorkOrderEmployee;
+import com.ruoyi.pay.domain.vo.PayWorkOrderEmployeeVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderEmployeeBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工单和员工联系Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayWorkOrderEmployeeService {
+
+ /**
+ * 查询工单和员工联系
+ */
+ PayWorkOrderEmployeeVo queryById(Long id);
+
+ /**
+ * 查询工单和员工联系列表
+ */
+ TableDataInfo queryPageList(PayWorkOrderEmployeeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询工单和员工联系列表
+ */
+ List queryList(PayWorkOrderEmployeeBo bo);
+
+ /**
+ * 新增工单和员工联系
+ */
+ Boolean insertByBo(PayWorkOrderEmployeeBo bo);
+
+ /**
+ * 修改工单和员工联系
+ */
+ Boolean updateByBo(PayWorkOrderEmployeeBo bo);
+
+ /**
+ * 校验并批量删除工单和员工联系信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderInfoService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderInfoService.java
new file mode 100644
index 0000000..630e9e6
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderInfoService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayWorkOrderInfo;
+import com.ruoyi.pay.domain.vo.PayWorkOrderInfoVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderInfoBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工单信息Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayWorkOrderInfoService {
+
+ /**
+ * 查询工单信息
+ */
+ PayWorkOrderInfoVo queryById(Long id);
+
+ /**
+ * 查询工单信息列表
+ */
+ TableDataInfo queryPageList(PayWorkOrderInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询工单信息列表
+ */
+ List queryList(PayWorkOrderInfoBo bo);
+
+ /**
+ * 新增工单信息
+ */
+ Boolean insertByBo(PayWorkOrderInfoBo bo);
+
+ /**
+ * 修改工单信息
+ */
+ Boolean updateByBo(PayWorkOrderInfoBo bo);
+
+ /**
+ * 校验并批量删除工单信息信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderTuzhiService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderTuzhiService.java
new file mode 100644
index 0000000..a75962b
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderTuzhiService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayWorkOrderTuzhi;
+import com.ruoyi.pay.domain.vo.PayWorkOrderTuzhiVo;
+import com.ruoyi.pay.domain.bo.PayWorkOrderTuzhiBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 图纸流程卡工单Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayWorkOrderTuzhiService {
+
+ /**
+ * 查询图纸流程卡工单
+ */
+ PayWorkOrderTuzhiVo queryById(Long id);
+
+ /**
+ * 查询图纸流程卡工单列表
+ */
+ TableDataInfo queryPageList(PayWorkOrderTuzhiBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询图纸流程卡工单列表
+ */
+ List queryList(PayWorkOrderTuzhiBo bo);
+
+ /**
+ * 新增图纸流程卡工单
+ */
+ Boolean insertByBo(PayWorkOrderTuzhiBo bo);
+
+ /**
+ * 修改图纸流程卡工单
+ */
+ Boolean updateByBo(PayWorkOrderTuzhiBo bo);
+
+ /**
+ * 校验并批量删除图纸流程卡工单信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkTimeService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkTimeService.java
new file mode 100644
index 0000000..d091f84
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkTimeService.java
@@ -0,0 +1,49 @@
+package com.ruoyi.pay.service;
+
+import com.ruoyi.pay.domain.PayWorkTime;
+import com.ruoyi.pay.domain.vo.PayWorkTimeVo;
+import com.ruoyi.pay.domain.bo.PayWorkTimeBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 员工工时时间段Service接口
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+public interface IPayWorkTimeService {
+
+ /**
+ * 查询员工工时时间段
+ */
+ PayWorkTimeVo queryById(Long id);
+
+ /**
+ * 查询员工工时时间段列表
+ */
+ TableDataInfo queryPageList(PayWorkTimeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询员工工时时间段列表
+ */
+ List queryList(PayWorkTimeBo bo);
+
+ /**
+ * 新增员工工时时间段
+ */
+ Boolean insertByBo(PayWorkTimeBo bo);
+
+ /**
+ * 修改员工工时时间段
+ */
+ Boolean updateByBo(PayWorkTimeBo bo);
+
+ /**
+ * 校验并批量删除员工工时时间段信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayAttendanceServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayAttendanceServiceImpl.java
new file mode 100644
index 0000000..dc129f3
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayAttendanceServiceImpl.java
@@ -0,0 +1,120 @@
+package com.ruoyi.pay.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.pay.domain.bo.PayAttendanceBo;
+import com.ruoyi.pay.domain.vo.PayAttendanceVo;
+import com.ruoyi.pay.domain.PayAttendance;
+import com.ruoyi.pay.mapper.PayAttendanceMapper;
+import com.ruoyi.pay.service.IPayAttendanceService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 考勤Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RequiredArgsConstructor
+@Service
+public class PayAttendanceServiceImpl implements IPayAttendanceService {
+
+ private final PayAttendanceMapper baseMapper;
+
+ /**
+ * 查询考勤
+ */
+ @Override
+ public PayAttendanceVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询考勤列表
+ */
+ @Override
+ public TableDataInfo queryPageList(PayAttendanceBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询考勤列表
+ */
+ @Override
+ public List queryList(PayAttendanceBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(PayAttendanceBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getTenantId() != null, PayAttendance::getTenantId, bo.getTenantId());
+ lqw.eq(bo.getEmployeeId() != null, PayAttendance::getEmployeeId, bo.getEmployeeId());
+ lqw.like(StringUtils.isNotBlank(bo.getEmpName()), PayAttendance::getEmpName, bo.getEmpName());
+ lqw.like(StringUtils.isNotBlank(bo.getDeptName()), PayAttendance::getDeptName, bo.getDeptName());
+ lqw.eq(bo.getDeptId() != null, PayAttendance::getDeptId, bo.getDeptId());
+ lqw.eq(bo.getAmStartTime() != null, PayAttendance::getAmStartTime, bo.getAmStartTime());
+ lqw.eq(bo.getAmEndTime() != null, PayAttendance::getAmEndTime, bo.getAmEndTime());
+ lqw.eq(bo.getPmStartTime() != null, PayAttendance::getPmStartTime, bo.getPmStartTime());
+ lqw.eq(bo.getPmEndTime() != null, PayAttendance::getPmEndTime, bo.getPmEndTime());
+ lqw.eq(bo.getKaoqinDate() != null, PayAttendance::getKaoqinDate, bo.getKaoqinDate());
+ lqw.eq(StringUtils.isNotBlank(bo.getKaoqinYearMonth()), PayAttendance::getKaoqinYearMonth, bo.getKaoqinYearMonth());
+ lqw.eq(StringUtils.isNotBlank(bo.getKaoqinjiNum()), PayAttendance::getKaoqinjiNum, bo.getKaoqinjiNum());
+ return lqw;
+ }
+
+ /**
+ * 新增考勤
+ */
+ @Override
+ public Boolean insertByBo(PayAttendanceBo bo) {
+ PayAttendance add = BeanUtil.toBean(bo, PayAttendance.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改考勤
+ */
+ @Override
+ public Boolean updateByBo(PayAttendanceBo bo) {
+ PayAttendance update = BeanUtil.toBean(bo, PayAttendance.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(PayAttendance entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除考勤
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoEmployeeServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoEmployeeServiceImpl.java
new file mode 100644
index 0000000..26614ac
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoEmployeeServiceImpl.java
@@ -0,0 +1,117 @@
+package com.ruoyi.pay.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.pay.domain.bo.PayBaohuoEmployeeBo;
+import com.ruoyi.pay.domain.vo.PayBaohuoEmployeeVo;
+import com.ruoyi.pay.domain.PayBaohuoEmployee;
+import com.ruoyi.pay.mapper.PayBaohuoEmployeeMapper;
+import com.ruoyi.pay.service.IPayBaohuoEmployeeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 包活工单员工关联Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RequiredArgsConstructor
+@Service
+public class PayBaohuoEmployeeServiceImpl implements IPayBaohuoEmployeeService {
+
+ private final PayBaohuoEmployeeMapper baseMapper;
+
+ /**
+ * 查询包活工单员工关联
+ */
+ @Override
+ public PayBaohuoEmployeeVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询包活工单员工关联列表
+ */
+ @Override
+ public TableDataInfo queryPageList(PayBaohuoEmployeeBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询包活工单员工关联列表
+ */
+ @Override
+ public List queryList(PayBaohuoEmployeeBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(PayBaohuoEmployeeBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getTenantId() != null, PayBaohuoEmployee::getTenantId, bo.getTenantId());
+ lqw.eq(bo.getWoId() != null, PayBaohuoEmployee::getWoId, bo.getWoId());
+ lqw.eq(bo.getEmpId() != null, PayBaohuoEmployee::getEmpId, bo.getEmpId());
+ lqw.eq(bo.getDeptId() != null, PayBaohuoEmployee::getDeptId, bo.getDeptId());
+ lqw.like(StringUtils.isNotBlank(bo.getEmpName()), PayBaohuoEmployee::getEmpName, bo.getEmpName());
+ lqw.eq(bo.getAmount() != null, PayBaohuoEmployee::getAmount, bo.getAmount());
+ lqw.eq(StringUtils.isNotBlank(bo.getMonth()), PayBaohuoEmployee::getMonth, bo.getMonth());
+ lqw.eq(bo.getHelper() != null, PayBaohuoEmployee::getHelper, bo.getHelper());
+ lqw.eq(bo.getIntime() != null, PayBaohuoEmployee::getIntime, bo.getIntime());
+ return lqw;
+ }
+
+ /**
+ * 新增包活工单员工关联
+ */
+ @Override
+ public Boolean insertByBo(PayBaohuoEmployeeBo bo) {
+ PayBaohuoEmployee add = BeanUtil.toBean(bo, PayBaohuoEmployee.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改包活工单员工关联
+ */
+ @Override
+ public Boolean updateByBo(PayBaohuoEmployeeBo bo) {
+ PayBaohuoEmployee update = BeanUtil.toBean(bo, PayBaohuoEmployee.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(PayBaohuoEmployee entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除包活工单员工关联
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoProductServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoProductServiceImpl.java
new file mode 100644
index 0000000..9772ae4
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoProductServiceImpl.java
@@ -0,0 +1,118 @@
+package com.ruoyi.pay.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.pay.domain.bo.PayBaohuoProductBo;
+import com.ruoyi.pay.domain.vo.PayBaohuoProductVo;
+import com.ruoyi.pay.domain.PayBaohuoProduct;
+import com.ruoyi.pay.mapper.PayBaohuoProductMapper;
+import com.ruoyi.pay.service.IPayBaohuoProductService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 包活工单产品关联Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RequiredArgsConstructor
+@Service
+public class PayBaohuoProductServiceImpl implements IPayBaohuoProductService {
+
+ private final PayBaohuoProductMapper baseMapper;
+
+ /**
+ * 查询包活工单产品关联
+ */
+ @Override
+ public PayBaohuoProductVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询包活工单产品关联列表
+ */
+ @Override
+ public TableDataInfo queryPageList(PayBaohuoProductBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询包活工单产品关联列表
+ */
+ @Override
+ public List queryList(PayBaohuoProductBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(PayBaohuoProductBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getTenantId() != null, PayBaohuoProduct::getTenantId, bo.getTenantId());
+ lqw.eq(bo.getProductId() != null, PayBaohuoProduct::getProductId, bo.getProductId());
+ lqw.eq(bo.getWoId() != null, PayBaohuoProduct::getWoId, bo.getWoId());
+ lqw.like(StringUtils.isNotBlank(bo.getProductName()), PayBaohuoProduct::getProductName, bo.getProductName());
+ lqw.eq(bo.getProductNum() != null, PayBaohuoProduct::getProductNum, bo.getProductNum());
+ lqw.eq(bo.getMinPrice() != null, PayBaohuoProduct::getMinPrice, bo.getMinPrice());
+ lqw.eq(bo.getMaxPrice() != null, PayBaohuoProduct::getMaxPrice, bo.getMaxPrice());
+ lqw.eq(bo.getAmount() != null, PayBaohuoProduct::getAmount, bo.getAmount());
+ lqw.eq(bo.getPrice() != null, PayBaohuoProduct::getPrice, bo.getPrice());
+ lqw.eq(StringUtils.isNotBlank(bo.getUnit()), PayBaohuoProduct::getUnit, bo.getUnit());
+ return lqw;
+ }
+
+ /**
+ * 新增包活工单产品关联
+ */
+ @Override
+ public Boolean insertByBo(PayBaohuoProductBo bo) {
+ PayBaohuoProduct add = BeanUtil.toBean(bo, PayBaohuoProduct.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改包活工单产品关联
+ */
+ @Override
+ public Boolean updateByBo(PayBaohuoProductBo bo) {
+ PayBaohuoProduct update = BeanUtil.toBean(bo, PayBaohuoProduct.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(PayBaohuoProduct entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除包活工单产品关联
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoWorktimeServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoWorktimeServiceImpl.java
new file mode 100644
index 0000000..0a3622e
--- /dev/null
+++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayBaohuoWorktimeServiceImpl.java
@@ -0,0 +1,117 @@
+package com.ruoyi.pay.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.pay.domain.bo.PayBaohuoWorktimeBo;
+import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo;
+import com.ruoyi.pay.domain.PayBaohuoWorktime;
+import com.ruoyi.pay.mapper.PayBaohuoWorktimeMapper;
+import com.ruoyi.pay.service.IPayBaohuoWorktimeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 包活工单工时关联Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-05-12
+ */
+@RequiredArgsConstructor
+@Service
+public class PayBaohuoWorktimeServiceImpl implements IPayBaohuoWorktimeService {
+
+ private final PayBaohuoWorktimeMapper baseMapper;
+
+ /**
+ * 查询包活工单工时关联
+ */
+ @Override
+ public PayBaohuoWorktimeVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询包活工单工时关联列表
+ */
+ @Override
+ public TableDataInfo queryPageList(PayBaohuoWorktimeBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询包活工单工时关联列表
+ */
+ @Override
+ public List queryList(PayBaohuoWorktimeBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(PayBaohuoWorktimeBo bo) {
+ Map