diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.java index c2eb1932..fb53bbc4 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.java @@ -1,26 +1,28 @@ 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 jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; 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.ErpProjectInfoVo; -import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; -import org.dromara.oa.erp.service.IErpProjectInfoService; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.service.IErpProjectInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 项目信息 @@ -126,4 +128,13 @@ public class ErpProjectInfoController extends BaseController { return R.ok(list); } + /** + * 根据部门id查询项目信息列表 + */ + @SaCheckPermission("oa/erp:projectInfo:listByDept") + @GetMapping("/listByDept") + public TableDataInfo listByDept(ErpProjectInfoBo bo, PageQuery pageQuery) { + bo.setDeptId(LoginHelper.getDeptId()); + return erpProjectInfoService.queryPageList(bo, pageQuery); + } } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java new file mode 100644 index 00000000..2c103d0d --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportController.java @@ -0,0 +1,117 @@ +package org.dromara.oa.erp.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +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.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; +import org.dromara.oa.erp.service.IErpProjectReportService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 项目周报信息 + * 前端访问路由地址为:/oa/projectReport + * + * @author Yinq + * @date 2025-11-10 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/projectReport") +public class ErpProjectReportController extends BaseController { + + private final IErpProjectReportService erpProjectReportService; + + /** + * 查询项目周报信息列表 + */ + @SaCheckPermission("oa/erp:projectReport:list") + @GetMapping("/list") + public TableDataInfo list(ErpProjectReportBo bo, PageQuery pageQuery) { + return erpProjectReportService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目周报信息列表 + */ + @SaCheckPermission("oa/erp:projectReport:export") + @Log(title = "项目周报信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpProjectReportBo bo, HttpServletResponse response) { + List list = erpProjectReportService.queryList(bo); + ExcelUtil.exportExcel(list, "项目周报信息", ErpProjectReportVo.class, response); + } + + /** + * 获取项目周报信息详细信息 + * + * @param reportId 主键 + */ + @SaCheckPermission("oa/erp:projectReport:query") + @GetMapping("/{reportId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("reportId") Long reportId) { + return R.ok(erpProjectReportService.queryById(reportId)); + } + + /** + * 新增项目周报信息 + */ + @SaCheckPermission("oa/erp:projectReport:add") + @Log(title = "项目周报信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpProjectReportBo bo) { + return toAjax(erpProjectReportService.insertByBo(bo)); + } + + /** + * 修改项目周报信息 + */ + @SaCheckPermission("oa/erp:projectReport:edit") + @Log(title = "项目周报信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpProjectReportBo bo) { + return toAjax(erpProjectReportService.updateByBo(bo)); + } + + /** + * 删除项目周报信息 + * + * @param reportIds 主键串 + */ + @SaCheckPermission("oa/erp:projectReport:remove") + @Log(title = "项目周报信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{reportIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("reportIds") Long[] reportIds) { + return toAjax(erpProjectReportService.deleteWithValidByIds(List.of(reportIds), true)); + } + + /** + * 下拉框查询项目周报信息列表 + */ + @GetMapping("/getErpProjectReportList") + public R> getErpProjectReportList(ErpProjectReportBo bo) { + List list = erpProjectReportService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java new file mode 100644 index 00000000..bae7f664 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectReportDetailController.java @@ -0,0 +1,117 @@ +package org.dromara.oa.erp.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +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.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; +import org.dromara.oa.erp.service.IErpProjectReportDetailService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 项目周报明细 + * 前端访问路由地址为:/oa/projectReportDetail + * + * @author Yinq + * @date 2025-11-10 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/projectReportDetail") +public class ErpProjectReportDetailController extends BaseController { + + private final IErpProjectReportDetailService erpProjectReportDetailService; + + /** + * 查询项目周报明细列表 + */ + @SaCheckPermission("oa/erp:projectReportDetail:list") + @GetMapping("/list") + public TableDataInfo list(ErpProjectReportDetailBo bo, PageQuery pageQuery) { + return erpProjectReportDetailService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目周报明细列表 + */ + @SaCheckPermission("oa/erp:projectReportDetail:export") + @Log(title = "项目周报明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpProjectReportDetailBo bo, HttpServletResponse response) { + List list = erpProjectReportDetailService.queryList(bo); + ExcelUtil.exportExcel(list, "项目周报明细", ErpProjectReportDetailVo.class, response); + } + + /** + * 获取项目周报明细详细信息 + * + * @param reportDetailId 主键 + */ + @SaCheckPermission("oa/erp:projectReportDetail:query") + @GetMapping("/{reportDetailId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("reportDetailId") Long reportDetailId) { + return R.ok(erpProjectReportDetailService.queryById(reportDetailId)); + } + + /** + * 新增项目周报明细 + */ + @SaCheckPermission("oa/erp:projectReportDetail:add") + @Log(title = "项目周报明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpProjectReportDetailBo bo) { + return toAjax(erpProjectReportDetailService.insertByBo(bo)); + } + + /** + * 修改项目周报明细 + */ + @SaCheckPermission("oa/erp:projectReportDetail:edit") + @Log(title = "项目周报明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpProjectReportDetailBo bo) { + return toAjax(erpProjectReportDetailService.updateByBo(bo)); + } + + /** + * 删除项目周报明细 + * + * @param reportDetailIds 主键串 + */ + @SaCheckPermission("oa/erp:projectReportDetail:remove") + @Log(title = "项目周报明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{reportDetailIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("reportDetailIds") Long[] reportDetailIds) { + return toAjax(erpProjectReportDetailService.deleteWithValidByIds(List.of(reportDetailIds), true)); + } + + /** + * 下拉框查询项目周报明细列表 + */ + @GetMapping("/getErpProjectReportDetailList") + public R> getErpProjectReportDetailList(ErpProjectReportDetailBo bo) { + List list = erpProjectReportDetailService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReport.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReport.java new file mode 100644 index 00000000..1ac85c87 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReport.java @@ -0,0 +1,105 @@ +package org.dromara.oa.erp.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 项目周报信息对象 erp_project_report + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_project_report") +public class ErpProjectReport extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目周报ID + */ + @TableId(value = "report_id", type = IdType.AUTO) + private Long reportId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 当前里程碑 + */ + private String milestonePlan; + + /** + * 项目经理 + */ + private Long managerId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 部门负责人 + */ + private Long chargeId; + + /** + * 分管副总 + */ + private Long deputyId; + + /** + * 周报情况说明 + */ + private String informationNote; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 附件ID(预留) + */ + private String ossId; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 项目编码 + */ + private String projectCode; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReportDetail.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReportDetail.java new file mode 100644 index 00000000..3dbfde35 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectReportDetail.java @@ -0,0 +1,141 @@ +package org.dromara.oa.erp.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 项目周报明细对象 erp_project_report_detail + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_project_report_detail") +public class ErpProjectReportDetail extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目周报明细ID + */ + @TableId(value = "report_detail_id", type = IdType.AUTO) + private Long reportDetailId; + + /** + * 项目周报ID + */ + private Long reportId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 填写日期 + */ + private Date fillTime; + + /** + * 所在的工作周 + */ + private String currentWorkWeek; + + /** + * 所属里程碑 + */ + private String milestonePlan; + + /** + * 二级进度阶段 + */ + private String secondaryPhase; + + /** + * 本周完成工作 + */ + private String tasksCompleted; + + /** + * 下周计划 + */ + private String nextPlan; + + /** + * 风险及解决措施 + */ + private String riskResolution; + + /** + * 计划完成率 + */ + private Long plannedCompletionRate; + + /** + * 周报情况说明 + */ + private String informationNote; + + /** + * 项目状态(1正常 2拖期风险 3已拖期) + */ + private String scheduleStatus; + + /** + * 周报状态(1暂存 2审批中 3可用) + */ + private String projectReportStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 项目阶段(预留) + */ + private String projectPhases; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 附件ID + */ + private String ossId; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportBo.java new file mode 100644 index 00000000..4ee92d8a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportBo.java @@ -0,0 +1,94 @@ +package org.dromara.oa.erp.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.oa.erp.domain.ErpProjectReport; + +/** + * 项目周报信息业务对象 erp_project_report + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpProjectReport.class, reverseConvertGenerate = false) +public class ErpProjectReportBo extends BaseEntity { + + /** + * 项目周报ID + */ + @NotNull(message = "项目周报ID不能为空", groups = { EditGroup.class }) + private Long reportId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 当前里程碑 + */ + private String milestonePlan; + + /** + * 项目经理 + */ + private Long managerId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 部门负责人 + */ + private Long chargeId; + + /** + * 分管副总 + */ + private Long deputyId; + + /** + * 周报情况说明 + */ + private String informationNote; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 附件ID(预留) + */ + private String ossId; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + /** + * 项目编码 + */ + private String projectCode; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportDetailBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportDetailBo.java new file mode 100644 index 00000000..b8b1a14c --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectReportDetailBo.java @@ -0,0 +1,131 @@ +package org.dromara.oa.erp.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.oa.erp.domain.ErpProjectReportDetail; + +import java.util.Date; + +/** + * 项目周报明细业务对象 erp_project_report_detail + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpProjectReportDetail.class, reverseConvertGenerate = false) +public class ErpProjectReportDetailBo extends BaseEntity { + + /** + * 项目周报明细ID + */ + @NotNull(message = "项目周报明细ID不能为空", groups = { EditGroup.class }) + private Long reportDetailId; + + /** + * 项目周报ID + */ + private Long reportId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 填写日期 + */ + private Date fillTime; + + /** + * 所在的工作周 + */ + private String currentWorkWeek; + + /** + * 所属里程碑 + */ + private String milestonePlan; + + /** + * 二级进度阶段 + */ + private String secondaryPhase; + + /** + * 本周完成工作 + */ + private String tasksCompleted; + + /** + * 下周计划 + */ + private String nextPlan; + + /** + * 风险及解决措施 + */ + private String riskResolution; + + /** + * 计划完成率 + */ + private Long plannedCompletionRate; + + /** + * 周报情况说明 + */ + private String informationNote; + + /** + * 项目状态(1正常 2拖期风险 3已拖期) + */ + private String scheduleStatus; + + /** + * 周报状态(1暂存 2审批中 3可用) + */ + private String projectReportStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 项目阶段(预留) + */ + private String projectPhases; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 附件ID + */ + private String ossId; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java new file mode 100644 index 00000000..ebe169a0 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportDetailVo.java @@ -0,0 +1,159 @@ +package org.dromara.oa.erp.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.oa.erp.domain.ErpProjectReportDetail; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 项目周报明细视图对象 erp_project_report_detail + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectReportDetail.class) +public class ErpProjectReportDetailVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目周报明细ID + */ + @ExcelProperty(value = "项目周报明细ID") + private Long reportDetailId; + + /** + * 项目周报ID + */ + @ExcelProperty(value = "项目周报ID") + private Long reportId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 填写日期 + */ + @ExcelProperty(value = "填写日期") + private Date fillTime; + + /** + * 所在的工作周 + */ + @ExcelProperty(value = "所在的工作周") + private String currentWorkWeek; + + /** + * 所属里程碑 + */ + @ExcelProperty(value = "所属里程碑") + private String milestonePlan; + + /** + * 二级进度阶段 + */ + @ExcelProperty(value = "二级进度阶段") + private String secondaryPhase; + + /** + * 本周完成工作 + */ + @ExcelProperty(value = "本周完成工作") + private String tasksCompleted; + + /** + * 下周计划 + */ + @ExcelProperty(value = "下周计划") + private String nextPlan; + + /** + * 风险及解决措施 + */ + @ExcelProperty(value = "风险及解决措施") + private String riskResolution; + + /** + * 计划完成率 + */ + @ExcelProperty(value = "计划完成率") + private Long plannedCompletionRate; + + /** + * 周报情况说明 + */ + @ExcelProperty(value = "周报情况说明") + private String informationNote; + + /** + * 项目状态(1正常 2拖期风险 3已拖期) + */ + @ExcelProperty(value = "项目状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=正常,2=拖期风险,3=已拖期") + private String scheduleStatus; + + /** + * 周报状态(1暂存 2审批中 3可用) + */ + @ExcelProperty(value = "周报状态(1暂存 2审批中 3可用)") + private String projectReportStatus; + + /** + * 流程状态 + */ + @ExcelProperty(value = "流程状态") + private String flowStatus; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 项目阶段(预留) + */ + @ExcelProperty(value = "项目阶段(预留)") + private String projectPhases; + + /** + * 合同ID(预留) + */ + @ExcelProperty(value = "合同ID(预留)") + private Long contractId; + + /** + * 附件ID + */ + @ExcelProperty(value = "附件ID") + private String ossId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=是,0=否") + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java new file mode 100644 index 00000000..f3a58af1 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectReportVo.java @@ -0,0 +1,116 @@ +package org.dromara.oa.erp.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.oa.erp.domain.ErpProjectReport; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 项目周报信息视图对象 erp_project_report + * + * @author Yinq + * @date 2025-11-10 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectReport.class) +public class ErpProjectReportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目周报ID + */ + @ExcelProperty(value = "项目周报ID") + private Long reportId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 当前里程碑 + */ + @ExcelProperty(value = "当前里程碑") + private String milestonePlan; + + /** + * 项目经理 + */ + @ExcelProperty(value = "项目经理") + private Long managerId; + + /** + * 部门ID + */ + @ExcelProperty(value = "部门ID") + private Long deptId; + + /** + * 部门负责人 + */ + @ExcelProperty(value = "部门负责人") + private Long chargeId; + + /** + * 分管副总 + */ + @ExcelProperty(value = "分管副总") + private Long deputyId; + + /** + * 周报情况说明 + */ + @ExcelProperty(value = "周报情况说明") + private String informationNote; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 附件ID(预留) + */ + @ExcelProperty(value = "附件ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "预=留") + private String ossId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=是,0=否") + private String activeFlag; + + /** + * 项目编码 + */ + @ExcelProperty(value = "项目编码") + private String projectCode; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportDetailMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportDetailMapper.java new file mode 100644 index 00000000..4cd3604a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportDetailMapper.java @@ -0,0 +1,38 @@ +package org.dromara.oa.erp.mapper; + +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.oa.erp.domain.ErpProjectReportDetail; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; + +import java.util.List; + +/** + * 项目周报明细Mapper接口 + * + * @author Yinq + * @date 2025-11-10 + */ +public interface ErpProjectReportDetailMapper extends BaseMapperPlus { + + /** + * 查询项目周报明细列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目周报明细集合 + */ + public Page selectCustomErpProjectReportDetailVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目周报明细列表 + * + * @param queryWrapper 条件 + * @return 项目周报明细集合 + */ + public List selectCustomErpProjectReportDetailVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportMapper.java new file mode 100644 index 00000000..55858d8b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectReportMapper.java @@ -0,0 +1,38 @@ +package org.dromara.oa.erp.mapper; + +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.oa.erp.domain.ErpProjectReport; +import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; + +import java.util.List; + +/** + * 项目周报信息Mapper接口 + * + * @author Yinq + * @date 2025-11-10 + */ +public interface ErpProjectReportMapper extends BaseMapperPlus { + + /** + * 查询项目周报信息列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目周报信息集合 + */ + public Page selectCustomErpProjectReportVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目周报信息列表 + * + * @param queryWrapper 条件 + * @return 项目周报信息集合 + */ + public List selectCustomErpProjectReportVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java new file mode 100644 index 00000000..ebc7b758 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportDetailService.java @@ -0,0 +1,68 @@ +package org.dromara.oa.erp.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; + +import java.util.Collection; +import java.util.List; + +/** + * 项目周报明细Service接口 + * + * @author Yinq + * @date 2025-11-10 + */ +public interface IErpProjectReportDetailService { + + /** + * 查询项目周报明细 + * + * @param reportDetailId 主键 + * @return 项目周报明细 + */ + ErpProjectReportDetailVo queryById(Long reportDetailId); + + /** + * 分页查询项目周报明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目周报明细分页列表 + */ + TableDataInfo queryPageList(ErpProjectReportDetailBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目周报明细列表 + * + * @param bo 查询条件 + * @return 项目周报明细列表 + */ + List queryList(ErpProjectReportDetailBo bo); + + /** + * 新增项目周报明细 + * + * @param bo 项目周报明细 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpProjectReportDetailBo bo); + + /** + * 修改项目周报明细 + * + * @param bo 项目周报明细 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpProjectReportDetailBo 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/IErpProjectReportService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java new file mode 100644 index 00000000..9d797fe3 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectReportService.java @@ -0,0 +1,68 @@ +package org.dromara.oa.erp.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; + +import java.util.Collection; +import java.util.List; + +/** + * 项目周报信息Service接口 + * + * @author Yinq + * @date 2025-11-10 + */ +public interface IErpProjectReportService { + + /** + * 查询项目周报信息 + * + * @param reportId 主键 + * @return 项目周报信息 + */ + ErpProjectReportVo queryById(Long reportId); + + /** + * 分页查询项目周报信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目周报信息分页列表 + */ + TableDataInfo queryPageList(ErpProjectReportBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目周报信息列表 + * + * @param bo 查询条件 + * @return 项目周报信息列表 + */ + List queryList(ErpProjectReportBo bo); + + /** + * 新增项目周报信息 + * + * @param bo 项目周报信息 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpProjectReportBo bo); + + /** + * 修改项目周报信息 + * + * @param bo 项目周报信息 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpProjectReportBo 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/ErpProjectReportDetailServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java new file mode 100644 index 00000000..978698b8 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportDetailServiceImpl.java @@ -0,0 +1,149 @@ +package org.dromara.oa.erp.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.oa.erp.domain.ErpProjectReportDetail; +import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; +import org.dromara.oa.erp.mapper.ErpProjectReportDetailMapper; +import org.dromara.oa.erp.service.IErpProjectReportDetailService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 项目周报明细Service业务层处理 + * + * @author Yinq + * @date 2025-11-10 + */ +@RequiredArgsConstructor +@Service +public class ErpProjectReportDetailServiceImpl implements IErpProjectReportDetailService { + + private final ErpProjectReportDetailMapper baseMapper; + + /** + * 查询项目周报明细 + * + * @param reportDetailId 主键 + * @return 项目周报明细 + */ + @Override + public ErpProjectReportDetailVo queryById(Long reportDetailId){ + return baseMapper.selectVoById(reportDetailId); + } + + /** + * 分页查询项目周报明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目周报明细分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectReportDetailBo 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(ErpProjectReportDetailBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpProjectReportDetailBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectReportDetail.class) + .selectAll(ErpProjectReportDetail.class) + .eq(bo.getReportId() != null, ErpProjectReportDetail::getReportId, bo.getReportId()) + .eq(bo.getProjectId() != null, ErpProjectReportDetail::getProjectId, bo.getProjectId()) + .eq(bo.getFillTime() != null, ErpProjectReportDetail::getFillTime, bo.getFillTime()) + .eq(StringUtils.isNotBlank(bo.getCurrentWorkWeek()), ErpProjectReportDetail::getCurrentWorkWeek, bo.getCurrentWorkWeek()) + .eq(StringUtils.isNotBlank(bo.getMilestonePlan()), ErpProjectReportDetail::getMilestonePlan, bo.getMilestonePlan()) + .eq(StringUtils.isNotBlank(bo.getSecondaryPhase()), ErpProjectReportDetail::getSecondaryPhase, bo.getSecondaryPhase()) + .eq(StringUtils.isNotBlank(bo.getTasksCompleted()), ErpProjectReportDetail::getTasksCompleted, bo.getTasksCompleted()) + .eq(StringUtils.isNotBlank(bo.getNextPlan()), ErpProjectReportDetail::getNextPlan, bo.getNextPlan()) + .eq(StringUtils.isNotBlank(bo.getRiskResolution()), ErpProjectReportDetail::getRiskResolution, bo.getRiskResolution()) + .eq(bo.getPlannedCompletionRate() != null, ErpProjectReportDetail::getPlannedCompletionRate, bo.getPlannedCompletionRate()) + .eq(StringUtils.isNotBlank(bo.getInformationNote()), ErpProjectReportDetail::getInformationNote, bo.getInformationNote()) + .eq(StringUtils.isNotBlank(bo.getScheduleStatus()), ErpProjectReportDetail::getScheduleStatus, bo.getScheduleStatus()) + .eq(StringUtils.isNotBlank(bo.getProjectReportStatus()), ErpProjectReportDetail::getProjectReportStatus, bo.getProjectReportStatus()) + .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectReportDetail::getFlowStatus, bo.getFlowStatus()) + .eq(bo.getSortOrder() != null, ErpProjectReportDetail::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getProjectPhases()), ErpProjectReportDetail::getProjectPhases, bo.getProjectPhases()) + .eq(bo.getContractId() != null, ErpProjectReportDetail::getContractId, bo.getContractId()) + .eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectReportDetail::getOssId, bo.getOssId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectReportDetail::getActiveFlag, bo.getActiveFlag()) +; + return lqw; + } + + /** + * 新增项目周报明细 + * + * @param bo 项目周报明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpProjectReportDetailBo bo) { + ErpProjectReportDetail add = MapstructUtils.convert(bo, ErpProjectReportDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setReportDetailId(add.getReportDetailId()); + } + return flag; + } + + /** + * 修改项目周报明细 + * + * @param bo 项目周报明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpProjectReportDetailBo bo) { + ErpProjectReportDetail update = MapstructUtils.convert(bo, ErpProjectReportDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpProjectReportDetail 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/ErpProjectReportServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java new file mode 100644 index 00000000..e896faee --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReportServiceImpl.java @@ -0,0 +1,142 @@ +package org.dromara.oa.erp.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.oa.erp.domain.ErpProjectReport; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; +import org.dromara.oa.erp.mapper.ErpProjectReportMapper; +import org.dromara.oa.erp.service.IErpProjectReportService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 项目周报信息Service业务层处理 + * + * @author Yinq + * @date 2025-11-10 + */ +@RequiredArgsConstructor +@Service +public class ErpProjectReportServiceImpl implements IErpProjectReportService { + + private final ErpProjectReportMapper baseMapper; + + /** + * 查询项目周报信息 + * + * @param reportId 主键 + * @return 项目周报信息 + */ + @Override + public ErpProjectReportVo queryById(Long reportId){ + return baseMapper.selectVoById(reportId); + } + + /** + * 分页查询项目周报信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目周报信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectReportBo 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(ErpProjectReportBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpProjectReportBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectReport.class) + .selectAll(ErpProjectReport.class) + .eq(bo.getProjectId() != null, ErpProjectReport::getProjectId, bo.getProjectId()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectReport::getProjectName, bo.getProjectName()) + .eq(StringUtils.isNotBlank(bo.getMilestonePlan()), ErpProjectReport::getMilestonePlan, bo.getMilestonePlan()) + .eq(bo.getManagerId() != null, ErpProjectReport::getManagerId, bo.getManagerId()) + .eq(bo.getDeptId() != null, ErpProjectReport::getDeptId, bo.getDeptId()) + .eq(bo.getChargeId() != null, ErpProjectReport::getChargeId, bo.getChargeId()) + .eq(bo.getDeputyId() != null, ErpProjectReport::getDeputyId, bo.getDeputyId()) + .eq(StringUtils.isNotBlank(bo.getInformationNote()), ErpProjectReport::getInformationNote, bo.getInformationNote()) + .eq(bo.getSortOrder() != null, ErpProjectReport::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectReport::getOssId, bo.getOssId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectReport::getActiveFlag, bo.getActiveFlag()) + .eq(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectReport::getProjectCode, bo.getProjectCode()) +; + return lqw; + } + + /** + * 新增项目周报信息 + * + * @param bo 项目周报信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpProjectReportBo bo) { + ErpProjectReport add = MapstructUtils.convert(bo, ErpProjectReport.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setReportId(add.getReportId()); + } + return flag; + } + + /** + * 修改项目周报信息 + * + * @param bo 项目周报信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpProjectReportBo bo) { + ErpProjectReport update = MapstructUtils.convert(bo, ErpProjectReport.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpProjectReport 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/ErpProjectReportDetailMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectReportDetailMapper.xml new file mode 100644 index 00000000..d0682d4f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectReportDetailMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectReportMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectReportMapper.xml new file mode 100644 index 00000000..34b86e80 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectReportMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + +