From af069f3fa5efd7f005f703c11da9949702fabba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E5=B1=95=E8=88=AA?= <2426745133@qq.com> Date: Fri, 10 Oct 2025 16:14:49 +0800 Subject: [PATCH] =?UTF-8?q?10-10-xzd=E9=A1=B9=E7=9B=AE=E7=BB=8F=E7=90=86?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=AE=A1=E6=89=B9=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XzdProjectManagerApprovalController.java | 105 +++++++++++ .../xzd/domain/XzdProjectManagerApproval.java | 123 +++++++++++++ .../bo/XzdProjectManagerApprovalBo.java | 124 +++++++++++++ .../vo/XzdProjectManagerApprovalVo.java | 148 ++++++++++++++++ .../XzdProjectManagerApprovalMapper.java | 15 ++ .../dromara/xzd/mapper/XzdProjectMapper.java | 15 ++ .../IXzdProjectManagerApprovalService.java | 70 ++++++++ .../XzdProjectManagerApprovalServiceImpl.java | 163 ++++++++++++++++++ 8 files changed, 763 insertions(+) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdProjectManagerApprovalController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdProjectManagerApproval.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdProjectManagerApprovalBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdProjectManagerApprovalVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectManagerApprovalMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdProjectManagerApprovalService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectManagerApprovalServiceImpl.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdProjectManagerApprovalController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdProjectManagerApprovalController.java new file mode 100644 index 00000000..cebb6dcc --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdProjectManagerApprovalController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.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.xzd.domain.vo.XzdProjectManagerApprovalVo; +import org.dromara.xzd.domain.bo.XzdProjectManagerApprovalBo; +import org.dromara.xzd.service.IXzdProjectManagerApprovalService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 项目经理推荐及审批 + * + * @author Lion Li + * @date 2025-10-10 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/approval") +public class XzdProjectManagerApprovalController extends BaseController { + + private final IXzdProjectManagerApprovalService xzdProjectManagerApprovalService; + + /** + * 查询项目经理推荐及审批列表 + */ + @SaCheckPermission("xzd:approval:list") + @GetMapping("/list") + public TableDataInfo list(XzdProjectManagerApprovalBo bo, PageQuery pageQuery) { + return xzdProjectManagerApprovalService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目经理推荐及审批列表 + */ + @SaCheckPermission("xzd:approval:export") + @Log(title = "项目经理推荐及审批", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdProjectManagerApprovalBo bo, HttpServletResponse response) { + List list = xzdProjectManagerApprovalService.queryList(bo); + ExcelUtil.exportExcel(list, "项目经理推荐及审批", XzdProjectManagerApprovalVo.class, response); + } + + /** + * 获取项目经理推荐及审批详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xzd:approval:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdProjectManagerApprovalService.queryById(id)); + } + + /** + * 新增项目经理推荐及审批 + */ + @SaCheckPermission("xzd:approval:add") + @Log(title = "项目经理推荐及审批", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdProjectManagerApprovalBo bo) { + return toAjax(xzdProjectManagerApprovalService.insertByBo(bo)); + } + + /** + * 修改项目经理推荐及审批 + */ + @SaCheckPermission("xzd:approval:edit") + @Log(title = "项目经理推荐及审批", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdProjectManagerApprovalBo bo) { + return toAjax(xzdProjectManagerApprovalService.updateByBo(bo)); + } + + /** + * 删除项目经理推荐及审批 + * + * @param ids 主键串 + */ + @SaCheckPermission("xzd:approval:remove") + @Log(title = "项目经理推荐及审批", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdProjectManagerApprovalService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdProjectManagerApproval.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdProjectManagerApproval.java new file mode 100644 index 00000000..c152a418 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdProjectManagerApproval.java @@ -0,0 +1,123 @@ +package org.dromara.xzd.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +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; + +/** + * 项目经理推荐及审批对象 xzd_project_manager_approval + * + * @author Lion Li + * @date 2025-10-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_project_manager_approval") +public class XzdProjectManagerApproval extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编号 + */ + private String documentNumber; + + /** + * 标题 + */ + private String title; + + /** + * 日期 + */ + private Date recordDate; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 项目规模 + */ + private String projectScale; + + /** + * 合同金额 + */ + private Long contractAmount; + + /** + * 拟任项目经理 + */ + private String prospectiveManagerName; + + /** + * 身份证号 + */ + private String idCardNumber; + + /** + * 教育程度 + */ + private String educationLevel; + + /** + * 工作年限 + */ + private Long workExperienceYears; + + /** + * 专业年限 + */ + private Long professionalExperienceYears; + + /** + * 合同用工形式 + */ + private String contractEmploymentType; + + /** + * 资格证书 + */ + private String qualificationCertificates; + + /** + * 是否属于历史数据补录 + */ + private String isHistoricalData; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdProjectManagerApprovalBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdProjectManagerApprovalBo.java new file mode 100644 index 00000000..9fa4defc --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdProjectManagerApprovalBo.java @@ -0,0 +1,124 @@ +package org.dromara.xzd.domain.bo; + +import org.dromara.xzd.domain.XzdProjectManagerApproval; +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; + +/** + * 项目经理推荐及审批业务对象 xzd_project_manager_approval + * + * @author Lion Li + * @date 2025-10-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdProjectManagerApproval.class, reverseConvertGenerate = false) +public class XzdProjectManagerApprovalBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编号 + */ +// @NotBlank(message = "单据编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String documentNumber; + + /** + * 标题 + */ + private String title; + + /** + * 日期 + */ + private Date recordDate; + + /** + * 项目名称 + */ + @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectName; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 项目规模 + */ + private String projectScale; + + /** + * 合同金额 + */ + private Long contractAmount; + + /** + * 拟任项目经理 + */ + private String prospectiveManagerName; + + /** + * 身份证号 + */ + private String idCardNumber; + + /** + * 教育程度 + */ + private String educationLevel; + + /** + * 工作年限 + */ + private Long workExperienceYears; + + /** + * 专业年限 + */ + private Long professionalExperienceYears; + + /** + * 合同用工形式 + */ + private String contractEmploymentType; + + /** + * 资格证书 + */ + private String qualificationCertificates; + + /** + * 是否属于历史数据补录 + */ + private String isHistoricalData; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdProjectManagerApprovalVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdProjectManagerApprovalVo.java new file mode 100644 index 00000000..905091d5 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdProjectManagerApprovalVo.java @@ -0,0 +1,148 @@ +package org.dromara.xzd.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdProjectManagerApproval; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.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; + + + +/** + * 项目经理推荐及审批视图对象 xzd_project_manager_approval + * + * @author Lion Li + * @date 2025-10-10 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdProjectManagerApproval.class) +public class XzdProjectManagerApprovalVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编号 + */ + @ExcelProperty(value = "单据编号") + private String documentNumber; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 日期 + */ + @ExcelProperty(value = "日期") + private Date recordDate; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 客户名称 + */ + @ExcelProperty(value = "客户名称") + private String customerName; + + /** + * 项目规模 + */ + @ExcelProperty(value = "项目规模") + private String projectScale; + + /** + * 合同金额 + */ + @ExcelProperty(value = "合同金额") + private Long contractAmount; + + /** + * 拟任项目经理 + */ + @ExcelProperty(value = "拟任项目经理") + private String prospectiveManagerName; + + /** + * 身份证号 + */ + @ExcelProperty(value = "身份证号") + private String idCardNumber; + + /** + * 教育程度 + */ + @ExcelProperty(value = "教育程度") + private String educationLevel; + + /** + * 工作年限 + */ + @ExcelProperty(value = "工作年限") + private Long workExperienceYears; + + /** + * 专业年限 + */ + @ExcelProperty(value = "专业年限") + private Long professionalExperienceYears; + + /** + * 合同用工形式 + */ + @ExcelProperty(value = "合同用工形式") + private String contractEmploymentType; + + /** + * 资格证书 + */ + @ExcelProperty(value = "资格证书") + private String qualificationCertificates; + + /** + * 是否属于历史数据补录 + */ + @ExcelProperty(value = "是否属于历史数据补录") + private String isHistoricalData; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectManagerApprovalMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectManagerApprovalMapper.java new file mode 100644 index 00000000..8b47b519 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectManagerApprovalMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.mapper; + +import org.dromara.xzd.domain.XzdProjectManagerApproval; +import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目经理推荐及审批Mapper接口 + * + * @author Lion Li + * @date 2025-10-10 + */ +public interface XzdProjectManagerApprovalMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectMapper.java new file mode 100644 index 00000000..2f032906 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdProjectMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.mapper; + +import org.dromara.xzd.domain.XzdProject; +import org.dromara.xzd.domain.vo.XzdProjectVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目信息Mapper接口 + * + * @author Lion Li + * @date 2025-10-10 + */ +public interface XzdProjectMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdProjectManagerApprovalService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdProjectManagerApprovalService.java new file mode 100644 index 00000000..b6012e45 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdProjectManagerApprovalService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.service; + +import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo; +import org.dromara.xzd.domain.bo.XzdProjectManagerApprovalBo; +import org.dromara.xzd.domain.XzdProjectManagerApproval; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 项目经理推荐及审批Service接口 + * + * @author Lion Li + * @date 2025-10-10 + */ +public interface IXzdProjectManagerApprovalService extends IService{ + + /** + * 查询项目经理推荐及审批 + * + * @param id 主键 + * @return 项目经理推荐及审批 + */ + XzdProjectManagerApprovalVo queryById(Long id); + + /** + * 分页查询项目经理推荐及审批列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目经理推荐及审批分页列表 + */ + TableDataInfo queryPageList(XzdProjectManagerApprovalBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目经理推荐及审批列表 + * + * @param bo 查询条件 + * @return 项目经理推荐及审批列表 + */ + List queryList(XzdProjectManagerApprovalBo bo); + + /** + * 新增项目经理推荐及审批 + * + * @param bo 项目经理推荐及审批 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdProjectManagerApprovalBo bo); + + /** + * 修改项目经理推荐及审批 + * + * @param bo 项目经理推荐及审批 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdProjectManagerApprovalBo bo); + + /** + * 校验并批量删除项目经理推荐及审批信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectManagerApprovalServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectManagerApprovalServiceImpl.java new file mode 100644 index 00000000..494e58bd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectManagerApprovalServiceImpl.java @@ -0,0 +1,163 @@ +package org.dromara.xzd.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.domain.bo.XzdProjectManagerApprovalBo; +import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo; +import org.dromara.xzd.domain.XzdProjectManagerApproval; +import org.dromara.xzd.mapper.XzdProjectManagerApprovalMapper; +import org.dromara.xzd.service.IXzdProjectManagerApprovalService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目经理推荐及审批Service业务层处理 + * + * @author Lion Li + * @date 2025-10-10 + */ +@RequiredArgsConstructor +@Service +public class XzdProjectManagerApprovalServiceImpl extends ServiceImpl implements IXzdProjectManagerApprovalService { + + private final XzdProjectManagerApprovalMapper baseMapper; + + @Autowired + private SysOssServiceImpl sysOssService; + + /** + * 查询项目经理推荐及审批 + * + * @param id 主键 + * @return 项目经理推荐及审批 + */ + @Override + public XzdProjectManagerApprovalVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询项目经理推荐及审批列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目经理推荐及审批分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdProjectManagerApprovalBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的项目经理推荐及审批列表 + * + * @param bo 查询条件 + * @return 项目经理推荐及审批列表 + */ + @Override + public List queryList(XzdProjectManagerApprovalBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdProjectManagerApprovalBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getId() != null, XzdProjectManagerApproval::getId, bo.getId()); + lqw.orderByDesc(XzdProjectManagerApproval::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentNumber()), XzdProjectManagerApproval::getDocumentNumber, bo.getDocumentNumber()); + lqw.between(params.get("beginRecordDate") != null && params.get("endRecordDate") != null, + XzdProjectManagerApproval::getRecordDate ,params.get("beginRecordDate"), params.get("endRecordDate")); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdProjectManagerApproval::getProjectName, bo.getProjectName()); + lqw.like(StringUtils.isNotBlank(bo.getCustomerName()), XzdProjectManagerApproval::getCustomerName, bo.getCustomerName()); + lqw.like(StringUtils.isNotBlank(bo.getProspectiveManagerName()), XzdProjectManagerApproval::getProspectiveManagerName, bo.getProspectiveManagerName()); + lqw.eq(StringUtils.isNotBlank(bo.getQualificationCertificates()), XzdProjectManagerApproval::getQualificationCertificates, bo.getQualificationCertificates()); + return lqw; + } + + /** + * 新增项目经理推荐及审批 + * + * @param bo 项目经理推荐及审批 + * @return 是否新增成功 + */ + @Transactional + @Override + public Boolean insertByBo(XzdProjectManagerApprovalBo bo) { + XzdProjectManagerApproval add = MapstructUtils.convert(bo, XzdProjectManagerApproval.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + //生成过后更新单据编号为ID + add.setDocumentNumber(add.getId().toString()); + baseMapper.updateById(add); + return flag; + } + + /** + * 修改项目经理推荐及审批 + * + * @param bo 项目经理推荐及审批 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdProjectManagerApprovalBo bo) { + //先通过BO中ID获取老数据的文件ID + XzdProjectManagerApprovalVo approvalVo = baseMapper.selectVoById(bo.getId()); + if (!approvalVo.getFileId().equals(bo.getFileId())){ + //如果不一样则先删除旧的再更新 + sysOssService.deleteWithValidByIds(List.of(Long.valueOf(approvalVo.getFileId())), false); + } + XzdProjectManagerApproval update = MapstructUtils.convert(bo, XzdProjectManagerApproval.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdProjectManagerApproval entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除项目经理推荐及审批信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Transactional + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + //删除文件 + for (Long id : ids) { + XzdProjectManagerApprovalVo vo = baseMapper.selectVoById(id); + if (vo == null){ + continue; + } + sysOssService.deleteWithValidByIds(List.of(Long.valueOf(vo.getFileId())), false); + } + return baseMapper.deleteByIds(ids) > 0; + } +}