Przeglądaj źródła

服务管理表,服务价格表所有代码

wangwl 1 miesiąc temu
rodzic
commit
fc613cc305
17 zmienionych plików z 1202 dodań i 0 usunięć
  1. 106 0
      leromro-core/src/main/java/com/leromro/core/controller/BusinessManagementController.java
  2. 118 0
      leromro-core/src/main/java/com/leromro/core/controller/BusinessPriceController.java
  3. 60 0
      leromro-core/src/main/java/com/leromro/core/domain/BusinessManagement.java
  4. 59 0
      leromro-core/src/main/java/com/leromro/core/domain/BusinessPrice.java
  5. 54 0
      leromro-core/src/main/java/com/leromro/core/domain/vo/BusinessManagementVO.java
  6. 31 0
      leromro-core/src/main/java/com/leromro/core/domain/vo/BusinessPriceVO.java
  7. 66 0
      leromro-core/src/main/java/com/leromro/core/mapper/BusinessManagementMapper.java
  8. 64 0
      leromro-core/src/main/java/com/leromro/core/mapper/BusinessPriceMapper.java
  9. 66 0
      leromro-core/src/main/java/com/leromro/core/service/IBusinessManagementService.java
  10. 63 0
      leromro-core/src/main/java/com/leromro/core/service/IBusinessPriceService.java
  11. 114 0
      leromro-core/src/main/java/com/leromro/core/service/impl/BusinessManagementServiceImpl.java
  12. 115 0
      leromro-core/src/main/java/com/leromro/core/service/impl/BusinessPriceServiceImpl.java
  13. 36 0
      leromro-core/src/main/java/com/leromro/core/utils/ForestNodeManager.java
  14. 43 0
      leromro-core/src/main/java/com/leromro/core/utils/ForestNodeMerger.java
  15. 16 0
      leromro-core/src/main/java/com/leromro/core/utils/INode.java
  16. 104 0
      leromro-core/src/main/resources/mapper/core/BusinessManagementMapper.xml
  17. 87 0
      leromro-core/src/main/resources/mapper/core/BusinessPriceMapper.xml

+ 106 - 0
leromro-core/src/main/java/com/leromro/core/controller/BusinessManagementController.java

@@ -0,0 +1,106 @@
+package com.leromro.core.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.leromro.core.domain.vo.BusinessManagementVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import com.leromro.common.core.domain.R;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.leromro.common.annotation.Log;
+import com.leromro.common.core.controller.BaseController;
+import com.leromro.common.core.domain.AjaxResult;
+import com.leromro.common.enums.BusinessType;
+import com.leromro.core.domain.BusinessManagement;
+import com.leromro.core.service.IBusinessManagementService;
+import com.leromro.common.utils.poi.ExcelUtil;
+import com.leromro.common.core.page.TableDataInfo;
+
+/**
+ * 业务管理(树形结构包含所有服务)Controller
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@RestController
+@Api(tags = "业务管理(树形结构包含所有服务)")
+@RequestMapping("/core/business/management")
+public class BusinessManagementController extends BaseController
+{
+    @Autowired
+    private IBusinessManagementService businessManagementService;
+
+    /**
+     * 查询业务管理(树形结构)列表
+     */
+    @ApiOperation(value = "查询所有业务列表(树形结构)", notes = "获取所有业务列表,则parentId传0")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "parentId", value = "上级id", required = false)
+    })
+    @GetMapping("/getTreeList")
+    public R<List<BusinessManagementVO>> getTreeList(@RequestParam("parentId") Long parentId)
+    {
+        return businessManagementService.getTreeList(parentId);
+    }
+
+//    /**
+//     * 导出业务管理(树形结构包含所有服务)列表
+//     */
+//    @ApiOperation("导出业务管理(树形结构包含所有服务)列表")
+//    @Log(title = "业务管理(树形结构包含所有服务)", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response, BusinessManagement businessManagement)
+//    {
+//        List<BusinessManagement> list = businessManagementService.selectBusinessManagementList(businessManagement);
+//        ExcelUtil<BusinessManagement> util = new ExcelUtil<BusinessManagement>(BusinessManagement.class);
+//        util.exportExcel(response, list, "业务管理(树形结构包含所有服务)数据");
+//    }
+//
+//    /**
+//     * 获取业务管理(树形结构包含所有服务)详细信息
+//     */
+//    @ApiOperation("获取业务管理(树形结构包含所有服务)详细信息")
+//    @GetMapping(value = "/{businessManagementId}")
+//    public R<BusinessManagement> getInfo(@PathVariable("businessManagementId") Long businessManagementId)
+//    {
+//        return R.ok(businessManagementService.selectBusinessManagementByBusinessManagementId(businessManagementId));
+//    }
+//
+//    /**
+//     * 新增业务管理(树形结构包含所有服务)
+//     */
+//    @ApiOperation("新增业务管理(树形结构包含所有服务)")
+//    @Log(title = "业务管理(树形结构包含所有服务)", businessType = BusinessType.INSERT)
+//    @PostMapping
+//    public AjaxResult add(@RequestBody BusinessManagement businessManagement)
+//    {
+//        return toAjax(businessManagementService.insertBusinessManagement(businessManagement));
+//    }
+//
+//    /**
+//     * 修改业务管理(树形结构包含所有服务)
+//     */
+//    @ApiOperation("修改业务管理(树形结构包含所有服务)")
+//    @Log(title = "业务管理(树形结构包含所有服务)", businessType = BusinessType.UPDATE)
+//    @PutMapping
+//    public AjaxResult edit(@RequestBody BusinessManagement businessManagement)
+//    {
+//        return toAjax(businessManagementService.updateBusinessManagement(businessManagement));
+//    }
+//
+//    /**
+//     * 删除业务管理(树形结构包含所有服务)
+//     */
+//    @ApiOperation("删除业务管理(树形结构包含所有服务)")
+//    @Log(title = "业务管理(树形结构包含所有服务)", businessType = BusinessType.DELETE)
+//	@DeleteMapping("/{businessManagementIds}")
+//    public R<Integer> remove(@PathVariable Long[] businessManagementIds)
+//    {
+//        return R.ok(businessManagementService.deleteBusinessManagementByBusinessManagementIds(businessManagementIds));
+//    }
+}

+ 118 - 0
leromro-core/src/main/java/com/leromro/core/controller/BusinessPriceController.java

@@ -0,0 +1,118 @@
+package com.leromro.core.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.leromro.core.domain.vo.BusinessPriceVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import com.leromro.common.core.domain.R;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.leromro.common.annotation.Log;
+import com.leromro.common.core.controller.BaseController;
+import com.leromro.common.core.domain.AjaxResult;
+import com.leromro.common.enums.BusinessType;
+import com.leromro.core.domain.BusinessPrice;
+import com.leromro.core.service.IBusinessPriceService;
+import com.leromro.common.utils.poi.ExcelUtil;
+import com.leromro.common.core.page.TableDataInfo;
+
+/**
+ * 业务价格Controller
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@RestController
+@Api(tags = "业务价格")
+@RequestMapping("/core/business/price")
+public class BusinessPriceController extends BaseController
+{
+    @Autowired
+    private IBusinessPriceService businessPriceService;
+
+    /**
+     * 查询业务价格列表
+     */
+    @ApiOperation("查询业务价格列表")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "businessManagementId", value = "搜索条件", required = false),
+            @ApiImplicitParam(name = "pageNum", value = "", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "", required = true)
+    })
+    @GetMapping("/list")
+    public TableDataInfo<BusinessPriceVO> list(BusinessPrice businessPrice)
+    {
+        startPage();
+        List<BusinessPriceVO> list = businessPriceService.selectBusinessPriceList(businessPrice);
+        return getDataTable(list);
+    }
+
+//    /**
+//     * 导出业务价格列表
+//     */
+//    @ApiOperation("导出业务价格列表")
+//    @PreAuthorize("@ss.hasPermi('core:business/price:export')")
+//    @Log(title = "业务价格", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response, BusinessPrice businessPrice)
+//    {
+//        List<BusinessPrice> list = businessPriceService.selectBusinessPriceList(businessPrice);
+//        ExcelUtil<BusinessPrice> util = new ExcelUtil<BusinessPrice>(BusinessPrice.class);
+//        util.exportExcel(response, list, "业务价格数据");
+//    }
+//
+    /**
+     * 获取业务价格详细信息
+     */
+    @ApiOperation("获取业务价格详细信息")
+    @GetMapping(value = "/{businessPriceId}")
+    public R<BusinessPrice> getInfo(@PathVariable("businessPriceId") Long businessPriceId)
+    {
+        return R.ok(businessPriceService.selectBusinessPriceByBusinessPriceId(businessPriceId));
+    }
+
+    /**
+     * 新增业务价格
+     */
+    @ApiOperation("新增业务价格")
+    @Log(title = "业务价格", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BusinessPrice businessPrice)
+    {
+        return toAjax(businessPriceService.insertBusinessPrice(businessPrice));
+    }
+
+    /**
+     * 修改业务价格
+     */
+    @ApiOperation("修改业务价格")
+    @Log(title = "业务价格", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BusinessPrice businessPrice)
+    {
+        return toAjax(businessPriceService.updateBusinessPrice(businessPrice));
+    }
+
+    /**
+     * 删除业务价格
+     */
+    @ApiOperation("删除业务价格")
+    @Log(title = "业务价格", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{businessPriceIds}")
+    public R<Integer> remove(@PathVariable Long[] businessPriceIds)
+    {
+        return R.ok(businessPriceService.deleteBusinessPriceByBusinessPriceIds(businessPriceIds));
+    }
+}

