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 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-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/controller/ErpContractInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractInfoController.java index a216126f..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 @@ -76,8 +76,21 @@ 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)); + } + + /** + * 提交合同信息并提交流程 + * @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/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/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/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/ErpContractInfoMapper.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/mapper/ErpContractInfoMapper.java index 25d597be..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 @@ -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); /** @@ -32,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/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/IErpContractInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpContractInfoService.java index 1fe7fa2f..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 @@ -48,7 +48,7 @@ public interface IErpContractInfoService { * @param bo 合同信息 * @return 是否新增成功 */ - Boolean insertByBo(ErpContractInfoBo bo); + ErpContractInfoVo insertByBo(ErpContractInfoBo bo); /** * 修改合同信息 @@ -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/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/ErpContractInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java index 7e5bd7cb..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,5 +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; @@ -9,8 +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; @@ -19,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; /** @@ -33,12 +42,16 @@ import java.util.stream.Collectors; */ @RequiredArgsConstructor @Service +@Slf4j public class ErpContractInfoServiceImpl implements IErpContractInfoService { private final ErpContractInfoMapper baseMapper; private final ErpContractMaterialMapper contractMaterialMapper; + @DubboReference(timeout = 30000) + private RemoteWorkflowService remoteWorkflowService; + /** * 查询合同信息 * @@ -47,7 +60,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; } /** @@ -96,7 +115,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; } @@ -108,7 +128,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 +140,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { contractMaterialMapper.insert(erpContractMaterial); } } - return flag; + return MapstructUtils.convert(add, ErpContractInfoVo.class); } /** @@ -179,4 +199,59 @@ 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); + if (StringUtils.isNull(bo.getContractId())) { + this.insertByBo(bo); + } else { + this.updateByBo(bo); + } + // 后端发起需要忽略权限 + 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); + }); + } + } 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 @@ + + + + + + + + + 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..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); } @@ -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); + } + } 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); }