吉安感知网项目-后端
rain
2026-01-15 a3a5ab4e0b6918d61af7255c4a7c2e7bc7823c44
运营收益
6 files added
400 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/controller/OperationalRevenueController.java 133 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/entity/OperationalRevenue.java 105 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/mapper/OperationalRevenueMapper.java 13 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/service/OperationalRevenueService.java 33 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/service/impl/OperationalRevenueServiceImpl.java 94 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/vo/OperationalRevenueVo.java 22 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/controller/OperationalRevenueController.java
New file
@@ -0,0 +1,133 @@
package org.sxkj.gd.workOrder.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.sxkj.common.model.ResponseResult;
import org.sxkj.gd.workOrder.entity.OperationalRevenue;
import org.sxkj.gd.workOrder.service.OperationalRevenueService;
import org.sxkj.gd.workOrder.vo.OperationalRevenueVo;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 运营收益控制器
 */
@Api(tags = "运营收益管理")
@RestController
@RequestMapping("/revenue")
public class OperationalRevenueController {
    @Autowired
    private OperationalRevenueService operationalRevenueService;
    /**
     * 分页查询运营收益
     */
    @ApiOperation("分页查询运营收益")
    @GetMapping("/page")
    public ResponseResult page(
        @ApiParam("页码") @RequestParam(value = "current", defaultValue = "1") long current,
        @ApiParam("每页大小") @RequestParam(value = "size", defaultValue = "10") long size,
        @ApiParam("营业收入") @RequestParam(value = "operatingIncome", required = false) String operatingIncome,
        @ApiParam("综合总成本费用") @RequestParam(value = "totalCost", required = false) String totalCost,
        @ApiParam("净利润") @RequestParam(value = "netProfit", required = false) String netProfit,
        @ApiParam("财务内部收益率") @RequestParam(value = "financialIrr", required = false) String financialIrr,
        @ApiParam("市场空间") @RequestParam(value = "marketSpace", required = false) String marketSpace,
        @ApiParam("创建人") @RequestParam(value = "nickName", required = false) String nickName
    ) {
        Page<OperationalRevenue> page = new Page<>(current, size);
        IPage<OperationalRevenue> result = operationalRevenueService.selectPage(page, operatingIncome, totalCost, netProfit, financialIrr, marketSpace, nickName);
        // 转换为Vo分页
        IPage<OperationalRevenueVo> voPage = result.convert(operationalRevenueService::convertToVo);
        return ResponseResult.success(voPage);
    }
    /**
     * 查询所有运营收益
     */
    @ApiOperation("查询所有运营收益")
    @GetMapping("/list")
    public ResponseResult list() {
        List<OperationalRevenue> list = operationalRevenueService.list();
        // 转换为Vo列表
        List<OperationalRevenueVo> voList = list.stream()
            .map(operationalRevenueService::convertToVo)
            .collect(Collectors.toList());
        return ResponseResult.success(voList);
    }
    /**
     * 根据ID查询运营收益
     */
    @ApiOperation("根据ID查询运营收益")
    @GetMapping("selectById/{id}")
    public ResponseResult getById(@ApiParam("主键ID") @PathVariable Long id) {
        OperationalRevenue operationalRevenue = operationalRevenueService.getById(id);
        // 转换为Vo对象
        OperationalRevenueVo vo = operationalRevenueService.convertToVo(operationalRevenue);
        return ResponseResult.success(vo);
    }
    /**
     * 新增运营收益
     */
    @ApiOperation("新增运营收益")
    @PostMapping("/add")
    public ResponseResult save(@RequestBody OperationalRevenue operationalRevenue) {
        operationalRevenue.setCreateUser(String.valueOf(AuthUtil.getUserId()));
        LocalDateTime now = LocalDateTime.now();
        operationalRevenue.setCreateTime(now);
        operationalRevenue.setUpdateTime(now);
        operationalRevenue.setCreateDept(AuthUtil.getDeptId());
        operationalRevenue.setUpdateUser(String.valueOf(AuthUtil.getUserId()));
        operationalRevenue.setNickName(AuthUtil.getNickName());
        boolean result = operationalRevenueService.save(operationalRevenue);
        return ResponseResult.success(result);
    }
    /**
     * 修改运营收益
     */
    @ApiOperation("修改运营收益")
    @PutMapping("update")
    public ResponseResult updateById(@RequestBody OperationalRevenue operationalRevenue) {
        LocalDateTime now = LocalDateTime.now();
        operationalRevenue.setUpdateTime(now);
        operationalRevenue.setUpdateUser(String.valueOf(AuthUtil.getUserId()));
        boolean result = operationalRevenueService.updateById(operationalRevenue);
        return ResponseResult.success(result);
    }
    /**
     * 删除运营收益
     */
    @ApiOperation("删除运营收益")
    @DeleteMapping("delete/{id}")
    public ResponseResult removeById(@ApiParam("主键ID") @PathVariable Long id) {
        boolean result = operationalRevenueService.removeById(id);
        return ResponseResult.success(result);
    }
    /**
     * 批量删除运营收益
     */
    @ApiOperation("批量删除运营收益")
    @DeleteMapping("/batch")
    public ResponseResult removeByIds(@RequestBody List<Long> ids) {
        boolean result = operationalRevenueService.removeByIds(ids);
        return ResponseResult.success(result);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/entity/OperationalRevenue.java
New file
@@ -0,0 +1,105 @@
package org.sxkj.gd.workOrder.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * 运营收益实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ja_gd_operational_revenue")
public class OperationalRevenue implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 营业收入
     */
    @TableField("operating_income")
    private BigDecimal operatingIncome;
    /**
     * 综合总成本费用
     */
    @TableField("total_cost")
    private BigDecimal totalCost;
    /**
     * 净利润
     */
    @TableField("net_profit")
    private BigDecimal netProfit;
    /**
     * 财务内部收益率(%)
     */
    @TableField("financial_irr")
    private BigDecimal financialIrr;
    /**
     * 市场空间
     */
    @TableField("market_space")
    private String marketSpace;
    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * 创建人
     */
    @TableField(value = "create_user")
    private String createUser;
    /**
     * 创建部门
     */
    @TableField(value = "create_dept")
    private String createDept;
    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /**
     * 更新人
     */
    @TableField(value = "update_user")
    private String updateUser;
    /**
     * 创建人名称
     */
    @TableField("nick_name")
    private String nickName;
    @TableField(exist = false)
    private String earnForecast;
    /**
     * 删除标记(0:正常,1:删除)
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/mapper/OperationalRevenueMapper.java
New file
@@ -0,0 +1,13 @@
package org.sxkj.gd.workOrder.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.sxkj.gd.workOrder.entity.OperationalRevenue;
/**
 * 运营收益Mapper接口
 */
@Mapper
public interface OperationalRevenueMapper extends BaseMapper<OperationalRevenue> {
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/service/OperationalRevenueService.java
New file
@@ -0,0 +1,33 @@
package org.sxkj.gd.workOrder.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.sxkj.gd.workOrder.entity.OperationalRevenue;
import org.sxkj.gd.workOrder.vo.OperationalRevenueVo;
/**
 * 运营收益Service接口
 */
public interface OperationalRevenueService extends IService<OperationalRevenue> {
    /**
     * 分页查询运营收益
     * @param page 分页参数
     * @param operatingIncome 营业收入
     * @param totalCost 综合总成本费用
     * @param netProfit 净利润
     * @param financialIrr 财务内部收益率
     * @param marketSpace 市场空间
     * @param nickName 创建人
     * @return 分页结果
     */
    IPage<OperationalRevenue> selectPage(Page<OperationalRevenue> page, String operatingIncome, String totalCost, String netProfit, String financialIrr, String marketSpace, String nickName);
    /**
     * 实体类转换Vo
     * @param entity 实体对象
     * @return Vo对象
     */
    OperationalRevenueVo convertToVo(OperationalRevenue entity);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/service/impl/OperationalRevenueServiceImpl.java
New file
@@ -0,0 +1,94 @@
package org.sxkj.gd.workOrder.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
import org.sxkj.gd.workOrder.entity.OperationalRevenue;
import org.sxkj.gd.workOrder.mapper.OperationalRevenueMapper;
import org.sxkj.gd.workOrder.service.OperationalRevenueService;
import org.sxkj.gd.workOrder.vo.OperationalRevenueVo;
import java.math.BigDecimal;
/**
 * 运营收益Service实现类
 */
@Service
public class OperationalRevenueServiceImpl extends ServiceImpl<OperationalRevenueMapper, OperationalRevenue>
    implements OperationalRevenueService {
    @Override
    public IPage<OperationalRevenue> selectPage(Page<OperationalRevenue> page, String operatingIncome, String totalCost, String netProfit, String financialIrr, String marketSpace, String nickName) {
        LambdaQueryWrapper<OperationalRevenue> queryWrapper = new LambdaQueryWrapper<>();
        // 根据营业收入查询 (转换为精确查询)
        if (StringUtils.hasText(operatingIncome)) {
            try {
                queryWrapper.eq(OperationalRevenue::getOperatingIncome, new BigDecimal(operatingIncome));
            } catch (NumberFormatException e) {
                // 如果转换失败,可以忽略或记录日志
            }
        }
        // 根据综合总成本费用查询 (转换为精确查询)
        if (StringUtils.hasText(totalCost)) {
            try {
                queryWrapper.eq(OperationalRevenue::getTotalCost, new BigDecimal(totalCost));
            } catch (NumberFormatException e) {
                //
            }
        }
        // 根据净利润查询 (转换为精确查询)
        if (StringUtils.hasText(netProfit)) {
            try {
                queryWrapper.eq(OperationalRevenue::getNetProfit, new BigDecimal(netProfit));
            } catch (NumberFormatException e) {
                //
            }
        }
        // 根据财务内部收益率查询 (转换为精确查询)
        if (StringUtils.hasText(financialIrr)) {
            try {
                queryWrapper.eq(OperationalRevenue::getFinancialIrr, new BigDecimal(financialIrr));
            } catch (NumberFormatException e) {
                //
            }
        }
        // 根据市场空间模糊查询
        if (StringUtils.hasText(marketSpace)) {
            queryWrapper.like(OperationalRevenue::getMarketSpace, marketSpace);
        }
        // 根据创建人名称模糊查询
        if (StringUtils.hasText(nickName)) {
            queryWrapper.like(OperationalRevenue::getNickName, nickName);
        }
        // 按创建时间倒序
        queryWrapper.orderByDesc(OperationalRevenue::getCreateTime);
        return this.page(page, queryWrapper);
    }
    @Override
    public OperationalRevenueVo convertToVo(OperationalRevenue entity) {
        OperationalRevenueVo vo = new OperationalRevenueVo();
        vo.setId(String.valueOf(entity.getId()));
        vo.setOperatingIncome(entity.getOperatingIncome());
        vo.setTotalCost(entity.getTotalCost());
        vo.setNetProfit(entity.getNetProfit());
        vo.setFinancialIrr(entity.getFinancialIrr());
        vo.setMarketSpace(entity.getMarketSpace());
        vo.setEarnForecast(entity.getEarnForecast());
        vo.setNickName(entity.getNickName());
        vo.setCreateTime(entity.getCreateTime());
        return vo;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workOrder/vo/OperationalRevenueVo.java
New file
@@ -0,0 +1,22 @@
package org.sxkj.gd.workOrder.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * 运营收益视图对象
 */
@Data
public class OperationalRevenueVo {
    private String id;
    private BigDecimal operatingIncome;
    private BigDecimal totalCost;
    private BigDecimal netProfit;
    private BigDecimal financialIrr;
    private String marketSpace;
    private String nickName;
    private String earnForecast;
    private LocalDateTime createTime;
}