+ 60 - 0
leromro-core/src/main/java/com/leromro/core/domain/BusinessManagement.java

@@ -0,0 +1,60 @@
+package com.leromro.core.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.leromro.common.annotation.Excel;
+import com.leromro.common.core.domain.BaseEntity;
+
+/**
+ * 业务管理(树形结构包含所有服务)对象 l_business_management
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("l_business_management")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "BusinessManagement", description = "业务管理(树形结构包含所有服务)")
+public class BusinessManagement extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 业务id */
+    @TableId(type = IdType.AUTO)
+    private Long businessManagementId;
+
+    /** 父id */
+    @TableField("parent_id")
+    @ApiModelProperty("父id")
+    private Long parentId;
+
+    /** 祖级节点 */
+    @TableField("ancestors")
+    @ApiModelProperty("祖级节点")
+    private String ancestors;
+
+    /** 业务名称 */
+    @TableField("business_name")
+    @ApiModelProperty("业务名称")
+    private String businessName;
+
+    /** 业务层级名称 */
+    @TableField("business_tier_name")
+    @ApiModelProperty("业务层级名称")
+    private String businessTierName;
+
+    /** 排序 */
+    @TableField("sort")
+    @ApiModelProperty("排序")
+    private Long sort;
+
+
+}

+ 59 - 0
leromro-core/src/main/java/com/leromro/core/domain/BusinessPrice.java

@@ -0,0 +1,59 @@
+package com.leromro.core.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.leromro.common.annotation.Excel;
+import com.leromro.common.core.domain.BaseEntity;
+
+/**
+ * 业务价格对象 l_business_price
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("l_business_price")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "BusinessPrice", description = "业务价格")
+public class BusinessPrice extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 业务价格id */
+    @TableId(type = IdType.AUTO)
+    private Long businessPriceId;
+
+    /** 业务价格 */
+    @TableField("business_price")
+    @ApiModelProperty("业务价格")
+    private BigDecimal businessPrice;
+
+    /** 业务时长(整数分钟) */
+    @TableField("business_duration")
+    @ApiModelProperty("业务时长(整数分钟)")
+    private Long businessDuration;
+
+    /** 业务id */
+    @TableField("business_management_id")
+    @ApiModelProperty("业务id")
+    private Long businessManagementId;
+
+    @TableField("project_name")
+    @ApiModelProperty("服务项目名称")
+    private String projectName;
+
+    @TableField("project_type_name")
+    @ApiModelProperty("项目类别名称")
+    private String  projectTypeName;
+
+
+}

+ 54 - 0
leromro-core/src/main/java/com/leromro/core/domain/vo/BusinessManagementVO.java

@@ -0,0 +1,54 @@
+package com.leromro.core.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.leromro.core.utils.INode;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class BusinessManagementVO implements INode<BusinessManagementVO> {
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<BusinessManagementVO> children;
+
+    @Override
+    public List<BusinessManagementVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    @ApiModelProperty("业务名称")
+    private String businessName;
+
+    @ApiModelProperty("业务层级名称")
+    private String businessTierName;
+
+    @ApiModelProperty("排序")
+    private Long sort;
+}

+ 31 - 0
leromro-core/src/main/java/com/leromro/core/domain/vo/BusinessPriceVO.java

@@ -0,0 +1,31 @@
+package com.leromro.core.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BusinessPriceVO {
+
+    private Long businessPriceId;
+
+    @ApiModelProperty("业务价格")
+    private BigDecimal businessPrice;
+
+    @ApiModelProperty("业务时长(整数分钟)")
+    private Long businessDuration;
+
+    @ApiModelProperty("业务id")
+    private Long businessManagementId;
+
+    @ApiModelProperty("服务项目名称")
+    private String projectName;
+
+    @ApiModelProperty("项目类别名称")
+    private String  projectTypeName;
+
+}

+ 66 - 0
leromro-core/src/main/java/com/leromro/core/mapper/BusinessManagementMapper.java

@@ -0,0 +1,66 @@
+package com.leromro.core.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.leromro.core.domain.BusinessManagement;
+import com.leromro.core.domain.vo.BusinessManagementVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 业务管理(树形结构包含所有服务)Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+public interface BusinessManagementMapper extends BaseMapper<BusinessManagement>
+{
+    /**
+     * 查询业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 业务管理(树形结构包含所有服务)
+     */
+    public BusinessManagement selectBusinessManagementByBusinessManagementId(Long businessManagementId);
+
+    /**
+     * 查询业务管理(树形结构包含所有服务)列表
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 业务管理(树形结构包含所有服务)集合
+     */
+    public List<BusinessManagement> selectBusinessManagementList(BusinessManagement businessManagement);
+
+    /**
+     * 新增业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    public int insertBusinessManagement(BusinessManagement businessManagement);
+
+    /**
+     * 修改业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    public int updateBusinessManagement(BusinessManagement businessManagement);
+
+    /**
+     * 删除业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 结果
+     */
+    public int deleteBusinessManagementByBusinessManagementId(Long businessManagementId);
+
+    /**
+     * 批量删除业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBusinessManagementByBusinessManagementIds(Long[] businessManagementIds);
+
+    List<BusinessManagementVO> getTreeList(@Param("parentId") Long parentId);
+}

+ 64 - 0
leromro-core/src/main/java/com/leromro/core/mapper/BusinessPriceMapper.java

@@ -0,0 +1,64 @@
+package com.leromro.core.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.leromro.core.domain.BusinessPrice;
+import com.leromro.core.domain.vo.BusinessPriceVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 业务价格Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+public interface BusinessPriceMapper extends BaseMapper<BusinessPrice>
+{
+    /**
+     * 查询业务价格
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 业务价格
+     */
+    public BusinessPrice selectBusinessPriceByBusinessPriceId(Long businessPriceId);
+
+    /**
+     * 查询业务价格列表
+     * 
+     * @param businessPrice 业务价格
+     * @return 业务价格集合
+     */
+    public List<BusinessPriceVO> selectBusinessPriceList(@Param("businessPrice") BusinessPrice businessPrice);
+
+    /**
+     * 新增业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    public int insertBusinessPrice(BusinessPrice businessPrice);
+
+    /**
+     * 修改业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    public int updateBusinessPrice(BusinessPrice businessPrice);
+
+    /**
+     * 删除业务价格
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 结果
+     */
+    public int deleteBusinessPriceByBusinessPriceId(Long businessPriceId);
+
+    /**
+     * 批量删除业务价格
+     * 
+     * @param businessPriceIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBusinessPriceByBusinessPriceIds(Long[] businessPriceIds);
+}

+ 66 - 0
leromro-core/src/main/java/com/leromro/core/service/IBusinessManagementService.java

@@ -0,0 +1,66 @@
+package com.leromro.core.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.leromro.common.core.domain.R;
+import com.leromro.core.domain.BusinessManagement;
+import com.leromro.core.domain.vo.BusinessManagementVO;
+
+/**
+ * 业务管理(树形结构包含所有服务)Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+public interface IBusinessManagementService extends IService<BusinessManagement>
+{
+    /**
+     * 查询业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 业务管理(树形结构包含所有服务)
+     */
+    public BusinessManagement selectBusinessManagementByBusinessManagementId(Long businessManagementId);
+
+    /**
+     * 查询业务管理(树形结构包含所有服务)列表
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 业务管理(树形结构包含所有服务)集合
+     */
+    public List<BusinessManagement> selectBusinessManagementList(BusinessManagement businessManagement);
+
+    /**
+     * 新增业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    public Boolean insertBusinessManagement(BusinessManagement businessManagement);
+
+    /**
+     * 修改业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    public Boolean updateBusinessManagement(BusinessManagement businessManagement);
+
+    /**
+     * 批量删除业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementIds 需要删除的业务管理(树形结构包含所有服务)主键集合
+     * @return 结果
+     */
+    public int deleteBusinessManagementByBusinessManagementIds(Long[] businessManagementIds);
+
+    /**
+     * 删除业务管理(树形结构包含所有服务)信息
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 结果
+     */
+    public int deleteBusinessManagementByBusinessManagementId(Long businessManagementId);
+
+    R<List<BusinessManagementVO>> getTreeList(Long parentId);
+}

+ 63 - 0
leromro-core/src/main/java/com/leromro/core/service/IBusinessPriceService.java

@@ -0,0 +1,63 @@
+package com.leromro.core.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.leromro.core.domain.BusinessPrice;
+import com.leromro.core.domain.vo.BusinessPriceVO;
+
+/**
+ * 业务价格Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+public interface IBusinessPriceService extends IService<BusinessPrice>
+{
+    /**
+     * 查询业务价格
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 业务价格
+     */
+    public BusinessPrice selectBusinessPriceByBusinessPriceId(Long businessPriceId);
+
+    /**
+     * 查询业务价格列表
+     * 
+     * @param businessPrice 业务价格
+     * @return 业务价格集合
+     */
+    public List<BusinessPriceVO> selectBusinessPriceList(BusinessPrice businessPrice);
+
+    /**
+     * 新增业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    public Boolean insertBusinessPrice(BusinessPrice businessPrice);
+
+    /**
+     * 修改业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    public Boolean updateBusinessPrice(BusinessPrice businessPrice);
+
+    /**
+     * 批量删除业务价格
+     * 
+     * @param businessPriceIds 需要删除的业务价格主键集合
+     * @return 结果
+     */
+    public int deleteBusinessPriceByBusinessPriceIds(Long[] businessPriceIds);
+
+    /**
+     * 删除业务价格信息
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 结果
+     */
+    public int deleteBusinessPriceByBusinessPriceId(Long businessPriceId);
+}

+ 114 - 0
leromro-core/src/main/java/com/leromro/core/service/impl/BusinessManagementServiceImpl.java

@@ -0,0 +1,114 @@
+package com.leromro.core.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.leromro.common.core.domain.R;
+import com.leromro.core.domain.vo.BusinessManagementVO;
+import com.leromro.core.mapper.BusinessManagementMapper;
+import com.leromro.common.utils.DateUtils;
+import com.leromro.core.utils.ForestNodeManager;
+import com.leromro.core.utils.ForestNodeMerger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.leromro.core.mapper.BusinessManagementMapper;
+import com.leromro.core.domain.BusinessManagement;
+import com.leromro.core.service.IBusinessManagementService;
+
+/**
+ * 业务管理(树形结构包含所有服务)Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@Service
+public class BusinessManagementServiceImpl extends ServiceImpl<BusinessManagementMapper, BusinessManagement> implements IBusinessManagementService
+{
+    @Autowired
+    private BusinessManagementMapper businessManagementMapper;
+
+    /**
+     * 查询业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 业务管理(树形结构包含所有服务)
+     */
+    @Override
+    public BusinessManagement selectBusinessManagementByBusinessManagementId(Long businessManagementId)
+    {
+        return businessManagementMapper.selectBusinessManagementByBusinessManagementId(businessManagementId);
+    }
+
+    /**
+     * 查询业务管理(树形结构包含所有服务)列表
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 业务管理(树形结构包含所有服务)
+     */
+    @Override
+    public List<BusinessManagement> selectBusinessManagementList(BusinessManagement businessManagement)
+    {
+        return businessManagementMapper.selectBusinessManagementList(businessManagement);
+    }
+
+    /**
+     * 新增业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    @Override
+    public Boolean insertBusinessManagement(BusinessManagement businessManagement)
+    {
+        return this.save(businessManagement);
+    }
+
+    /**
+     * 修改业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagement 业务管理(树形结构包含所有服务)
+     * @return 结果
+     */
+    @Override
+    public Boolean updateBusinessManagement(BusinessManagement businessManagement)
+    {
+        return this.updateById(businessManagement);
+    }
+
+    /**
+     * 批量删除业务管理(树形结构包含所有服务)
+     * 
+     * @param businessManagementIds 需要删除的业务管理(树形结构包含所有服务)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBusinessManagementByBusinessManagementIds(Long[] businessManagementIds)
+    {
+        return businessManagementMapper.deleteBusinessManagementByBusinessManagementIds(businessManagementIds);
+    }
+
+    /**
+     * 删除业务管理(树形结构包含所有服务)信息
+     * 
+     * @param businessManagementId 业务管理(树形结构包含所有服务)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBusinessManagementByBusinessManagementId(Long businessManagementId)
+    {
+        return businessManagementMapper.deleteBusinessManagementByBusinessManagementId(businessManagementId);
+    }
+
+    /**
+     * 查询业务管理(树形结构)列表
+     */
+    @Override
+    public R<List<BusinessManagementVO>> getTreeList(Long parentId) {
+        List<BusinessManagementVO> list = baseMapper.getTreeList(parentId);
+        list = ForestNodeMerger.merge(list);
+        return R.ok(list);
+    }
+}

