diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocController.java new file mode 100644 index 00000000..467dc8cf --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocController.java @@ -0,0 +1,116 @@ +package org.dromara.oa.erp.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocVo; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocBo; +import org.dromara.oa.erp.service.IErpTimesheetPreAllocService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 预投工时分配 + * 前端访问路由地址为:/oa/erp/timesheetPreAlloc + * + * @author Yangk + * @date 2026-05-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/timesheetPreAlloc") +public class ErpTimesheetPreAllocController extends BaseController { + + private final IErpTimesheetPreAllocService erpTimesheetPreAllocService; + + /** + * 查询预投工时分配列表 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:list") + @GetMapping("/list") + public TableDataInfo list(ErpTimesheetPreAllocBo bo, PageQuery pageQuery) { + return erpTimesheetPreAllocService.queryPageList(bo, pageQuery); + } + + /** + * 导出预投工时分配列表 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:export") + @Log(title = "预投工时分配", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpTimesheetPreAllocBo bo, HttpServletResponse response) { + List list = erpTimesheetPreAllocService.queryList(bo); + ExcelUtil.exportExcel(list, "预投工时分配", ErpTimesheetPreAllocVo.class, response); + } + + /** + * 获取预投工时分配详细信息 + * + * @param allocId 主键 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:query") + @GetMapping("/{allocId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("allocId") Long allocId) { + return R.ok(erpTimesheetPreAllocService.queryById(allocId)); + } + + /** + * 新增预投工时分配 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:add") + @Log(title = "预投工时分配", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpTimesheetPreAllocBo bo) { + return toAjax(erpTimesheetPreAllocService.insertByBo(bo)); + } + + /** + * 修改预投工时分配 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:edit") + @Log(title = "预投工时分配", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpTimesheetPreAllocBo bo) { + return toAjax(erpTimesheetPreAllocService.updateByBo(bo)); + } + + /** + * 删除预投工时分配 + * + * @param allocIds 主键串 + */ + @SaCheckPermission("oa/erp:timesheetPreAlloc:remove") + @Log(title = "预投工时分配", businessType = BusinessType.DELETE) + @DeleteMapping("/{allocIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("allocIds") Long[] allocIds) { + return toAjax(erpTimesheetPreAllocService.deleteWithValidByIds(List.of(allocIds), true)); + } + + /** + * 下拉框查询预投工时分配列表 + */ + @GetMapping("/getErpTimesheetPreAllocList") + public R> getErpTimesheetPreAllocList(ErpTimesheetPreAllocBo bo) { + List list = erpTimesheetPreAllocService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocDetailController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocDetailController.java new file mode 100644 index 00000000..9839a450 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpTimesheetPreAllocDetailController.java @@ -0,0 +1,116 @@ +package org.dromara.oa.erp.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocDetailVo; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocDetailBo; +import org.dromara.oa.erp.service.IErpTimesheetPreAllocDetailService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 预投工时分配明细 + * 前端访问路由地址为:/oa/erp/timesheetPreAllocDetail + * + * @author Yangk + * @date 2026-05-20 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/timesheetPreAllocDetail") +public class ErpTimesheetPreAllocDetailController extends BaseController { + + private final IErpTimesheetPreAllocDetailService erpTimesheetPreAllocDetailService; + + /** + * 查询预投工时分配明细列表 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:list") + @GetMapping("/list") + public TableDataInfo list(ErpTimesheetPreAllocDetailBo bo, PageQuery pageQuery) { + return erpTimesheetPreAllocDetailService.queryPageList(bo, pageQuery); + } + + /** + * 导出预投工时分配明细列表 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:export") + @Log(title = "预投工时分配明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpTimesheetPreAllocDetailBo bo, HttpServletResponse response) { + List list = erpTimesheetPreAllocDetailService.queryList(bo); + ExcelUtil.exportExcel(list, "预投工时分配明细", ErpTimesheetPreAllocDetailVo.class, response); + } + + /** + * 获取预投工时分配明细详细信息 + * + * @param allocDetailId 主键 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:query") + @GetMapping("/{allocDetailId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("allocDetailId") Long allocDetailId) { + return R.ok(erpTimesheetPreAllocDetailService.queryById(allocDetailId)); + } + + /** + * 新增预投工时分配明细 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:add") + @Log(title = "预投工时分配明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpTimesheetPreAllocDetailBo bo) { + return toAjax(erpTimesheetPreAllocDetailService.insertByBo(bo)); + } + + /** + * 修改预投工时分配明细 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:edit") + @Log(title = "预投工时分配明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpTimesheetPreAllocDetailBo bo) { + return toAjax(erpTimesheetPreAllocDetailService.updateByBo(bo)); + } + + /** + * 删除预投工时分配明细 + * + * @param allocDetailIds 主键串 + */ + @SaCheckPermission("oa/erp:timesheetPreAllocDetail:remove") + @Log(title = "预投工时分配明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{allocDetailIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("allocDetailIds") Long[] allocDetailIds) { + return toAjax(erpTimesheetPreAllocDetailService.deleteWithValidByIds(List.of(allocDetailIds), true)); + } + + /** + * 下拉框查询预投工时分配明细列表 + */ + @GetMapping("/getErpTimesheetPreAllocDetailList") + public R> getErpTimesheetPreAllocDetailList(ErpTimesheetPreAllocDetailBo bo) { + List list = erpTimesheetPreAllocDetailService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAlloc.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAlloc.java new file mode 100644 index 00000000..483bfd9f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAlloc.java @@ -0,0 +1,109 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 预投工时分配对象 erp_timesheet_pre_alloc + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_timesheet_pre_alloc") +public class ErpTimesheetPreAlloc extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 分配单ID + */ + @TableId(value = "alloc_id", type = IdType.AUTO) + private Long allocId; + + /** + * 分配单编号 + */ + private String allocCode; + + /** + * 月份编码(YYYYMM) + */ + private String monthCode; + + /** + * 关联月标准工时ID(erp_timesheet_standard_month) + */ + private Long standardMonthId; + + /** + * 项目ID(备件、物流) + */ + private Long projectId; + + /** + * 预投项目编码(冗余) + */ + private String projectCode; + + /** + * 预投项目名称(冗余) + */ + private String projectName; + + /** + * 来源预投工时合计(天,带出汇总) + */ + private Long sourceTotalHours; + + /** + * 已分配合计(天) + */ + private Long allocatedTotalHours; + + /** + * 涉及人数 + */ + private Long staffCount; + + /** + * 单据状态(0未分配 1部分分配 2已分配) + */ + private String allocStatus; + + /** + * 是否已回写月汇总(0否 1是) + */ + private String appliedFlag; + + /** + * 回写关联的月汇总主表ID + */ + private Long summaryId; + + /** + * 回写月汇总时间 + */ + private Date applyTime; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0存在 1删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAllocDetail.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAllocDetail.java new file mode 100644 index 00000000..9541f05c --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpTimesheetPreAllocDetail.java @@ -0,0 +1,87 @@ +package org.dromara.oa.erp.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 预投工时分配明细对象 erp_timesheet_pre_alloc_detail + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_timesheet_pre_alloc_detail") +public class ErpTimesheetPreAllocDetail extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 分配明细ID + */ + @TableId(value = "alloc_detail_id", type = IdType.AUTO) + private Long allocDetailId; + + /** + * 分配单ID + */ + private Long allocId; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 原项目ID + */ + private Long originalProjectId; + + /** + * 原项目编码(冗余) + */ + private String originalProjectCode; + + /** + * 原项目名称(冗余) + */ + private String originalProjectName; + + /** + * 目标实际项目ID + */ + private Long targetProjectId; + + /** + * 目标项目编码(冗余) + */ + private String targetProjectCode; + + /** + * 目标项目名称(冗余) + */ + private String targetProjectName; + + /** + * 分配工时(天) + */ + private Long allocHours; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0存在 1删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocBo.java new file mode 100644 index 00000000..7c216fe0 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocBo.java @@ -0,0 +1,108 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpTimesheetPreAlloc; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 预投工时分配业务对象 erp_timesheet_pre_alloc + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpTimesheetPreAlloc.class, reverseConvertGenerate = false) +public class ErpTimesheetPreAllocBo extends BaseEntity { + + /** + * 分配单ID + */ + @NotNull(message = "分配单ID不能为空", groups = { EditGroup.class }) + private Long allocId; + + /** + * 分配单编号 + */ + @NotBlank(message = "分配单编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String allocCode; + + /** + * 月份编码(YYYYMM) + */ + @NotBlank(message = "月份编码(YYYYMM)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String monthCode; + + /** + * 关联月标准工时ID(erp_timesheet_standard_month) + */ + private Long standardMonthId; + + /** + * 项目ID(备件、物流) + */ + @NotNull(message = "项目ID(备件、物流)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 预投项目编码(冗余) + */ + private String projectCode; + + /** + * 预投项目名称(冗余) + */ + private String projectName; + + /** + * 来源预投工时合计(天,带出汇总) + */ + @NotNull(message = "来源预投工时合计(天,带出汇总)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sourceTotalHours; + + /** + * 已分配合计(天) + */ + @NotNull(message = "已分配合计(天)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long allocatedTotalHours; + + /** + * 涉及人数 + */ + private Long staffCount; + + /** + * 单据状态(0未分配 1部分分配 2已分配) + */ + @NotBlank(message = "单据状态(0未分配 1部分分配 2已分配)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String allocStatus; + + /** + * 是否已回写月汇总(0否 1是) + */ + private String appliedFlag; + + /** + * 回写关联的月汇总主表ID + */ + private Long summaryId; + + /** + * 回写月汇总时间 + */ + private Date applyTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocDetailBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocDetailBo.java new file mode 100644 index 00000000..58225dd4 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpTimesheetPreAllocDetailBo.java @@ -0,0 +1,84 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpTimesheetPreAllocDetail; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 预投工时分配明细业务对象 erp_timesheet_pre_alloc_detail + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpTimesheetPreAllocDetail.class, reverseConvertGenerate = false) +public class ErpTimesheetPreAllocDetailBo extends BaseEntity { + + /** + * 分配明细ID + */ + @NotNull(message = "分配明细ID不能为空", groups = { EditGroup.class }) + private Long allocDetailId; + + /** + * 分配单ID + */ + @NotNull(message = "分配单ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long allocId; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 原项目ID + */ + @NotNull(message = "原项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long originalProjectId; + + /** + * 原项目编码(冗余) + */ + private String originalProjectCode; + + /** + * 原项目名称(冗余) + */ + private String originalProjectName; + + /** + * 目标实际项目ID + */ + @NotNull(message = "目标实际项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long targetProjectId; + + /** + * 目标项目编码(冗余) + */ + private String targetProjectCode; + + /** + * 目标项目名称(冗余) + */ + private String targetProjectName; + + /** + * 分配工时(天) + */ + @NotNull(message = "分配工时(天)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long allocHours; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocDetailVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocDetailVo.java new file mode 100644 index 00000000..1d95396e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocDetailVo.java @@ -0,0 +1,98 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpTimesheetPreAllocDetail; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预投工时分配明细视图对象 erp_timesheet_pre_alloc_detail + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpTimesheetPreAllocDetail.class) +public class ErpTimesheetPreAllocDetailVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 分配明细ID + */ + @ExcelProperty(value = "分配明细ID") + private Long allocDetailId; + + /** + * 分配单ID + */ + @ExcelProperty(value = "分配单ID") + private Long allocId; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 原项目ID + */ + @ExcelProperty(value = "原项目ID") + private Long originalProjectId; + + /** + * 原项目编码(冗余) + */ + @ExcelProperty(value = "原项目编码(冗余)") + private String originalProjectCode; + + /** + * 原项目名称(冗余) + */ + @ExcelProperty(value = "原项目名称(冗余)") + private String originalProjectName; + + /** + * 目标实际项目ID + */ + @ExcelProperty(value = "目标实际项目ID") + private Long targetProjectId; + + /** + * 目标项目编码(冗余) + */ + @ExcelProperty(value = "目标项目编码(冗余)") + private String targetProjectCode; + + /** + * 目标项目名称(冗余) + */ + @ExcelProperty(value = "目标项目名称(冗余)") + private String targetProjectName; + + /** + * 分配工时(天) + */ + @ExcelProperty(value = "分配工时(天)") + private Long allocHours; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocVo.java new file mode 100644 index 00000000..1a8e1c67 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpTimesheetPreAllocVo.java @@ -0,0 +1,126 @@ +package org.dromara.oa.erp.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.oa.erp.domain.ErpTimesheetPreAlloc; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 预投工时分配视图对象 erp_timesheet_pre_alloc + * + * @author Yangk + * @date 2026-05-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpTimesheetPreAlloc.class) +public class ErpTimesheetPreAllocVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 分配单ID + */ + @ExcelProperty(value = "分配单ID") + private Long allocId; + + /** + * 分配单编号 + */ + @ExcelProperty(value = "分配单编号") + private String allocCode; + + /** + * 月份编码(YYYYMM) + */ + @ExcelProperty(value = "月份编码(YYYYMM)") + private String monthCode; + + /** + * 关联月标准工时ID(erp_timesheet_standard_month) + */ + @ExcelProperty(value = "关联月标准工时ID(erp_timesheet_standard_month)") + private Long standardMonthId; + + /** + * 项目ID(备件、物流) + */ + @ExcelProperty(value = "项目ID(备件、物流)") + private Long projectId; + + /** + * 预投项目编码(冗余) + */ + @ExcelProperty(value = "预投项目编码(冗余)") + private String projectCode; + + /** + * 预投项目名称(冗余) + */ + @ExcelProperty(value = "预投项目名称(冗余)") + private String projectName; + + /** + * 来源预投工时合计(天,带出汇总) + */ + @ExcelProperty(value = "来源预投工时合计(天,带出汇总)") + private Long sourceTotalHours; + + /** + * 已分配合计(天) + */ + @ExcelProperty(value = "已分配合计(天)") + private Long allocatedTotalHours; + + /** + * 涉及人数 + */ + @ExcelProperty(value = "涉及人数") + private Long staffCount; + + /** + * 单据状态(0未分配 1部分分配 2已分配) + */ + @ExcelProperty(value = "单据状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "alloc_status") + private String allocStatus; + + /** + * 是否已回写月汇总(0否 1是) + */ + @ExcelProperty(value = "是否已回写月汇总", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "applied_flag") + private String appliedFlag; + + /** + * 回写关联的月汇总主表ID + */ + @ExcelProperty(value = "回写关联的月汇总主表ID") + private Long summaryId; + + /** + * 回写月汇总时间 + */ + @ExcelProperty(value = "回写月汇总时间") + private Date applyTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocDetailMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocDetailMapper.java new file mode 100644 index 00000000..1fa1a088 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocDetailMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpTimesheetPreAllocDetail; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocDetailVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预投工时分配明细Mapper接口 + * + * @author Yangk + * @date 2026-05-20 + */ +public interface ErpTimesheetPreAllocDetailMapper extends BaseMapperPlus { + + /** + * 查询预投工时分配明细列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预投工时分配明细集合 + */ + public Page selectCustomErpTimesheetPreAllocDetailVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预投工时分配明细列表 + * + * @param queryWrapper 条件 + * @return 预投工时分配明细集合 + */ + public List selectCustomErpTimesheetPreAllocDetailVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocMapper.java new file mode 100644 index 00000000..c3ed9383 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpTimesheetPreAllocMapper.java @@ -0,0 +1,37 @@ +package org.dromara.oa.erp.mapper; + +import java.util.List; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.oa.erp.domain.ErpTimesheetPreAlloc; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 预投工时分配Mapper接口 + * + * @author Yangk + * @date 2026-05-20 + */ +public interface ErpTimesheetPreAllocMapper extends BaseMapperPlus { + + /** + * 查询预投工时分配列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 预投工时分配集合 + */ + public Page selectCustomErpTimesheetPreAllocVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询预投工时分配列表 + * + * @param queryWrapper 条件 + * @return 预投工时分配集合 + */ + public List selectCustomErpTimesheetPreAllocVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocDetailService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocDetailService.java new file mode 100644 index 00000000..842783a3 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocDetailService.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpTimesheetPreAllocDetail; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocDetailVo; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocDetailBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 预投工时分配明细Service接口 + * + * @author Yangk + * @date 2026-05-20 + */ +public interface IErpTimesheetPreAllocDetailService { + + /** + * 查询预投工时分配明细 + * + * @param allocDetailId 主键 + * @return 预投工时分配明细 + */ + ErpTimesheetPreAllocDetailVo queryById(Long allocDetailId); + + /** + * 分页查询预投工时分配明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 预投工时分配明细分页列表 + */ + TableDataInfo queryPageList(ErpTimesheetPreAllocDetailBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的预投工时分配明细列表 + * + * @param bo 查询条件 + * @return 预投工时分配明细列表 + */ + List queryList(ErpTimesheetPreAllocDetailBo bo); + + /** + * 新增预投工时分配明细 + * + * @param bo 预投工时分配明细 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpTimesheetPreAllocDetailBo bo); + + /** + * 修改预投工时分配明细 + * + * @param bo 预投工时分配明细 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpTimesheetPreAllocDetailBo bo); + + /** + * 校验并批量删除预投工时分配明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocService.java new file mode 100644 index 00000000..d2fc4c32 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpTimesheetPreAllocService.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpTimesheetPreAlloc; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocVo; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 预投工时分配Service接口 + * + * @author Yangk + * @date 2026-05-20 + */ +public interface IErpTimesheetPreAllocService { + + /** + * 查询预投工时分配 + * + * @param allocId 主键 + * @return 预投工时分配 + */ + ErpTimesheetPreAllocVo queryById(Long allocId); + + /** + * 分页查询预投工时分配列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 预投工时分配分页列表 + */ + TableDataInfo queryPageList(ErpTimesheetPreAllocBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的预投工时分配列表 + * + * @param bo 查询条件 + * @return 预投工时分配列表 + */ + List queryList(ErpTimesheetPreAllocBo bo); + + /** + * 新增预投工时分配 + * + * @param bo 预投工时分配 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpTimesheetPreAllocBo bo); + + /** + * 修改预投工时分配 + * + * @param bo 预投工时分配 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpTimesheetPreAllocBo bo); + + /** + * 校验并批量删除预投工时分配信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocDetailServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocDetailServiceImpl.java new file mode 100644 index 00000000..5f594c85 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocDetailServiceImpl.java @@ -0,0 +1,141 @@ +package org.dromara.oa.erp.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; + import org.dromara.common.mybatis.core.page.TableDataInfo; + import org.dromara.common.mybatis.core.page.PageQuery; + import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocDetailBo; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocDetailVo; +import org.dromara.oa.erp.domain.ErpTimesheetPreAllocDetail; +import org.dromara.oa.erp.mapper.ErpTimesheetPreAllocDetailMapper; +import org.dromara.oa.erp.service.IErpTimesheetPreAllocDetailService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 预投工时分配明细Service业务层处理 + * + * @author Yangk + * @date 2026-05-20 + */ +@RequiredArgsConstructor +@Service +public class ErpTimesheetPreAllocDetailServiceImpl implements IErpTimesheetPreAllocDetailService { + + private final ErpTimesheetPreAllocDetailMapper baseMapper; + + /** + * 查询预投工时分配明细 + * + * @param allocDetailId 主键 + * @return 预投工时分配明细 + */ + @Override + public ErpTimesheetPreAllocDetailVo queryById(Long allocDetailId){ + return baseMapper.selectVoById(allocDetailId); + } + + /** + * 分页查询预投工时分配明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 预投工时分配明细分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpTimesheetPreAllocDetailBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的预投工时分配明细列表 + * + * @param bo 查询条件 + * @return 预投工时分配明细列表 + */ + @Override + public List queryList(ErpTimesheetPreAllocDetailBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpTimesheetPreAllocDetailBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpTimesheetPreAllocDetail.class) + .selectAll(ErpTimesheetPreAllocDetail.class) + .eq(ErpTimesheetPreAllocDetail::getDelFlag, "0") + .eq(bo.getAllocId() != null, ErpTimesheetPreAllocDetail::getAllocId, bo.getAllocId()) + .eq(bo.getSortOrder() != null, ErpTimesheetPreAllocDetail::getSortOrder, bo.getSortOrder()) + .eq(bo.getOriginalProjectId() != null, ErpTimesheetPreAllocDetail::getOriginalProjectId, bo.getOriginalProjectId()) + .eq(StringUtils.isNotBlank(bo.getOriginalProjectCode()), ErpTimesheetPreAllocDetail::getOriginalProjectCode, bo.getOriginalProjectCode()) + .like(StringUtils.isNotBlank(bo.getOriginalProjectName()), ErpTimesheetPreAllocDetail::getOriginalProjectName, bo.getOriginalProjectName()) + .eq(bo.getTargetProjectId() != null, ErpTimesheetPreAllocDetail::getTargetProjectId, bo.getTargetProjectId()) + .eq(StringUtils.isNotBlank(bo.getTargetProjectCode()), ErpTimesheetPreAllocDetail::getTargetProjectCode, bo.getTargetProjectCode()) + .like(StringUtils.isNotBlank(bo.getTargetProjectName()), ErpTimesheetPreAllocDetail::getTargetProjectName, bo.getTargetProjectName()) + .eq(bo.getAllocHours() != null, ErpTimesheetPreAllocDetail::getAllocHours, bo.getAllocHours()) +; + return lqw; + } + + /** + * 新增预投工时分配明细 + * + * @param bo 预投工时分配明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpTimesheetPreAllocDetailBo bo) { + ErpTimesheetPreAllocDetail add = MapstructUtils.convert(bo, ErpTimesheetPreAllocDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setAllocDetailId(add.getAllocDetailId()); + } + return flag; + } + + /** + * 修改预投工时分配明细 + * + * @param bo 预投工时分配明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpTimesheetPreAllocDetailBo bo) { + ErpTimesheetPreAllocDetail update = MapstructUtils.convert(bo, ErpTimesheetPreAllocDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpTimesheetPreAllocDetail entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除预投工时分配明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocServiceImpl.java new file mode 100644 index 00000000..674a404a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetPreAllocServiceImpl.java @@ -0,0 +1,145 @@ +package org.dromara.oa.erp.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; + import org.dromara.common.mybatis.core.page.TableDataInfo; + import org.dromara.common.mybatis.core.page.PageQuery; + import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.oa.erp.domain.bo.ErpTimesheetPreAllocBo; +import org.dromara.oa.erp.domain.vo.ErpTimesheetPreAllocVo; +import org.dromara.oa.erp.domain.ErpTimesheetPreAlloc; +import org.dromara.oa.erp.mapper.ErpTimesheetPreAllocMapper; +import org.dromara.oa.erp.service.IErpTimesheetPreAllocService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 预投工时分配Service业务层处理 + * + * @author Yangk + * @date 2026-05-20 + */ +@RequiredArgsConstructor +@Service +public class ErpTimesheetPreAllocServiceImpl implements IErpTimesheetPreAllocService { + + private final ErpTimesheetPreAllocMapper baseMapper; + + /** + * 查询预投工时分配 + * + * @param allocId 主键 + * @return 预投工时分配 + */ + @Override + public ErpTimesheetPreAllocVo queryById(Long allocId){ + return baseMapper.selectVoById(allocId); + } + + /** + * 分页查询预投工时分配列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 预投工时分配分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpTimesheetPreAllocBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的预投工时分配列表 + * + * @param bo 查询条件 + * @return 预投工时分配列表 + */ + @Override + public List queryList(ErpTimesheetPreAllocBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpTimesheetPreAllocBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpTimesheetPreAlloc.class) + .selectAll(ErpTimesheetPreAlloc.class) + .eq(ErpTimesheetPreAlloc::getDelFlag, "0") + .eq(StringUtils.isNotBlank(bo.getAllocCode()), ErpTimesheetPreAlloc::getAllocCode, bo.getAllocCode()) + .eq(StringUtils.isNotBlank(bo.getMonthCode()), ErpTimesheetPreAlloc::getMonthCode, bo.getMonthCode()) + .eq(bo.getStandardMonthId() != null, ErpTimesheetPreAlloc::getStandardMonthId, bo.getStandardMonthId()) + .eq(bo.getProjectId() != null, ErpTimesheetPreAlloc::getProjectId, bo.getProjectId()) + .eq(StringUtils.isNotBlank(bo.getProjectCode()), ErpTimesheetPreAlloc::getProjectCode, bo.getProjectCode()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpTimesheetPreAlloc::getProjectName, bo.getProjectName()) + .eq(bo.getSourceTotalHours() != null, ErpTimesheetPreAlloc::getSourceTotalHours, bo.getSourceTotalHours()) + .eq(bo.getAllocatedTotalHours() != null, ErpTimesheetPreAlloc::getAllocatedTotalHours, bo.getAllocatedTotalHours()) + .eq(bo.getStaffCount() != null, ErpTimesheetPreAlloc::getStaffCount, bo.getStaffCount()) + .eq(StringUtils.isNotBlank(bo.getAllocStatus()), ErpTimesheetPreAlloc::getAllocStatus, bo.getAllocStatus()) + .eq(StringUtils.isNotBlank(bo.getAppliedFlag()), ErpTimesheetPreAlloc::getAppliedFlag, bo.getAppliedFlag()) + .eq(bo.getSummaryId() != null, ErpTimesheetPreAlloc::getSummaryId, bo.getSummaryId()) + .eq(bo.getApplyTime() != null, ErpTimesheetPreAlloc::getApplyTime, bo.getApplyTime()) +; + return lqw; + } + + /** + * 新增预投工时分配 + * + * @param bo 预投工时分配 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpTimesheetPreAllocBo bo) { + ErpTimesheetPreAlloc add = MapstructUtils.convert(bo, ErpTimesheetPreAlloc.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setAllocId(add.getAllocId()); + } + return flag; + } + + /** + * 修改预投工时分配 + * + * @param bo 预投工时分配 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpTimesheetPreAllocBo bo) { + ErpTimesheetPreAlloc update = MapstructUtils.convert(bo, ErpTimesheetPreAlloc.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpTimesheetPreAlloc entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除预投工时分配信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocDetailMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocDetailMapper.xml new file mode 100644 index 00000000..0dde736c --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocDetailMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocMapper.xml new file mode 100644 index 00000000..fbd8883b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpTimesheetPreAllocMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + +