From fada5ccbdbf33c64da45c3036837c7a7ce0e45a8 Mon Sep 17 00:00:00 2001 From: lh Date: Wed, 3 Dec 2025 15:41:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=91=A8=E6=8A=A5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8A=9F=E8=83=BD=20=E9=A1=B9=E7=9B=AE=E5=91=A8?= =?UTF-8?q?=E6=8A=A5=E6=B5=81=E7=A8=8B=E6=8F=90=E4=BA=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ErpProjectReportController.java | 1 + .../ErpProjectReportDetailController.java | 18 +++ .../oa/erp/domain/ErpProjectReport.java | 29 ++++- .../oa/erp/domain/ErpProjectReportDetail.java | 2 +- .../oa/erp/domain/bo/ErpProjectReportBo.java | 19 ++++ .../domain/bo/ErpProjectReportDetailBo.java | 53 +++++++++ .../bo/ProjectReportAndDetailWrapperBo.java | 12 ++ .../domain/vo/ErpProjectReportDetailVo.java | 23 ++++ .../IErpProjectReportDetailService.java | 11 ++ .../ErpProjectReportDetailServiceImpl.java | 103 ++++++++++++++++++ .../impl/ErpProjectReportServiceImpl.java | 66 ++++++----- .../mapper/oa/erp/ErpProjectReportMapper.xml | 3 +- 12 files changed, 303 insertions(+), 37 deletions(-) create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ProjectReportAndDetailWrapperBo.java 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 index 2c103d0d..c0cd79ee 100644 --- 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 @@ -44,6 +44,7 @@ public class ErpProjectReportController extends BaseController { @SaCheckPermission("oa/erp:projectReport:list") @GetMapping("/list") public TableDataInfo list(ErpProjectReportBo bo, PageQuery pageQuery) { + return erpProjectReportService.queryPageList(bo, pageQuery); } 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 index bae7f664..6c55eff3 100644 --- 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 @@ -15,7 +15,11 @@ 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.ErpContractInfoBo; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; +import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; import org.dromara.oa.erp.service.IErpProjectReportDetailService; import org.springframework.validation.annotation.Validated; @@ -114,4 +118,18 @@ public class ErpProjectReportDetailController extends BaseController { return R.ok(list); } + /** + * 提交合同信息并提交流程 + * @param wrapper + * @return + */ + @SaCheckPermission("oa/erp:projectReportDetail:add") + @Log(title = "项目周报明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/projectReportSubmitAndFlowStart") + public R projectReportSubmitAndFlowStart(@Validated(AddGroup.class) @RequestBody ProjectReportAndDetailWrapperBo wrapper) { + ErpProjectReportBo projectReport = wrapper.getProjectReport(); + ErpProjectReportDetailBo projectDetailReport = wrapper.getProjectDetailReport(); + return R.ok(erpProjectReportDetailService.projectReportSubmitAndFlowStart(projectReport, projectDetailReport)); + } } 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 index 1ac85c87..8f8f070d 100644 --- 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 @@ -1,9 +1,6 @@ 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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.tenant.core.TenantEntity; @@ -27,7 +24,7 @@ public class ErpProjectReport extends TenantEntity { /** * 项目周报ID */ - @TableId(value = "report_id", type = IdType.AUTO) + @TableId(value = "report_id", type = IdType.ASSIGN_ID) private Long reportId; /** @@ -101,5 +98,27 @@ public class ErpProjectReport extends TenantEntity { */ private String projectCode; + /** + * 部门名称 + */ + @TableField(exist = false) + private String deptName; + /** + * 项目经理名称 + */ + @TableField(exist = false) + private String managerName; + + /** + * 部门负责人名称 + */ + @TableField(exist = false) + private String chargeName; + + /** + * 分管副总名称 + */ + @TableField(exist = false) + private String deputyName; } 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 index 3dbfde35..8b7bb2a9 100644 --- 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 @@ -28,7 +28,7 @@ public class ErpProjectReportDetail extends TenantEntity { /** * 项目周报明细ID */ - @TableId(value = "report_detail_id", type = IdType.AUTO) + @TableId(value = "report_detail_id", type = IdType.ASSIGN_ID) private Long reportDetailId; /** 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 index 4ee92d8a..92209544 100644 --- 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 @@ -1,5 +1,6 @@ package org.dromara.oa.erp.domain.bo; +import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -90,5 +91,23 @@ public class ErpProjectReportBo extends BaseEntity { */ private String projectCode; + /** + * 部门名称 + */ + private String deptName; + /** + * 项目经理名称 + */ + private String managerName; + + /** + * 部门负责人名称 + */ + private String chargeName; + + /** + * 分管副总名称 + */ + private String deputyName; } 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 index b8b1a14c..c66444f7 100644 --- 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 @@ -1,5 +1,6 @@ package org.dromara.oa.erp.domain.bo; +import cn.hutool.core.util.ObjectUtil; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -7,8 +8,12 @@ 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 org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; /** * 项目周报明细业务对象 erp_project_report_detail @@ -96,6 +101,10 @@ public class ErpProjectReportDetailBo extends BaseEntity { * 流程状态 */ private String flowStatus; + /** + * 流程定义编码 + */ + private String flowCode; /** * 排序号 @@ -127,5 +136,49 @@ public class ErpProjectReportDetailBo extends BaseEntity { */ private String activeFlag; + /** + * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} + */ + private Map variables; + + /** + * 流程业务扩展信息 + */ + private RemoteFlowInstanceBizExt bizExt; + /** + * 部门名称 + */ + private String deptName; + + /** + * 项目经理名称 + */ + private String managerName; + + /** + * 部门负责人名称 + */ + private String chargeName; + + /** + * 分管副总名称 + */ + private String deputyName; + + public Map getVariables() { + if (variables == null) { + return new HashMap<>(16); + } + variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); + return variables; + } + + public RemoteFlowInstanceBizExt getBizExt() { + if (ObjectUtil.isNull(bizExt)) { + bizExt = new RemoteFlowInstanceBizExt(); + } + return bizExt; + } + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ProjectReportAndDetailWrapperBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ProjectReportAndDetailWrapperBo.java new file mode 100644 index 00000000..5db6429a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ProjectReportAndDetailWrapperBo.java @@ -0,0 +1,12 @@ +package org.dromara.oa.erp.domain.bo; +import jakarta.validation.Valid; +import lombok.Data; + +@Data +public class ProjectReportAndDetailWrapperBo { + @Valid + private ErpProjectReportBo projectReport; + + @Valid + private ErpProjectReportDetailBo projectDetailReport; +} 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 index ebe169a0..40c1e09e 100644 --- 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 @@ -155,5 +155,28 @@ public class ErpProjectReportDetailVo implements Serializable { @ExcelDictFormat(readConverterExp = "1=是,0=否") private String activeFlag; + /** + * 部门名称 + */ + @ExcelProperty(value = "部门名称") + private String deptName; + + /** + * 项目经理名称 + */ + @ExcelProperty(value = "项目经理名称") + private String managerName; + + /** + * 部门负责人名称 + */ + @ExcelProperty(value = "部门负责人名称") + private String chargeName; + + /** + * 分管副总名称 + */ + @ExcelProperty(value = "分管副总名称") + private String deputyName; } 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 index ebc7b758..eddfdd78 100644 --- 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 @@ -2,7 +2,11 @@ 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.ErpContractInfoBo; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; +import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; import java.util.Collection; @@ -65,4 +69,11 @@ public interface IErpProjectReportDetailService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 提交项目周报并提交流程 + * @param + * @return + */ + ErpProjectReportDetailVo projectReportSubmitAndFlowStart(ErpProjectReportBo projectReport, ErpProjectReportDetailBo projectDetailReport); } 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 index 978698b8..b1247d25 100644 --- 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 @@ -1,23 +1,46 @@ package org.dromara.oa.erp.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; +import lombok.extern.slf4j.Slf4j; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.seata.spring.annotation.GlobalTransactional; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.enums.OAStatusEnum; +import org.dromara.common.core.exception.ServiceException; 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.common.tenant.helper.TenantHelper; +import org.dromara.oa.erp.domain.ErpContractInfo; +import org.dromara.oa.erp.domain.ErpProjectReport; import org.dromara.oa.erp.domain.ErpProjectReportDetail; +import org.dromara.oa.erp.domain.bo.ErpContractInfoBo; +import org.dromara.oa.erp.domain.bo.ErpProjectReportBo; import org.dromara.oa.erp.domain.bo.ErpProjectReportDetailBo; +import org.dromara.oa.erp.domain.bo.ProjectReportAndDetailWrapperBo; +import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; import org.dromara.oa.erp.domain.vo.ErpProjectReportDetailVo; +import org.dromara.oa.erp.domain.vo.ErpProjectReportVo; import org.dromara.oa.erp.mapper.ErpProjectReportDetailMapper; +import org.dromara.oa.erp.mapper.ErpProjectReportMapper; import org.dromara.oa.erp.service.IErpProjectReportDetailService; +import org.dromara.oa.erp.service.IErpProjectReportService; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.event.ProcessEvent; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; /** * 项目周报明细Service业务层处理 @@ -27,10 +50,17 @@ import java.util.Map; */ @RequiredArgsConstructor @Service +@Slf4j public class ErpProjectReportDetailServiceImpl implements IErpProjectReportDetailService { + private final IErpProjectReportService erpProjectReportService; + + private final ErpProjectReportDetailMapper baseMapper; + + @DubboReference(timeout = 30000) + private RemoteWorkflowService remoteWorkflowService; /** * 查询项目周报明细 * @@ -146,4 +176,77 @@ public class ErpProjectReportDetailServiceImpl implements IErpProjectReportDetai } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 提交项目周报信息并提交流程 + * @param projectReport + * @param projectDetailReport + * @return + */ + @Override + @GlobalTransactional(rollbackFor = Exception.class) + public ErpProjectReportDetailVo projectReportSubmitAndFlowStart(ErpProjectReportBo projectReport, ErpProjectReportDetailBo projectDetailReport) { + if (projectReport.getReportId() != null) { + ErpProjectReportVo existingReport = erpProjectReportService.queryById(projectReport.getReportId()); + if (existingReport != null) { + erpProjectReportService.updateByBo(projectReport); + } else { + erpProjectReportService.insertByBo(projectReport); + } + } else { + erpProjectReportService.insertByBo(projectReport); + } + ErpProjectReportDetail erpProjectReportDetail = MapstructUtils.convert(projectDetailReport, ErpProjectReportDetail.class); + validEntityBeforeSave(erpProjectReportDetail); + if (StringUtils.isNull(projectDetailReport.getReportDetailId())) { + this.insertByBo(projectDetailReport); + } else { + this.updateByBo(projectDetailReport); + } + // 后端发起需要忽略权限 + projectDetailReport.getVariables().put("ignore", true); + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(projectDetailReport.getReportDetailId().toString()); + startProcess.setFlowCode(projectDetailReport.getFlowCode()); + startProcess.setVariables(projectDetailReport.getVariables()); + startProcess.setBizExt(projectDetailReport.getBizExt()); + projectDetailReport.getBizExt().setBusinessId(startProcess.getBusinessId()); + boolean flagOne = remoteWorkflowService.startCompleteTask(startProcess); + if (!flagOne) { + throw new ServiceException("流程发起异常"); + } + return MapstructUtils.convert(erpProjectReportDetail, ErpProjectReportDetailVo.class); + } + + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.flowCode =='XMZB'") + public void processHandler(ProcessEvent processEvent) { + TenantHelper.dynamic(processEvent.getTenantId(), () -> { + log.info("当前任务执行了{}", processEvent.toString()); + ErpProjectReportDetail projectReportDetail = baseMapper.selectById(Convert.toLong(processEvent.getBusinessId())); + projectReportDetail.setFlowStatus(processEvent.getStatus()); + Map params = processEvent.getParams(); + if (MapUtil.isNotEmpty(params)) { + // 办理人 + String handler = Convert.toStr(params.get("handler")); + } + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) { + projectReportDetail.setProjectReportStatus(OAStatusEnum.APPROVING.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { + projectReportDetail.setProjectReportStatus(OAStatusEnum.COMPLETED.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { + projectReportDetail.setProjectReportStatus(OAStatusEnum.INVALID.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { + projectReportDetail.setProjectReportStatus(OAStatusEnum.DRAFT.getStatus()); + } + baseMapper.updateById(projectReportDetail); + }); + } } 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 index 10e74258..19d98791 100644 --- 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 @@ -38,23 +38,23 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { * @return 项目周报信息 */ @Override - public ErpProjectReportVo queryById(Long reportId){ + 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.selectCustomErpProjectReportVoList(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } + /** + * 分页查询项目周报信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目周报信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectReportBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectCustomErpProjectReportVoList(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } /** * 查询符合条件的项目周报信息列表 @@ -71,21 +71,27 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { 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()) -; + .selectAll(ErpProjectReport.class) + .eq(bo.getProjectId() != null, ErpProjectReport::getProjectId, bo.getProjectId()) + .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()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectReport::getProjectName, bo.getProjectName()) + .like(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectReport::getProjectCode, bo.getProjectCode()) + // 关联表条件 - 使用 apply 方法添加 + .apply(StringUtils.isNotBlank(bo.getDeptName()), "d.dept_name LIKE CONCAT('%', {0}, '%')", bo.getDeptName()) + .apply(StringUtils.isNotBlank(bo.getManagerName()), "u1.nick_name LIKE CONCAT('%', {0}, '%')", bo.getManagerName()) + .apply(StringUtils.isNotBlank(bo.getChargeName()), "u2.nick_name LIKE CONCAT('%', {0}, '%')", bo.getChargeName()) + .apply(StringUtils.isNotBlank(bo.getDeputyName()), "u3.nick_name LIKE CONCAT('%', {0}, '%')", bo.getDeputyName()); + return lqw; + } /** @@ -121,7 +127,7 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(ErpProjectReport entity){ + private void validEntityBeforeSave(ErpProjectReport entity) { //TODO 做一些数据校验,如唯一约束 } @@ -134,7 +140,7 @@ public class ErpProjectReportServiceImpl implements IErpProjectReportService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; 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 index f31353d3..900372e4 100644 --- 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 @@ -37,7 +37,8 @@ left join sys_user u1 on u1.user_id = t.manager_id left join sys_user u2 on u2.user_id = t.charge_id left join sys_user u3 on u3.user_id = t.deputy_id - ${ew.getCustomSqlSegment} + ${ew.getCustomSqlSegment} +