From fc70c81d0681133aac7fc880110055cc9e8f38fb Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 23 Oct 2025 09:12:41 +0800 Subject: [PATCH 1/7] =?UTF-8?q?1.0.15=20=E5=90=88=E5=90=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/auth/controller/TokenController.java | 2 +- .../oa/erp/controller/ErpContractInfoController.java | 4 ++-- .../dromara/oa/erp/mapper/ErpContractInfoMapper.java | 6 ++++++ .../oa/erp/service/IErpContractInfoService.java | 2 +- .../erp/service/impl/ErpContractInfoServiceImpl.java | 12 +++++++++--- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java index cd9f8d61..a088f789 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java @@ -104,7 +104,7 @@ public class TokenController { Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { - remoteMessageService.publishMessage(List.of(userId), "欢迎登录RuoYi-Cloud-Plus微服务管理系统"); + remoteMessageService.publishMessage(List.of(userId), "欢迎登录海威经营管理信息化系统"); }, 5, TimeUnit.SECONDS); return R.ok(loginVo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java index a216126f..9adc17ce 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java @@ -76,8 +76,8 @@ public class ErpContractInfoController extends BaseController { @Log(title = "合同信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody ErpContractInfoBo bo) { - return toAjax(erpContractInfoService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody ErpContractInfoBo bo) { + return R.ok(erpContractInfoService.insertByBo(bo)); } /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java index 25d597be..a9ac7557 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java @@ -5,6 +5,8 @@ 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.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.oa.erp.domain.ErpContractInfo; import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -24,6 +26,10 @@ public interface ErpContractInfoMapper extends BaseMapperPlus selectCustomErpContractInfoVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); /** diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java index 1fe7fa2f..e46c0fb5 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java @@ -48,7 +48,7 @@ public interface IErpContractInfoService { * @param bo 合同信息 * @return 是否新增成功 */ - Boolean insertByBo(ErpContractInfoBo bo); + ErpContractInfoVo insertByBo(ErpContractInfoBo bo); /** * 修改合同信息 diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java index 7e5bd7cb..cd343d20 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java @@ -47,7 +47,13 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { */ @Override public ErpContractInfoVo queryById(Long contractId) { - return baseMapper.selectVoById(contractId); + ErpContractInfoVo contractInfoVo = baseMapper.selectVoById(contractId); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpContractMaterial.class) + .selectAll(ErpContractMaterial.class) + .eq(contractId != null, ErpContractMaterial::getContractId, contractId); + List contractMaterialList = contractMaterialMapper.selectList(lqw); + contractInfoVo.setContractMaterialList(contractMaterialList); + return contractInfoVo; } /** @@ -108,7 +114,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean insertByBo(ErpContractInfoBo bo) { + public ErpContractInfoVo insertByBo(ErpContractInfoBo bo) { ErpContractInfo add = MapstructUtils.convert(bo, ErpContractInfo.class); validEntityBeforeSave(add); List contractMaterialList = bo.getContractMaterialList(); @@ -120,7 +126,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { contractMaterialMapper.insert(erpContractMaterial); } } - return flag; + return MapstructUtils.convert(add, ErpContractInfoVo.class); } /** From b50e664c9925e6df1c14922d57a62e6d1d6a32bf Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 23 Oct 2025 17:08:14 +0800 Subject: [PATCH 2/7] =?UTF-8?q?1.0.16=20=E6=9F=A5=E8=AF=A2=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E9=83=A8=E9=97=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/system/SysDeptController.java | 10 ++++++++++ .../org/dromara/system/service/ISysDeptService.java | 2 ++ .../system/service/impl/SysDeptServiceImpl.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index c88aa6d3..3637fd5b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -143,4 +143,14 @@ public class SysDeptController extends BaseController { return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds))); } + /** + * 查询全部部门列表 + * @param dept + * @return + */ + @GetMapping("/allListDept") + public R> allListDept(SysDeptBo dept) { + return R.ok(deptService.selectAllListDept(dept)); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index 6d6d2105..0a7cda22 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -144,4 +144,6 @@ public interface ISysDeptService { */ int deleteDeptById(Long deptId); + + List selectAllListDept(SysDeptBo dept); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index dda42006..d232494b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -381,4 +381,10 @@ public class SysDeptServiceImpl implements ISysDeptService { return baseMapper.deleteById(deptId); } + @Override + public List selectAllListDept(SysDeptBo dept) { + LambdaQueryWrapper lqw = buildQueryWrapper(dept); + return baseMapper.selectVoList(lqw); + } + } From 0c90d0884c96b6848ff5138acbee33fde59bfb62 Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 23 Oct 2025 17:08:55 +0800 Subject: [PATCH 3/7] =?UTF-8?q?1.0.17=20=E6=8F=90=E4=BA=A4=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=BF=A1=E6=81=AF=E5=B9=B6=E6=8F=90=E4=BA=A4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ErpContractInfoController.java | 13 +++++ .../oa/erp/domain/bo/ErpContractInfoBo.java | 39 ++++++++++++++- .../oa/erp/mapper/ErpContractInfoMapper.java | 8 +++- .../erp/service/IErpContractInfoService.java | 7 +++ .../impl/ErpContractInfoServiceImpl.java | 48 ++++++++++++++++++- 5 files changed, 110 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java index 9adc17ce..d168c722 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java @@ -80,6 +80,19 @@ public class ErpContractInfoController extends BaseController { return R.ok(erpContractInfoService.insertByBo(bo)); } + /** + * 提交合同信息并提交流程 + * @param bo + * @return + */ + @SaCheckPermission("oa/erp:contractInfo:add") + @Log(title = "合同信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/contractSubmitAndFlowStart") + public R contractSubmitAndFlowStart(@Validated(AddGroup.class) @RequestBody ErpContractInfoBo bo) { + return R.ok(erpContractInfoService.contractSubmitAndFlowStart(bo)); + } + /** * 修改合同信息 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java index 58da769c..a41afda7 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java @@ -1,5 +1,6 @@ package org.dromara.oa.erp.domain.bo; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.annotation.TableField; import org.dromara.oa.erp.domain.ErpContractInfo; import org.dromara.common.mybatis.core.domain.BaseEntity; @@ -10,11 +11,11 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.math.BigDecimal; -import java.util.Date; -import java.util.List; +import java.util.*; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.oa.erp.domain.ErpContractMaterial; +import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; /** * 合同信息业务对象 erp_contract_info @@ -198,4 +199,38 @@ public class ErpContractInfoBo extends BaseEntity { */ private String deptName; + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 办理人(可不填 用于覆盖当前节点办理人) + */ + private String handler; + + /** + * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} + */ + private Map variables; + + /** + * 流程业务扩展信息 + */ + private RemoteFlowInstanceBizExt bizExt; + + 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/mapper/ErpContractInfoMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java index a9ac7557..1122d73f 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java @@ -27,8 +27,8 @@ public interface ErpContractInfoMapper extends BaseMapperPlus selectCustomErpContractInfoVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); @@ -38,6 +38,10 @@ public interface ErpContractInfoMapper extends BaseMapperPlus selectCustomErpContractInfoVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java index e46c0fb5..d30ab633 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java @@ -66,4 +66,11 @@ public interface IErpContractInfoService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 提交合同信息并提交流程 + * @param bo + * @return + */ + ErpContractInfoVo contractSubmitAndFlowStart(ErpContractInfoBo bo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java index cd343d20..d9d605f5 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.oa.erp.service.impl; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.seata.spring.annotation.GlobalTransactional; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -11,6 +13,8 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; import org.dromara.oa.erp.domain.ErpContractMaterial; import org.dromara.oa.erp.mapper.ErpContractMaterialMapper; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; import org.springframework.stereotype.Service; import org.dromara.oa.erp.domain.bo.ErpContractInfoBo; import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; @@ -39,6 +43,9 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { private final ErpContractMaterialMapper contractMaterialMapper; + @DubboReference(timeout = 30000) + private RemoteWorkflowService remoteWorkflowService; + /** * 查询合同信息 * @@ -102,7 +109,8 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpContractInfo::getPaymentMethod, bo.getPaymentMethod()) .eq(bo.getSignatureAppendix() != null, ErpContractInfo::getSignatureAppendix, bo.getSignatureAppendix()) .eq(bo.getTaxRate() != null, ErpContractInfo::getTaxRate, bo.getTaxRate()) - .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractInfo::getActiveFlag, bo.getActiveFlag()); + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractInfo::getActiveFlag, bo.getActiveFlag()) + .orderByDesc(ErpContractInfo::getCreateTime); return lqw; } @@ -185,4 +193,42 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 提交合同信息并提交流程 + * + * @param bo + * @return + */ + @Override + @GlobalTransactional(rollbackFor = Exception.class) + public ErpContractInfoVo contractSubmitAndFlowStart(ErpContractInfoBo bo) { + ErpContractInfo add = MapstructUtils.convert(bo, ErpContractInfo.class); + validEntityBeforeSave(add); + List contractMaterialList = bo.getContractMaterialList(); + boolean flag = baseMapper.insert(add) > 0; + if (flag && contractMaterialList != null && !contractMaterialList.isEmpty()) { + bo.setContractId(add.getContractId()); + for (ErpContractMaterial erpContractMaterial : contractMaterialList) { + erpContractMaterial.setContractId(add.getContractId()); + contractMaterialMapper.insert(erpContractMaterial); + } + } + if (flag) { + // 后端发起需要忽略权限 + bo.getVariables().put("ignore", true); + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(bo.getContractId().toString()); + startProcess.setFlowCode(bo.getFlowCode()); + startProcess.setVariables(bo.getVariables()); + startProcess.setBizExt(bo.getBizExt()); + bo.getBizExt().setBusinessId(startProcess.getBusinessId()); + boolean flagOne = remoteWorkflowService.startCompleteTask(startProcess); + if (!flagOne) { + throw new ServiceException("流程发起异常"); + } + } + return MapstructUtils.convert(add, ErpContractInfoVo.class); + } + } From 02ff40fe9732845d2f983610dbd59efb0df4d86f Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 24 Oct 2025 10:19:28 +0800 Subject: [PATCH 4/7] =?UTF-8?q?1.0.18=20=E5=8F=96=E6=B6=88=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=A0=91=E3=80=81=E7=94=A8=E6=88=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysDeptServiceImpl.java | 2 +- .../org/dromara/system/service/impl/SysUserServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index d232494b..01b37f29 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -85,7 +85,7 @@ public class SysDeptServiceImpl implements ISysDeptService { @Override public List> selectDeptTreeList(SysDeptBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - List depts = baseMapper.selectDeptList(lqw); + List depts = baseMapper.selectVoList(lqw); return buildDeptTreeSelect(depts); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index dd3aec86..b06c152c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -58,7 +58,7 @@ public class SysUserServiceImpl implements ISysUserService { @Override public TableDataInfo selectPageUserList(SysUserBo user, PageQuery pageQuery) { - Page page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); + Page page = baseMapper.selectVoPage(pageQuery.build(), this.buildQueryWrapper(user)); return TableDataInfo.build(page); } From 66099d81ef33e1b33fc11803cf1a1dc5cf131732 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 24 Oct 2025 10:28:58 +0800 Subject: [PATCH 5/7] =?UTF-8?q?1.0.19=20=E6=8F=90=E4=BA=A4=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=BF=A1=E6=81=AF=E5=B9=B6=E6=8F=90=E4=BA=A4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E3=80=81=E5=90=88=E5=90=8C=E6=B5=81=E7=A8=8B=E7=9B=91?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/enums/OAStatusEnum.java | 77 +++++++++++++++++++ ruoyi-modules/ruoyi-oa/pom.xml | 5 ++ .../impl/ErpContractInfoServiceImpl.java | 73 ++++++++++++------ 3 files changed, 130 insertions(+), 25 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OAStatusEnum.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OAStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OAStatusEnum.java new file mode 100644 index 00000000..957e93b9 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OAStatusEnum.java @@ -0,0 +1,77 @@ +package org.dromara.common.core.enums; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StringUtils; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * OA业务状态枚举 + * + * @author may + */ +@Getter +@AllArgsConstructor +public enum OAStatusEnum { + + /** + * 暂存 + */ + DRAFT("1", "暂存"), + + /** + * 审批 + */ + APPROVING("2", "审批中"), + + /** + * 可用 + */ + COMPLETED("3", "可用"); + + /** + * 状态 + */ + private final String status; + + /** + * 描述 + */ + private final String desc; + + private static final Map STATUS_MAP = Arrays.stream(OAStatusEnum.values()) + .collect(Collectors.toConcurrentMap(OAStatusEnum::getStatus, Function.identity())); + + /** + * 根据状态获取对应的 BusinessStatusEnum 枚举 + * + * @param status 业务状态码 + * @return 对应的 BusinessStatusEnum 枚举,如果找不到则返回 null + */ + public static OAStatusEnum getByStatus(String status) { + // 使用 STATUS_MAP 获取对应的枚举,若找不到则返回 null + return STATUS_MAP.get(status); + } + + /** + * 根据状态获取对应的业务状态描述信息 + * + * @param status 业务状态码 + * @return 返回业务状态描述,若状态码为空或未找到对应的枚举,返回空字符串 + */ + public static String findByStatus(String status) { + if (StringUtils.isBlank(status)) { + return StrUtil.EMPTY; + } + OAStatusEnum statusEnum = STATUS_MAP.get(status); + return (statusEnum != null) ? statusEnum.getDesc() : StrUtil.EMPTY; + } + +} diff --git a/ruoyi-modules/ruoyi-oa/pom.xml b/ruoyi-modules/ruoyi-oa/pom.xml index ab199088..69f70aa8 100644 --- a/ruoyi-modules/ruoyi-oa/pom.xml +++ b/ruoyi-modules/ruoyi-oa/pom.xml @@ -105,6 +105,11 @@ ruoyi-api-workflow + + org.dromara + ruoyi-common-bus + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java index d9d605f5..fa9c8263 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java @@ -1,7 +1,12 @@ package org.dromara.oa.erp.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapUtil; +import lombok.extern.slf4j.Slf4j; 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; @@ -11,10 +16,13 @@ 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.tenant.helper.TenantHelper; import org.dromara.oa.erp.domain.ErpContractMaterial; import org.dromara.oa.erp.mapper.ErpContractMaterialMapper; 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 org.dromara.oa.erp.domain.bo.ErpContractInfoBo; import org.dromara.oa.erp.domain.vo.ErpContractInfoVo; @@ -23,10 +31,7 @@ import org.dromara.oa.erp.mapper.ErpContractInfoMapper; import org.dromara.oa.erp.service.IErpContractInfoService; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +42,7 @@ import java.util.stream.Collectors; */ @RequiredArgsConstructor @Service +@Slf4j public class ErpContractInfoServiceImpl implements IErpContractInfoService { private final ErpContractInfoMapper baseMapper; @@ -205,30 +211,47 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { public ErpContractInfoVo contractSubmitAndFlowStart(ErpContractInfoBo bo) { ErpContractInfo add = MapstructUtils.convert(bo, ErpContractInfo.class); validEntityBeforeSave(add); - List contractMaterialList = bo.getContractMaterialList(); - boolean flag = baseMapper.insert(add) > 0; - if (flag && contractMaterialList != null && !contractMaterialList.isEmpty()) { - bo.setContractId(add.getContractId()); - for (ErpContractMaterial erpContractMaterial : contractMaterialList) { - erpContractMaterial.setContractId(add.getContractId()); - contractMaterialMapper.insert(erpContractMaterial); - } + if (StringUtils.isNull(bo.getContractId())) { + this.insertByBo(bo); + } else { + this.updateByBo(bo); } - if (flag) { - // 后端发起需要忽略权限 - bo.getVariables().put("ignore", true); - RemoteStartProcess startProcess = new RemoteStartProcess(); - startProcess.setBusinessId(bo.getContractId().toString()); - startProcess.setFlowCode(bo.getFlowCode()); - startProcess.setVariables(bo.getVariables()); - startProcess.setBizExt(bo.getBizExt()); - bo.getBizExt().setBusinessId(startProcess.getBusinessId()); - boolean flagOne = remoteWorkflowService.startCompleteTask(startProcess); - if (!flagOne) { - throw new ServiceException("流程发起异常"); - } + // 后端发起需要忽略权限 + bo.getVariables().put("ignore", true); + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(bo.getContractId().toString()); + startProcess.setFlowCode(bo.getFlowCode()); + startProcess.setVariables(bo.getVariables()); + startProcess.setBizExt(bo.getBizExt()); + bo.getBizExt().setBusinessId(startProcess.getBusinessId()); + boolean flagOne = remoteWorkflowService.startCompleteTask(startProcess); + if (!flagOne) { + throw new ServiceException("流程发起异常"); } return MapstructUtils.convert(add, ErpContractInfoVo.class); } + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.flowCode =='OAC'") + public void processHandler(ProcessEvent processEvent) { + TenantHelper.dynamic(processEvent.getTenantId(), () -> { + log.info("当前任务执行了{}", processEvent.toString()); + ErpContractInfo contractInfo = baseMapper.selectById(Convert.toLong(processEvent.getBusinessId())); + contractInfo.setFlowStatus(processEvent.getStatus()); + Map params = processEvent.getParams(); + if (MapUtil.isNotEmpty(params)) { + // 办理人 + String handler = Convert.toStr(params.get("handler")); + } + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { + contractInfo.setContractStatus(OAStatusEnum.COMPLETED.getStatus()); + } + baseMapper.updateById(contractInfo); + }); + } + } From f3244f378f35769e29b5d1caee7aec2471364931 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 24 Oct 2025 16:58:28 +0800 Subject: [PATCH 6/7] =?UTF-8?q?1.0.20=20=E9=A1=B9=E7=9B=AE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E9=A1=B9=E7=9B=AE=E4=BF=A1=E6=81=AF=E3=80=81?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=85=B3=E8=81=94=E5=90=88=E5=90=8C=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ErpProjectContractsController.java | 116 ++++++++++++ .../controller/ErpProjectInfoController.java | 116 ++++++++++++ .../controller/ErpProjectTypeController.java | 116 ++++++++++++ .../oa/erp/domain/ErpProjectContracts.java | 62 +++++++ .../dromara/oa/erp/domain/ErpProjectInfo.java | 138 +++++++++++++++ .../dromara/oa/erp/domain/ErpProjectType.java | 67 +++++++ .../erp/domain/bo/ErpProjectContractsBo.java | 54 ++++++ .../oa/erp/domain/bo/ErpProjectInfoBo.java | 135 ++++++++++++++ .../oa/erp/domain/bo/ErpProjectTypeBo.java | 59 +++++++ .../erp/domain/vo/ErpProjectContractsVo.java | 69 ++++++++ .../oa/erp/domain/vo/ErpProjectInfoVo.java | 165 ++++++++++++++++++ .../oa/erp/domain/vo/ErpProjectTypeVo.java | 76 ++++++++ .../erp/mapper/ErpProjectContractsMapper.java | 37 ++++ .../oa/erp/mapper/ErpProjectInfoMapper.java | 37 ++++ .../oa/erp/mapper/ErpProjectTypeMapper.java | 37 ++++ .../service/IErpProjectContractsService.java | 69 ++++++++ .../erp/service/IErpProjectInfoService.java | 69 ++++++++ .../erp/service/IErpProjectTypeService.java | 59 +++++++ .../impl/ErpProjectContractsServiceImpl.java | 134 ++++++++++++++ .../impl/ErpProjectInfoServiceImpl.java | 150 ++++++++++++++++ .../impl/ErpProjectTypeServiceImpl.java | 119 +++++++++++++ .../oa/erp/ErpProjectContractsMapper.xml | 14 ++ .../mapper/oa/erp/ErpProjectInfoMapper.xml | 14 ++ .../mapper/oa/erp/ErpProjectTypeMapper.xml | 14 ++ 24 files changed, 1926 insertions(+) create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectTypeController.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectContracts.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectType.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectContractsBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectTypeBo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectContractsVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectTypeVo.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectContractsMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectInfoMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectTypeMapper.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectContractsService.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectInfoService.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectTypeService.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectContractsServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectTypeServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectContractsMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectTypeMapper.xml diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java new file mode 100644 index 00000000..cd107745 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.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.ErpProjectContractsVo; +import org.dromara.oa.erp.domain.bo.ErpProjectContractsBo; +import org.dromara.oa.erp.service.IErpProjectContractsService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 项目关联合同 + * 前端访问路由地址为:/oa/erp/projectContracts + * + * @author Yinq + * @date 2025-10-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/projectContracts") +public class ErpProjectContractsController extends BaseController { + + private final IErpProjectContractsService erpProjectContractsService; + + /** + * 查询项目关联合同列表 + */ + @SaCheckPermission("oa/erp:projectContracts:list") + @GetMapping("/list") + public TableDataInfo list(ErpProjectContractsBo bo, PageQuery pageQuery) { + return erpProjectContractsService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目关联合同列表 + */ + @SaCheckPermission("oa/erp:projectContracts:export") + @Log(title = "项目关联合同", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpProjectContractsBo bo, HttpServletResponse response) { + List list = erpProjectContractsService.queryList(bo); + ExcelUtil.exportExcel(list, "项目关联合同", ErpProjectContractsVo.class, response); + } + + /** + * 获取项目关联合同详细信息 + * + * @param projectContractsId 主键 + */ + @SaCheckPermission("oa/erp:projectContracts:query") + @GetMapping("/{projectContractsId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("projectContractsId") Long projectContractsId) { + return R.ok(erpProjectContractsService.queryById(projectContractsId)); + } + + /** + * 新增项目关联合同 + */ + @SaCheckPermission("oa/erp:projectContracts:add") + @Log(title = "项目关联合同", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpProjectContractsBo bo) { + return toAjax(erpProjectContractsService.insertByBo(bo)); + } + + /** + * 修改项目关联合同 + */ + @SaCheckPermission("oa/erp:projectContracts:edit") + @Log(title = "项目关联合同", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpProjectContractsBo bo) { + return toAjax(erpProjectContractsService.updateByBo(bo)); + } + + /** + * 删除项目关联合同 + * + * @param projectContractsIds 主键串 + */ + @SaCheckPermission("oa/erp:projectContracts:remove") + @Log(title = "项目关联合同", businessType = BusinessType.DELETE) + @DeleteMapping("/{projectContractsIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("projectContractsIds") Long[] projectContractsIds) { + return toAjax(erpProjectContractsService.deleteWithValidByIds(List.of(projectContractsIds), true)); + } + + /** + * 下拉框查询项目关联合同列表 + */ + @GetMapping("/getErpProjectContractsList") + public R> getErpProjectContractsList(ErpProjectContractsBo bo) { + List list = erpProjectContractsService.queryList(bo); + return R.ok(list); + } + +} 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 new file mode 100644 index 00000000..42c4b82f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectInfoController.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.ErpProjectInfoVo; +import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; +import org.dromara.oa.erp.service.IErpProjectInfoService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 项目信息 + * 前端访问路由地址为:/oa/erp/projectInfo + * + * @author Yinq + * @date 2025-10-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/projectInfo") +public class ErpProjectInfoController extends BaseController { + + private final IErpProjectInfoService erpProjectInfoService; + + /** + * 查询项目信息列表 + */ + @SaCheckPermission("oa/erp:projectInfo:list") + @GetMapping("/list") + public TableDataInfo list(ErpProjectInfoBo bo, PageQuery pageQuery) { + return erpProjectInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目信息列表 + */ + @SaCheckPermission("oa/erp:projectInfo:export") + @Log(title = "项目信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpProjectInfoBo bo, HttpServletResponse response) { + List list = erpProjectInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "项目信息", ErpProjectInfoVo.class, response); + } + + /** + * 获取项目信息详细信息 + * + * @param projectId 主键 + */ + @SaCheckPermission("oa/erp:projectInfo:query") + @GetMapping("/{projectId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("projectId") Long projectId) { + return R.ok(erpProjectInfoService.queryById(projectId)); + } + + /** + * 新增项目信息 + */ + @SaCheckPermission("oa/erp:projectInfo:add") + @Log(title = "项目信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpProjectInfoBo bo) { + return toAjax(erpProjectInfoService.insertByBo(bo)); + } + + /** + * 修改项目信息 + */ + @SaCheckPermission("oa/erp:projectInfo:edit") + @Log(title = "项目信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpProjectInfoBo bo) { + return toAjax(erpProjectInfoService.updateByBo(bo)); + } + + /** + * 删除项目信息 + * + * @param projectIds 主键串 + */ + @SaCheckPermission("oa/erp:projectInfo:remove") + @Log(title = "项目信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{projectIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("projectIds") Long[] projectIds) { + return toAjax(erpProjectInfoService.deleteWithValidByIds(List.of(projectIds), true)); + } + + /** + * 下拉框查询项目信息列表 + */ + @GetMapping("/getErpProjectInfoList") + public R> getErpProjectInfoList(ErpProjectInfoBo bo) { + List list = erpProjectInfoService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectTypeController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectTypeController.java new file mode 100644 index 00000000..a75c9c4e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectTypeController.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.ErpProjectTypeVo; +import org.dromara.oa.erp.domain.bo.ErpProjectTypeBo; +import org.dromara.oa.erp.service.IErpProjectTypeService; + +/** + * 项目类型信息 + * 前端访问路由地址为:/oa/erp/projectType + * + * @author Yinq + * @date 2025-10-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/erp/projectType") +public class ErpProjectTypeController extends BaseController { + + private final IErpProjectTypeService erpProjectTypeService; + + /** + * 查询项目类型信息列表 + */ + @SaCheckPermission("oa/erp:projectType:list") + @GetMapping("/list") + public R> list(ErpProjectTypeBo bo) { + List list = erpProjectTypeService.queryList(bo); + return R.ok(list); + } + + /** + * 导出项目类型信息列表 + */ + @SaCheckPermission("oa/erp:projectType:export") + @Log(title = "项目类型信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ErpProjectTypeBo bo, HttpServletResponse response) { + List list = erpProjectTypeService.queryList(bo); + ExcelUtil.exportExcel(list, "项目类型信息", ErpProjectTypeVo.class, response); + } + + /** + * 获取项目类型信息详细信息 + * + * @param projectTypeId 主键 + */ + @SaCheckPermission("oa/erp:projectType:query") + @GetMapping("/{projectTypeId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("projectTypeId") Long projectTypeId) { + return R.ok(erpProjectTypeService.queryById(projectTypeId)); + } + + /** + * 新增项目类型信息 + */ + @SaCheckPermission("oa/erp:projectType:add") + @Log(title = "项目类型信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ErpProjectTypeBo bo) { + return toAjax(erpProjectTypeService.insertByBo(bo)); + } + + /** + * 修改项目类型信息 + */ + @SaCheckPermission("oa/erp:projectType:edit") + @Log(title = "项目类型信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ErpProjectTypeBo bo) { + return toAjax(erpProjectTypeService.updateByBo(bo)); + } + + /** + * 删除项目类型信息 + * + * @param projectTypeIds 主键串 + */ + @SaCheckPermission("oa/erp:projectType:remove") + @Log(title = "项目类型信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{projectTypeIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("projectTypeIds") Long[] projectTypeIds) { + return toAjax(erpProjectTypeService.deleteWithValidByIds(List.of(projectTypeIds), true)); + } + + /** + * 下拉框查询项目类型信息列表 + */ + @GetMapping("/getErpProjectTypeList") + public R> getErpProjectTypeList(ErpProjectTypeBo bo) { + List list = erpProjectTypeService.queryList(bo); + return R.ok(list); + } + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectContracts.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectContracts.java new file mode 100644 index 00000000..457964bb --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectContracts.java @@ -0,0 +1,62 @@ +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_project_contracts + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_project_contracts") +public class ErpProjectContracts extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 关联ID + */ + @TableId(value = "project_contracts_id", type = IdType.AUTO) + private Long projectContractsId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 合同ID + */ + private Long contractId; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + 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/ErpProjectInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java new file mode 100644 index 00000000..891e4d52 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectInfo.java @@ -0,0 +1,138 @@ +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.math.BigDecimal; + +import java.io.Serial; + +/** + * 项目信息对象 erp_project_info + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_project_info") +public class ErpProjectInfo extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目ID + */ + @TableId(value = "project_id", type = IdType.ASSIGN_ID) + private Long projectId; + + /** + * 有无合同(1有 2无) + */ + private String contractFlag; + + /** + * 项目编号 + */ + private String projectCode; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售) + */ + private String businessDirection; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + private String projectCategory; + + /** + * 备件标识(1是 0否) + */ + private String spareFlag; + + /** + * 项目类型ID + */ + private Long projectTypeId; + + /** + * 付款方式 + */ + private String paymentMethod; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 项目经理 + */ + private Long managerId; + + /** + * 部门负责人 + */ + private Long chargeId; + + /** + * 分管副总 + */ + private Long deputyId; + + /** + * 抄送人员 + */ + private String peopleId; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 项目状态(1暂存 2审批中 3可用) + */ + private String projectStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 备注 + */ + 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/ErpProjectType.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectType.java new file mode 100644 index 00000000..b703df23 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpProjectType.java @@ -0,0 +1,67 @@ +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_project_type + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("erp_project_type") +public class ErpProjectType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目类型ID + */ + @TableId(value = "project_type_id", type = IdType.AUTO) + private Long projectTypeId; + + /** + * 父级ID + */ + private Long parentId; + + /** + * 项目类型名称 + */ + private String typeName; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备件标识(1是 0否) + */ + private String spareFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 顶级标识(1是 0否) + */ + private String topFlag; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectContractsBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectContractsBo.java new file mode 100644 index 00000000..c89e2a5f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectContractsBo.java @@ -0,0 +1,54 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpProjectContracts; +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_project_contracts + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpProjectContracts.class, reverseConvertGenerate = false) +public class ErpProjectContractsBo extends BaseEntity { + + /** + * 关联ID + */ + private Long projectContractsId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 合同ID + */ + private Long contractId; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java new file mode 100644 index 00000000..d2cdd2d7 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectInfoBo.java @@ -0,0 +1,135 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpProjectInfo; +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.math.BigDecimal; + +/** + * 项目信息业务对象 erp_project_info + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpProjectInfo.class, reverseConvertGenerate = false) +public class ErpProjectInfoBo extends BaseEntity { + + /** + * 项目ID + */ + private Long projectId; + + /** + * 有无合同(1有 2无) + */ + @NotBlank(message = "有无合同(1有 2无)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractFlag; + + /** + * 项目编号 + */ + @NotBlank(message = "项目编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectCode; + + /** + * 项目名称 + */ + @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectName; + + /** + * 业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售) + */ + @NotBlank(message = "业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String businessDirection; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + @NotBlank(message = "项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectCategory; + + /** + * 备件标识(1是 0否) + */ + private String spareFlag; + + /** + * 项目类型ID + */ + private Long projectTypeId; + + /** + * 付款方式 + */ + private String paymentMethod; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 项目经理 + */ + private Long managerId; + + /** + * 部门负责人 + */ + private Long chargeId; + + /** + * 分管副总 + */ + private Long deputyId; + + /** + * 抄送人员 + */ + private String peopleId; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 项目状态(1暂存 2审批中 3可用) + */ + private String projectStatus; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 合同ID(预留) + */ + private Long contractId; + + /** + * 备注 + */ + private String remark; + + /** + * 激活标识(1是 0否) + */ + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectTypeBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectTypeBo.java new file mode 100644 index 00000000..a426e4ff --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpProjectTypeBo.java @@ -0,0 +1,59 @@ +package org.dromara.oa.erp.domain.bo; + +import org.dromara.oa.erp.domain.ErpProjectType; +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_project_type + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ErpProjectType.class, reverseConvertGenerate = false) +public class ErpProjectTypeBo extends BaseEntity { + + /** + * 项目类型ID + */ + private Long projectTypeId; + + /** + * 父级ID + */ + private Long parentId; + + /** + * 项目类型名称 + */ + private String typeName; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 备件标识(1是 0否) + */ + private String spareFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 顶级标识(1是 0否) + */ + private String topFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectContractsVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectContractsVo.java new file mode 100644 index 00000000..b49205ca --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectContractsVo.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpProjectContracts; +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_project_contracts + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectContracts.class) +public class ErpProjectContractsVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 关联ID + */ + @ExcelProperty(value = "关联ID") + private Long projectContractsId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 合同ID + */ + @ExcelProperty(value = "合同ID") + private Long contractId; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java new file mode 100644 index 00000000..aa6ec86d --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectInfoVo.java @@ -0,0 +1,165 @@ +package org.dromara.oa.erp.domain.vo; + +import java.math.BigDecimal; +import org.dromara.oa.erp.domain.ErpProjectInfo; +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_project_info + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectInfo.class) +public class ErpProjectInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 有无合同(1有 2无) + */ + @ExcelProperty(value = "有无合同", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "contract_flag") + private String contractFlag; + + /** + * 项目编号 + */ + @ExcelProperty(value = "项目编号") + private String projectCode; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 业务方向(1智能轮胎 2轮胎工厂 3快递物流 4锂电 5工业软件 6智能制造 7新行业及零售) + */ + @ExcelProperty(value = "业务方向", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "business_direction") + private String businessDirection; + + /** + * 项目类别(1销售(实施、物流) 2销售(备件) 3研发 4预投) + */ + @ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_category") + private String projectCategory; + + /** + * 备件标识(1是 0否) + */ + @ExcelProperty(value = "备件标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "spare_flag") + private String spareFlag; + + /** + * 项目类型ID + */ + @ExcelProperty(value = "项目类型ID") + private Long projectTypeId; + + /** + * 付款方式 + */ + @ExcelProperty(value = "付款方式") + private String paymentMethod; + + /** + * 部门ID + */ + @ExcelProperty(value = "部门ID") + private Long deptId; + + /** + * 项目经理 + */ + @ExcelProperty(value = "项目经理") + private Long managerId; + + /** + * 部门负责人 + */ + @ExcelProperty(value = "部门负责人") + private Long chargeId; + + /** + * 分管副总 + */ + @ExcelProperty(value = "分管副总") + private Long deputyId; + + /** + * 抄送人员 + */ + @ExcelProperty(value = "抄送人员") + private String peopleId; + + /** + * 金额 + */ + @ExcelProperty(value = "金额") + private BigDecimal amount; + + /** + * 项目状态(1暂存 2审批中 3可用) + */ + @ExcelProperty(value = "项目状态(1暂存 2审批中 3可用)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "project_status") + private String projectStatus; + + /** + * 流程状态 + */ + @ExcelProperty(value = "流程状态") + private String flowStatus; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 合同ID(预留) + */ + @ExcelProperty(value = "合同ID(预留)") + private Long contractId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 激活标识(1是 0否) + */ + @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "active_flag") + private String activeFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectTypeVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectTypeVo.java new file mode 100644 index 00000000..f9e333b6 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpProjectTypeVo.java @@ -0,0 +1,76 @@ +package org.dromara.oa.erp.domain.vo; + +import org.dromara.oa.erp.domain.ErpProjectType; +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_project_type + * + * @author Yinq + * @date 2025-10-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ErpProjectType.class) +public class ErpProjectTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 项目类型ID + */ + @ExcelProperty(value = "项目类型ID") + private Long projectTypeId; + + /** + * 父级ID + */ + @ExcelProperty(value = "父级ID") + private Long parentId; + + /** + * 项目类型名称 + */ + @ExcelProperty(value = "项目类型名称") + private String typeName; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 备件标识(1是 0否) + */ + @ExcelProperty(value = "备件标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "spare_flag") + private String spareFlag; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 顶级标识(1是 0否) + */ + @ExcelProperty(value = "顶级标识", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "top_flag") + private String topFlag; + + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectContractsMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectContractsMapper.java new file mode 100644 index 00000000..6389a4e5 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectContractsMapper.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.ErpProjectContracts; +import org.dromara.oa.erp.domain.vo.ErpProjectContractsVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目关联合同Mapper接口 + * + * @author Yinq + * @date 2025-10-24 + */ +public interface ErpProjectContractsMapper extends BaseMapperPlus { + + /** + * 查询项目关联合同列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目关联合同集合 + */ + public Page selectCustomErpProjectContractsVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目关联合同列表 + * + * @param queryWrapper 条件 + * @return 项目关联合同集合 + */ + public List selectCustomErpProjectContractsVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectInfoMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectInfoMapper.java new file mode 100644 index 00000000..a3a7d377 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectInfoMapper.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.ErpProjectInfo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目信息Mapper接口 + * + * @author Yinq + * @date 2025-10-24 + */ +public interface ErpProjectInfoMapper extends BaseMapperPlus { + + /** + * 查询项目信息列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目信息集合 + */ + public Page selectCustomErpProjectInfoVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目信息列表 + * + * @param queryWrapper 条件 + * @return 项目信息集合 + */ + public List selectCustomErpProjectInfoVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectTypeMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectTypeMapper.java new file mode 100644 index 00000000..deb0c07e --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpProjectTypeMapper.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.ErpProjectType; +import org.dromara.oa.erp.domain.vo.ErpProjectTypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目类型信息Mapper接口 + * + * @author Yinq + * @date 2025-10-24 + */ +public interface ErpProjectTypeMapper extends BaseMapperPlus { + + /** + * 查询项目类型信息列表 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 项目类型信息集合 + */ + public Page selectCustomErpProjectTypeVoList(@Param("page") Page page, @Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + + /** + * 查询项目类型信息列表 + * + * @param queryWrapper 条件 + * @return 项目类型信息集合 + */ + public List selectCustomErpProjectTypeVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper queryWrapper); + +} diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectContractsService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectContractsService.java new file mode 100644 index 00000000..0e9ce200 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectContractsService.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpProjectContracts; +import org.dromara.oa.erp.domain.vo.ErpProjectContractsVo; +import org.dromara.oa.erp.domain.bo.ErpProjectContractsBo; +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 Yinq + * @date 2025-10-24 + */ +public interface IErpProjectContractsService { + + /** + * 查询项目关联合同 + * + * @param projectContractsId 主键 + * @return 项目关联合同 + */ + ErpProjectContractsVo queryById(Long projectContractsId); + + /** + * 分页查询项目关联合同列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目关联合同分页列表 + */ + TableDataInfo queryPageList(ErpProjectContractsBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目关联合同列表 + * + * @param bo 查询条件 + * @return 项目关联合同列表 + */ + List queryList(ErpProjectContractsBo bo); + + /** + * 新增项目关联合同 + * + * @param bo 项目关联合同 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpProjectContractsBo bo); + + /** + * 修改项目关联合同 + * + * @param bo 项目关联合同 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpProjectContractsBo 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/IErpProjectInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectInfoService.java new file mode 100644 index 00000000..dd879d0f --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectInfoService.java @@ -0,0 +1,69 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpProjectInfo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo; +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 Yinq + * @date 2025-10-24 + */ +public interface IErpProjectInfoService { + + /** + * 查询项目信息 + * + * @param projectId 主键 + * @return 项目信息 + */ + ErpProjectInfoVo queryById(Long projectId); + + /** + * 分页查询项目信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目信息分页列表 + */ + TableDataInfo queryPageList(ErpProjectInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目信息列表 + * + * @param bo 查询条件 + * @return 项目信息列表 + */ + List queryList(ErpProjectInfoBo bo); + + /** + * 新增项目信息 + * + * @param bo 项目信息 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpProjectInfoBo bo); + + /** + * 修改项目信息 + * + * @param bo 项目信息 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpProjectInfoBo 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/IErpProjectTypeService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectTypeService.java new file mode 100644 index 00000000..3d00736a --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpProjectTypeService.java @@ -0,0 +1,59 @@ +package org.dromara.oa.erp.service; + +import org.dromara.oa.erp.domain.ErpProjectType; +import org.dromara.oa.erp.domain.vo.ErpProjectTypeVo; +import org.dromara.oa.erp.domain.bo.ErpProjectTypeBo; + +import java.util.Collection; +import java.util.List; + +/** + * 项目类型信息Service接口 + * + * @author Yinq + * @date 2025-10-24 + */ +public interface IErpProjectTypeService { + + /** + * 查询项目类型信息 + * + * @param projectTypeId 主键 + * @return 项目类型信息 + */ + ErpProjectTypeVo queryById(Long projectTypeId); + + + /** + * 查询符合条件的项目类型信息列表 + * + * @param bo 查询条件 + * @return 项目类型信息列表 + */ + List queryList(ErpProjectTypeBo bo); + + /** + * 新增项目类型信息 + * + * @param bo 项目类型信息 + * @return 是否新增成功 + */ + Boolean insertByBo(ErpProjectTypeBo bo); + + /** + * 修改项目类型信息 + * + * @param bo 项目类型信息 + * @return 是否修改成功 + */ + Boolean updateByBo(ErpProjectTypeBo 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/ErpProjectContractsServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectContractsServiceImpl.java new file mode 100644 index 00000000..0b1316be --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectContractsServiceImpl.java @@ -0,0 +1,134 @@ +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.ErpProjectContractsBo; +import org.dromara.oa.erp.domain.vo.ErpProjectContractsVo; +import org.dromara.oa.erp.domain.ErpProjectContracts; +import org.dromara.oa.erp.mapper.ErpProjectContractsMapper; +import org.dromara.oa.erp.service.IErpProjectContractsService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目关联合同Service业务层处理 + * + * @author Yinq + * @date 2025-10-24 + */ +@RequiredArgsConstructor +@Service +public class ErpProjectContractsServiceImpl implements IErpProjectContractsService { + + private final ErpProjectContractsMapper baseMapper; + + /** + * 查询项目关联合同 + * + * @param projectContractsId 主键 + * @return 项目关联合同 + */ + @Override + public ErpProjectContractsVo queryById(Long projectContractsId) { + return baseMapper.selectVoById(projectContractsId); + } + + /** + * 分页查询项目关联合同列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目关联合同分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectContractsBo 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(ErpProjectContractsBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpProjectContractsBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectContracts.class) + .selectAll(ErpProjectContracts.class) + .eq(bo.getProjectId() != null, ErpProjectContracts::getProjectId, bo.getProjectId()) + .eq(bo.getContractId() != null, ErpProjectContracts::getContractId, bo.getContractId()) + .eq(bo.getSortOrder() != null, ErpProjectContracts::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectContracts::getActiveFlag, bo.getActiveFlag()); + return lqw; + } + + /** + * 新增项目关联合同 + * + * @param bo 项目关联合同 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpProjectContractsBo bo) { + ErpProjectContracts add = MapstructUtils.convert(bo, ErpProjectContracts.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setProjectContractsId(add.getProjectContractsId()); + } + return flag; + } + + /** + * 修改项目关联合同 + * + * @param bo 项目关联合同 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpProjectContractsBo bo) { + ErpProjectContracts update = MapstructUtils.convert(bo, ErpProjectContracts.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpProjectContracts 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/ErpProjectInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java new file mode 100644 index 00000000..1d9ad6b1 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java @@ -0,0 +1,150 @@ +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.ErpProjectInfoBo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.domain.ErpProjectInfo; +import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; +import org.dromara.oa.erp.service.IErpProjectInfoService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目信息Service业务层处理 + * + * @author Yinq + * @date 2025-10-24 + */ +@RequiredArgsConstructor +@Service +public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { + + private final ErpProjectInfoMapper baseMapper; + + /** + * 查询项目信息 + * + * @param projectId 主键 + * @return 项目信息 + */ + @Override + public ErpProjectInfoVo queryById(Long projectId){ + return baseMapper.selectVoById(projectId); + } + + /** + * 分页查询项目信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ErpProjectInfoBo 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(ErpProjectInfoBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpProjectInfoBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectInfo.class) + .selectAll(ErpProjectInfo.class) + .eq(StringUtils.isNotBlank(bo.getContractFlag()), ErpProjectInfo::getContractFlag, bo.getContractFlag()) + .eq(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectInfo::getProjectCode, bo.getProjectCode()) + .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectInfo::getProjectName, bo.getProjectName()) + .eq(StringUtils.isNotBlank(bo.getBusinessDirection()), ErpProjectInfo::getBusinessDirection, bo.getBusinessDirection()) + .eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, bo.getProjectCategory()) + .eq(StringUtils.isNotBlank(bo.getSpareFlag()), ErpProjectInfo::getSpareFlag, bo.getSpareFlag()) + .eq(bo.getProjectTypeId() != null, ErpProjectInfo::getProjectTypeId, bo.getProjectTypeId()) + .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectInfo::getPaymentMethod, bo.getPaymentMethod()) + .eq(bo.getDeptId() != null, ErpProjectInfo::getDeptId, bo.getDeptId()) + .eq(bo.getManagerId() != null, ErpProjectInfo::getManagerId, bo.getManagerId()) + .eq(bo.getChargeId() != null, ErpProjectInfo::getChargeId, bo.getChargeId()) + .eq(bo.getDeputyId() != null, ErpProjectInfo::getDeputyId, bo.getDeputyId()) + .eq(StringUtils.isNotBlank(bo.getPeopleId()), ErpProjectInfo::getPeopleId, bo.getPeopleId()) + .eq(bo.getAmount() != null, ErpProjectInfo::getAmount, bo.getAmount()) + .eq(StringUtils.isNotBlank(bo.getProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getProjectStatus()) + .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectInfo::getFlowStatus, bo.getFlowStatus()) + .eq(bo.getSortOrder() != null, ErpProjectInfo::getSortOrder, bo.getSortOrder()) + .eq(bo.getContractId() != null, ErpProjectInfo::getContractId, bo.getContractId()) + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectInfo::getActiveFlag, bo.getActiveFlag()) +; + return lqw; + } + + /** + * 新增项目信息 + * + * @param bo 项目信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpProjectInfoBo bo) { + ErpProjectInfo add = MapstructUtils.convert(bo, ErpProjectInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setProjectId(add.getProjectId()); + } + return flag; + } + + /** + * 修改项目信息 + * + * @param bo 项目信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpProjectInfoBo bo) { + ErpProjectInfo update = MapstructUtils.convert(bo, ErpProjectInfo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpProjectInfo 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/ErpProjectTypeServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectTypeServiceImpl.java new file mode 100644 index 00000000..1ee34525 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectTypeServiceImpl.java @@ -0,0 +1,119 @@ +package org.dromara.oa.erp.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +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.ErpProjectTypeBo; +import org.dromara.oa.erp.domain.vo.ErpProjectTypeVo; +import org.dromara.oa.erp.domain.ErpProjectType; +import org.dromara.oa.erp.mapper.ErpProjectTypeMapper; +import org.dromara.oa.erp.service.IErpProjectTypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目类型信息Service业务层处理 + * + * @author Yinq + * @date 2025-10-24 + */ +@RequiredArgsConstructor +@Service +public class ErpProjectTypeServiceImpl implements IErpProjectTypeService { + + private final ErpProjectTypeMapper baseMapper; + + /** + * 查询项目类型信息 + * + * @param projectTypeId 主键 + * @return 项目类型信息 + */ + @Override + public ErpProjectTypeVo queryById(Long projectTypeId) { + return baseMapper.selectVoById(projectTypeId); + } + + + /** + * 查询符合条件的项目类型信息列表 + * + * @param bo 查询条件 + * @return 项目类型信息列表 + */ + @Override + public List queryList(ErpProjectTypeBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(ErpProjectTypeBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpProjectType.class) + .selectAll(ErpProjectType.class) + .eq(bo.getParentId() != null, ErpProjectType::getParentId, bo.getParentId()) + .like(StringUtils.isNotBlank(bo.getTypeName()), ErpProjectType::getTypeName, bo.getTypeName()) + .eq(bo.getSortOrder() != null, ErpProjectType::getSortOrder, bo.getSortOrder()) + .eq(StringUtils.isNotBlank(bo.getSpareFlag()), ErpProjectType::getSpareFlag, bo.getSpareFlag()) + .eq(StringUtils.isNotBlank(bo.getTopFlag()), ErpProjectType::getTopFlag, bo.getTopFlag()); + return lqw; + } + + /** + * 新增项目类型信息 + * + * @param bo 项目类型信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(ErpProjectTypeBo bo) { + ErpProjectType add = MapstructUtils.convert(bo, ErpProjectType.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setProjectTypeId(add.getProjectTypeId()); + } + return flag; + } + + /** + * 修改项目类型信息 + * + * @param bo 项目类型信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(ErpProjectTypeBo bo) { + ErpProjectType update = MapstructUtils.convert(bo, ErpProjectType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ErpProjectType 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/ErpProjectContractsMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectContractsMapper.xml new file mode 100644 index 00000000..d189af5d --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectContractsMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml new file mode 100644 index 00000000..a5697740 --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectInfoMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectTypeMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectTypeMapper.xml new file mode 100644 index 00000000..5312578b --- /dev/null +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectTypeMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + From f7e70b210cb09ddae6bcf5988e70ab4f373f22d4 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 24 Oct 2025 17:10:54 +0800 Subject: [PATCH 7/7] =?UTF-8?q?1.0.21=20=E5=BF=BD=E7=95=A5logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 69cb3228..363d3440 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ build/* nbbuild/ nbdist/ .nb-gradle/ +logs/ ###################################################################### # Others