+ 115 - 0
leromro-core/src/main/java/com/leromro/core/service/impl/BusinessPriceServiceImpl.java

@@ -0,0 +1,115 @@
+package com.leromro.core.service.impl;
+
+import java.util.List;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.leromro.core.domain.BusinessManagement;
+import com.leromro.core.domain.vo.BusinessPriceVO;
+import com.leromro.core.mapper.BusinessPriceMapper;
+import com.leromro.common.utils.DateUtils;
+import com.leromro.core.service.IBusinessManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.leromro.core.mapper.BusinessPriceMapper;
+import com.leromro.core.domain.BusinessPrice;
+import com.leromro.core.service.IBusinessPriceService;
+
+/**
+ * 业务价格Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-04-17
+ */
+@Service
+public class BusinessPriceServiceImpl extends ServiceImpl<BusinessPriceMapper, BusinessPrice> implements IBusinessPriceService
+{
+    @Autowired
+    private BusinessPriceMapper businessPriceMapper;
+
+    @Autowired
+    private IBusinessManagementService businessManagementService;
+
+    /**
+     * 查询业务价格
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 业务价格
+     */
+    @Override
+    public BusinessPrice selectBusinessPriceByBusinessPriceId(Long businessPriceId)
+    {
+        return businessPriceMapper.selectBusinessPriceByBusinessPriceId(businessPriceId);
+    }
+
+    /**
+     * 查询业务价格列表
+     * 
+     * @param businessPrice 业务价格
+     * @return 业务价格
+     */
+    @Override
+    public List<BusinessPriceVO> selectBusinessPriceList(BusinessPrice businessPrice)
+    {
+        return businessPriceMapper.selectBusinessPriceList(businessPrice);
+    }
+
+    /**
+     * 新增业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    @Override
+    public Boolean insertBusinessPrice(BusinessPrice businessPrice)
+    {
+        //查询业务管理信息
+        BusinessManagement businessManagement = businessManagementService.getOne(new LambdaQueryWrapper<BusinessManagement>()
+                .eq(BusinessManagement::getBusinessManagementId, businessPrice.getBusinessManagementId()));
+        if (StrUtil.isBlank(businessManagement.getBusinessTierName()) || businessManagement.getBusinessTierName().length() < 2){
+            throw new RuntimeException("当前服务项目层级名称错误");
+        }
+        //把BusinessTierName按照-分割
+        String[] businessTierName = businessManagement.getBusinessTierName().split("-");
+        businessPrice.setProjectName(businessTierName[0]);
+        businessPrice.setProjectTypeName(businessTierName[1]);
+        return this.save(businessPrice);
+    }
+
+    /**
+     * 修改业务价格
+     * 
+     * @param businessPrice 业务价格
+     * @return 结果
+     */
+    @Override
+    public Boolean updateBusinessPrice(BusinessPrice businessPrice)
+    {
+        return this.updateById(businessPrice);
+    }
+
+    /**
+     * 批量删除业务价格
+     * 
+     * @param businessPriceIds 需要删除的业务价格主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBusinessPriceByBusinessPriceIds(Long[] businessPriceIds)
+    {
+        return businessPriceMapper.deleteBusinessPriceByBusinessPriceIds(businessPriceIds);
+    }
+
+    /**
+     * 删除业务价格信息
+     * 
+     * @param businessPriceId 业务价格主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBusinessPriceByBusinessPriceId(Long businessPriceId)
+    {
+        return businessPriceMapper.deleteBusinessPriceByBusinessPriceId(businessPriceId);
+    }
+}

+ 36 - 0
leromro-core/src/main/java/com/leromro/core/utils/ForestNodeManager.java

@@ -0,0 +1,36 @@
+package com.leromro.core.utils;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class ForestNodeManager<T extends INode<T>> {
+    private final ImmutableMap<Long, T> nodeMap;
+    private final Map<Long, Object> parentIdMap = Maps.newHashMap();
+
+    public ForestNodeManager(List<T> nodes) {
+        this.nodeMap = Maps.uniqueIndex(nodes, INode::getId);
+    }
+
+    public INode<T> getTreeNodeAt(Long id) {
+        return this.nodeMap.containsKey(id) ? (INode)this.nodeMap.get(id) : null;
+    }
+
+    public void addParentId(Long parentId) {
+        this.parentIdMap.put(parentId, "");
+    }
+
+    public List<T> getRoot() {
+        List<T> roots = new ArrayList();
+        this.nodeMap.forEach((key, node) -> {
+            if (node.getParentId() == 0L || this.parentIdMap.containsKey(node.getId())) {
+                roots.add(node);
+            }
+
+        });
+        return roots;
+    }
+}

+ 43 - 0
leromro-core/src/main/java/com/leromro/core/utils/ForestNodeMerger.java

@@ -0,0 +1,43 @@
+package com.leromro.core.utils;
+
+
+
+import java.util.List;
+
+/**
+ *  树工具
+ */
+public class ForestNodeMerger {
+    public static <T extends INode<T>> List<T> merge(List<T> items) {
+        ForestNodeManager<T> forestNodeManager = new ForestNodeManager(items);
+        items.forEach((forestNode) -> {
+            if (forestNode.getParentId() != null && forestNode.getParentId() != 0L) {
+                INode<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId());
+                if (node != null) {
+                    node.getChildren().add(forestNode);
+                } else {
+                    forestNodeManager.addParentId(forestNode.getId());
+                }
+            }
+
+        });
+        return forestNodeManager.getRoot();
+    }
+
+    public static <T extends INode<T>> void getTreeList(T tree, List<T> nodes) {
+        if (tree == null) {
+            return;
+        }
+
+        nodes.add(tree);
+
+        List<T> childrens = tree.getChildren();
+        if (childrens != null) {
+            for (T child : childrens) {
+                getTreeList(child, nodes);
+            }
+        }
+    }
+
+
+}

+ 16 - 0
leromro-core/src/main/java/com/leromro/core/utils/INode.java

@@ -0,0 +1,16 @@
+package com.leromro.core.utils;
+
+import java.io.Serializable;
+import java.util.List;
+
+public interface INode<T> extends Serializable {
+    Long getId();
+
+    Long getParentId();
+
+    List<T> getChildren();
+
+    default Boolean getHasChildren() {
+        return false;
+    }
+}

+ 104 - 0
leromro-core/src/main/resources/mapper/core/BusinessManagementMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.leromro.core.mapper.BusinessManagementMapper">
+    
+    <resultMap type="BusinessManagement" id="BusinessManagementResult">
+        <result property="businessManagementId"    column="business_management_id"    />
+        <result property="parentId"    column="parent_id"    />
+        <result property="ancestors"    column="ancestors"    />
+        <result property="businessName"    column="business_name"    />
+        <result property="businessTierName"    column="business_tier_name"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="sort"    column="sort"    />
+    </resultMap>
+
+    <sql id="selectBusinessManagementVo">
+        select business_management_id, parent_id, ancestors, business_name, business_tier_name, create_by, create_time, update_by, update_time, remark, sort from l_business_management
+    </sql>
+
+    <select id="selectBusinessManagementList" parameterType="BusinessManagement" resultMap="BusinessManagementResult">
+        <include refid="selectBusinessManagementVo"/>
+        <where>  
+            <if test="parentId != null "> and parent_id = #{parentId}</if>
+            <if test="ancestors != null  and ancestors != ''"> and ancestors = #{ancestors}</if>
+            <if test="businessName != null  and businessName != ''"> and business_name like concat('%', #{businessName}, '%')</if>
+            <if test="businessTierName != null  and businessTierName != ''"> and business_tier_name like concat('%', #{businessTierName}, '%')</if>
+            <if test="sort != null "> and sort = #{sort}</if>
+        </where>
+    </select>
+    
+    <select id="selectBusinessManagementByBusinessManagementId" parameterType="Long" resultMap="BusinessManagementResult">
+        <include refid="selectBusinessManagementVo"/>
+        where business_management_id = #{businessManagementId}
+    </select>
+    <select id="getTreeList" resultType="com.leromro.core.domain.vo.BusinessManagementVO">
+        select business_management_id as id,parent_id,business_name,business_tier_name
+        from l_business_management
+        <where>
+            <if test="parentId != null "> ancestors like concat('%', #{parentId}, '%')</if>
+        </where>
+        order by sort
+    </select>
+
+    <insert id="insertBusinessManagement" parameterType="BusinessManagement" useGeneratedKeys="true" keyProperty="businessManagementId">
+        insert into l_business_management
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="parentId != null">parent_id,</if>
+            <if test="ancestors != null">ancestors,</if>
+            <if test="businessName != null">business_name,</if>
+            <if test="businessTierName != null">business_tier_name,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+            <if test="sort != null">sort,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="parentId != null">#{parentId},</if>
+            <if test="ancestors != null">#{ancestors},</if>
+            <if test="businessName != null">#{businessName},</if>
+            <if test="businessTierName != null">#{businessTierName},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="sort != null">#{sort},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBusinessManagement" parameterType="BusinessManagement">
+        update l_business_management
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="parentId != null">parent_id = #{parentId},</if>
+            <if test="ancestors != null">ancestors = #{ancestors},</if>
+            <if test="businessName != null">business_name = #{businessName},</if>
+            <if test="businessTierName != null">business_tier_name = #{businessTierName},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="sort != null">sort = #{sort},</if>
+        </trim>
+        where business_management_id = #{businessManagementId}
+    </update>
+
+    <delete id="deleteBusinessManagementByBusinessManagementId" parameterType="Long">
+        delete from l_business_management where business_management_id = #{businessManagementId}
+    </delete>
+
+    <delete id="deleteBusinessManagementByBusinessManagementIds" parameterType="String">
+        delete from l_business_management where business_management_id in 
+        <foreach item="businessManagementId" collection="array" open="(" separator="," close=")">
+            #{businessManagementId}
+        </foreach>
+    </delete>
+</mapper>

+ 87 - 0
leromro-core/src/main/resources/mapper/core/BusinessPriceMapper.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.leromro.core.mapper.BusinessPriceMapper">
+    
+    <resultMap type="BusinessPrice" id="BusinessPriceResult">
+        <result property="businessPriceId"    column="business_price_id"    />
+        <result property="businessPrice"    column="business_price"    />
+        <result property="businessDuration"    column="business_duration"    />
+        <result property="businessManagementId"    column="business_management_id"    />
+        <result property="projectName"    column="project_name"    />
+        <result property="projectTypeName"    column="project_type_name"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectBusinessPriceVo">
+        select business_price_id, business_price, business_duration, business_management_id,project_name,project_type_name, create_by, create_time, update_by, update_time, remark from l_business_price
+    </sql>
+
+    
+    <select id="selectBusinessPriceByBusinessPriceId" parameterType="Long" resultMap="BusinessPriceResult">
+        <include refid="selectBusinessPriceVo"/>
+        where business_price_id = #{businessPriceId}
+    </select>
+    <select id="selectBusinessPriceList" resultType="com.leromro.core.domain.vo.BusinessPriceVO">
+        select * from l_business_price
+        where 1=1
+        <if test="businessPrice.businessManagementId != null">
+            business_management_id in (select business_management_id from l_business_management where business_management_id = #{businessManagementId})
+        </if>
+    </select>
+
+    <insert id="insertBusinessPrice" parameterType="BusinessPrice" useGeneratedKeys="true" keyProperty="businessPriceId">
+        insert into l_business_price
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="businessPrice != null">business_price,</if>
+            <if test="businessDuration != null">business_duration,</if>
+            <if test="businessManagementId != null">business_management_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="businessPrice != null">#{businessPrice},</if>
+            <if test="businessDuration != null">#{businessDuration},</if>
+            <if test="businessManagementId != null">#{businessManagementId},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBusinessPrice" parameterType="BusinessPrice">
+        update l_business_price
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="businessPrice != null">business_price = #{businessPrice},</if>
+            <if test="businessDuration != null">business_duration = #{businessDuration},</if>
+            <if test="businessManagementId != null">business_management_id = #{businessManagementId},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where business_price_id = #{businessPriceId}
+    </update>
+
+    <delete id="deleteBusinessPriceByBusinessPriceId" parameterType="Long">
+        delete from l_business_price where business_price_id = #{businessPriceId}
+    </delete>
+
+    <delete id="deleteBusinessPriceByBusinessPriceIds" parameterType="String">
+        delete from l_business_price where business_price_id in 
+        <foreach item="businessPriceId" collection="array" open="(" separator="," close=")">
+            #{businessPriceId}
+        </foreach>
+    </delete>
+</mapper>