zh
2024-11-25 3aea09f05948ec4b284c5005a3afc78a71b7789f
首頁接口
5个文件已修改
10个文件已添加
684 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/IndexController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexCountVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexImpTypeCountVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexMsgCountVO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/IndexProPhaseCountVO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/PageQuery.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/ParticipantVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/TaskBo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/TaskVo.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/ProjectInfoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/ycl/common/core/page/TableDataInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/ycl/common/utils/StringUtils.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/IndexController.java
New file
@@ -0,0 +1,97 @@
package com.ycl.controller;
import com.ycl.common.core.domain.R;
import com.ycl.common.core.page.TableDataInfo;
import com.ycl.domain.vo.*;
import com.ycl.service.ProjectInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
 * 首页
 */
@RequiredArgsConstructor
@RestController
@RequestMapping("/")
public class IndexController {
    @Autowired
    private ProjectInfoService projectInfoService;
    /**
     * 项目数量统计
     *
     * @param indexDTO 筛选条件
     * @return
     */
    @PostMapping("/count")
    public R<IndexCountVO> count(@RequestBody IndexDTO indexDTO) {
        return R.ok(projectInfoService.getIndexCount(indexDTO));
    }
    /**
     * 异常项目统计
     *
     * @return
     */
    @GetMapping("/countExceptionProject")
    public R<?> countExceptionProject(IndexDTO indexDTO) {
        return R.ok(projectInfoService.countExceptionProject(indexDTO));
    }
    /**
     * 审核消息列表
     */
    @GetMapping("/audit-message")
    public TableDataInfo<Object> auditMessage(PageQuery pageQuery) {
        return null;
    }
    /**
     * 消息条数
     */
    @GetMapping("/message-count")
    public R<IndexMsgCountVO> messageCount() {
        IndexMsgCountVO vo = new IndexMsgCountVO();
        vo.setAuditCount(0L);
        return R.ok(vo);
    }
    /**
     * 阅读消息
     */
    @GetMapping("/read-message")
    public R<Boolean> readMessage(Long id) {
//        auditHistoryService.lambdaUpdate().eq(AuditHistory::getId, id).set(AuditHistory::getIsRead, 1).update();
        return R.ok();
    }
    /**
     * 待办流程
     */
    @GetMapping("/getPageByAllTaskWait")
    public TableDataInfo<TaskVo> getPageByAllTaskWait(TaskBo taskBo, PageQuery pageQuery) {
//        TableDataInfo<TaskVo> pageByAllTaskWait = actTaskService.getPageByTaskWait(taskBo, pageQuery);
//        List<TaskVo> rows = pageByAllTaskWait.getRows();
//        List<String> list = rows.stream().map(TaskVo::getBusinessKey).toList();
//        if (CollectionUtils.isEmpty(list)) {
//            return pageByAllTaskWait;
//        }
//        projectInfoService.lambdaQuery().in(ProjectInfo::getId, list).list().forEach(projectInfo -> rows.forEach(taskVo -> {
//            if (ObjectUtil.isNotEmpty(taskVo.getDueDate())) {
//                taskVo.setRemainingTime(DateTimeUtils.calculateDifference(new Date(), taskVo.getDueDate()));
//            }
//            if (ObjectUtil.equals(taskVo.getBusinessKey(), projectInfo.getId().toString())) {
//                taskVo.setBusinessName(projectInfo.getProjectName());
//            }
//        }));
//        pageByAllTaskWait.setRows(rows);
//        return pageByAllTaskWait;
        return null;
    }
}
business/src/main/java/com/ycl/domain/vo/IndexCountVO.java
New file
@@ -0,0 +1,27 @@
package com.ycl.domain.vo;
import lombok.Data;
import java.util.List;
/**
 * 首页项目数量统计的返回类
 * @Author: ljx
 * @CreateTime: 2024-10-16 15:08
 */
@Data
public class IndexCountVO {
    /**
     * 项目阶段数量统计
     */
    private List<IndexProPhaseCountVO> proPhaseCountVO;
    /**
     * 项目类型数量统计
     */
    private List<IndexImpTypeCountVO> impTypeCountVO;
}
business/src/main/java/com/ycl/domain/vo/IndexDTO.java
New file
@@ -0,0 +1,47 @@
package com.ycl.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class IndexDTO extends BaseEntity {
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    /**
     * 行政区划
     */
    private String areaCode;
    /**
     * 投资金额最小值
     */
    private BigDecimal minInvestment;
    /**
     * 投资金额最大值
     */
    private BigDecimal maxInvestment;
}
business/src/main/java/com/ycl/domain/vo/IndexImpTypeCountVO.java
New file
@@ -0,0 +1,39 @@
package com.ycl.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 首页项目重点分类数量统计
 * @Author: ljx
 * @CreateTime: 2024-10-16 15:29
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class IndexImpTypeCountVO {
    /**
     * 重点分类类型
     */
    private String type;
    /**
     * 项目数
     */
    private Integer count=0;
    /**
     * 项目金额
     */
    private String amount ="0.00";
    private String text;
    public IndexImpTypeCountVO(String type,String text){
        this.type = type;
        this.text = text;
    }
}
business/src/main/java/com/ycl/domain/vo/IndexMsgCountVO.java
New file
@@ -0,0 +1,12 @@
package com.ycl.domain.vo;
import lombok.Data;
@Data
public class IndexMsgCountVO {
    /**
     * 审核消息数
     */
    private Long auditCount;
}
business/src/main/java/com/ycl/domain/vo/IndexProPhaseCountVO.java
New file
@@ -0,0 +1,34 @@
package com.ycl.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 首页项目阶段数量统计
 * @Author: ljx
 * @CreateTime: 2024-10-16 15:24
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IndexProPhaseCountVO {
    /**
     * 项目类型
     */
    private String type;
    /**
     * 项目数
     */
    private Integer count=0;
    /**
     * 项目金额
     */
    private String amount="0.00";
    private String text;
}
business/src/main/java/com/ycl/domain/vo/PageQuery.java
New file
@@ -0,0 +1,114 @@
package com.ycl.domain.vo;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.common.exception.ServiceException;
import com.ycl.common.utils.StringUtils;
import com.ycl.common.utils.sql.SqlUtil;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
public class PageQuery implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 分页大小
     */
    private Integer pageSize = 10;
    /**
     * 当前页数
     */
    private Integer pageNum = 1;
    /**
     * 排序列
     */
    private String orderByColumn;
    /**
     * 排序的方向desc或者asc
     */
    private String isAsc;
    /**
     * 当前记录起始索引 默认值
     */
    public static final int DEFAULT_PAGE_NUM = 1;
    /**
     * 每页显示记录数 默认值 默认查全部
     */
    public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
    /**
     * 构建分页对象
     */
//    public <T> Page<T> build() {
//        Integer pageNum = ObjectUtil.defaultIfNull(getPageNum(), DEFAULT_PAGE_NUM);
//        Integer pageSize = ObjectUtil.defaultIfNull(getPageSize(), DEFAULT_PAGE_SIZE);
//        if (pageNum <= 0) {
//            pageNum = DEFAULT_PAGE_NUM;
//        }
//        Page<T> page = new Page<>(pageNum, pageSize);
//        List<OrderItem> orderItems = buildOrderItem();
//        if (CollUtil.isNotEmpty(orderItems)) {
//            page.addOrder(orderItems);
//        }
//        return page;
//    }
    /**
     * 构建排序
     *
     * 支持的用法如下:
     * {isAsc:"asc",orderByColumn:"id"} order by id asc
     * {isAsc:"asc",orderByColumn:"id,createTime"} order by id asc,create_time asc
     * {isAsc:"desc",orderByColumn:"id,createTime"} order by id desc,create_time desc
     * {isAsc:"asc,desc",orderByColumn:"id,createTime"} order by id asc,create_time desc
     */
    private List<OrderItem> buildOrderItem() {
        if (StringUtils.isBlank(orderByColumn) || StringUtils.isBlank(isAsc)) {
            return null;
        }
        String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
        orderBy = StringUtils.toUnderScoreCase(orderBy);
        // 兼容前端排序类型
        isAsc = StringUtils.replaceEach(isAsc, new String[]{"ascending", "descending"}, new String[]{"asc", "desc"});
        String[] orderByArr = orderBy.split(StringUtils.SEPARATOR1);
        String[] isAscArr = isAsc.split(StringUtils.SEPARATOR1);
        if (isAscArr.length != 1 && isAscArr.length != orderByArr.length) {
            throw new ServiceException("排序参数有误");
        }
        List<OrderItem> list = new ArrayList<>();
        // 每个字段各自排序
        for (int i = 0; i < orderByArr.length; i++) {
            String orderByStr = orderByArr[i];
            String isAscStr = isAscArr.length == 1 ? isAscArr[0] : isAscArr[i];
            if ("asc".equals(isAscStr)) {
                list.add(OrderItem.asc(orderByStr));
            } else if ("desc".equals(isAscStr)) {
                list.add(OrderItem.desc(orderByStr));
            } else {
                throw new ServiceException("排序参数有误");
            }
        }
        return list;
    }
    public Integer getFirstNum() {
        return (pageNum - 1) * pageSize;
    }
}
business/src/main/java/com/ycl/domain/vo/ParticipantVo.java
New file
@@ -0,0 +1,38 @@
package com.ycl.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
@Data
public class ParticipantVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 组id(角色id)
     */
    private List<Long> groupIds;
    /**
     * 候选人id(用户id) 当组id不为空时,将组内人员查出放入candidate
     */
    private List<Long> candidate;
    /**
     * 候选人名称(用户名称) 当组id不为空时,将组内人员查出放入candidateName
     */
    private List<String> candidateName;
    /**
     * 是否认领标识
     * 当为空时默认当前任务不需要认领
     * 当为true时当前任务说明为候选模式并且有人已经认领了任务可以归还,
     * 当为false时当前任务说明为候选模式该任务未认领,
     */
    private Boolean claim;
}
business/src/main/java/com/ycl/domain/vo/TaskBo.java
New file
@@ -0,0 +1,29 @@
package com.ycl.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
public class TaskBo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 任务名称
     */
    private String name;
    /**
     * 流程定义名称
     */
    private String processDefinitionName;
    /**
     * 流程定义key
     */
    private String processDefinitionKey;
}
business/src/main/java/com/ycl/domain/vo/TaskVo.java
New file
@@ -0,0 +1,181 @@
package com.ycl.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
 * 任务视图
 *
 * @author may
 */
@Data
public class TaskVo implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 任务id
     */
    private String id;
    /**
     * 任务名称
     */
    private String name;
    /**
     * 描述
     */
    private String description;
    /**
     * 优先级
     */
    private Integer priority;
    /**
     * 负责此任务的人员的用户id
     */
    private String owner;
    /**
     * 办理人id
     */
    private Long assignee;
    /**
     * 办理人
     */
    private String assigneeName;
    /**
     * 流程实例id
     */
    private String processInstanceId;
    /**
     * 执行id
     */
    private String executionId;
    /**
     * 无用
     */
    private String taskDefinitionId;
    /**
     * 流程定义id
     */
    private String processDefinitionId;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 已办任务-创建时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 节点id
     */
    private String taskDefinitionKey;
    /**
     * 任务截止日期
     */
    private Date dueDate;
    /**
     * 流程类别
     */
    private String category;
    /**
     * 父级任务id
     */
    private String parentTaskId;
    /**
     * 租户id
     */
    private String tenantId;
    /**
     * 认领时间
     */
    private Date claimTime;
    /**
     * 流程状态
     */
    private String businessStatus;
    /**
     * 流程状态
     */
    private String businessStatusName;
    /**
     * 流程定义名称
     */
    private String processDefinitionName;
    /**
     * 流程定义key
     */
    private String processDefinitionKey;
    /**
     * 流程定义版本
     */
    private Integer processDefinitionVersion;
    /**
     * 参与者
     */
    private ParticipantVo participantVo;
    /**
     * 是否会签
     */
    private Boolean multiInstance;
    /**
     * 业务id
     */
    private String businessKey;
//    /**
//     * 流程定义配置
//     */
//    private WfDefinitionConfigVo wfDefinitionConfigVo;
//
//    /**
//     * 节点配置
//     */
//    private WfNodeConfigVo wfNodeConfigVo;
    /**
     * 业务名称
     */
    private String businessName;
    /**
     * 剩余时间
     */
    private String remainingTime;
}
business/src/main/java/com/ycl/service/ProjectInfoService.java
@@ -5,8 +5,11 @@
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.form.ProjectInfoForm;
import com.ycl.domain.query.ProjectInfoQuery;
import com.ycl.domain.vo.IndexCountVO;
import com.ycl.domain.vo.IndexDTO;
import java.util.List;
import java.util.Map;
/**
 * 项目管理基础信息表 服务类
@@ -63,4 +66,8 @@
     * @return
     */
    Result all();
    IndexCountVO getIndexCount(IndexDTO indexDTO);
    Map<String,Integer> countExceptionProject(IndexDTO indexDTO);
}
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -6,7 +6,7 @@
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.form.ProjectInfoForm;
import com.ycl.domain.query.ProjectInfoQuery;
import com.ycl.domain.vo.ProjectInfoVO;
import com.ycl.domain.vo.*;
import com.ycl.framework.utils.PageUtil;
import com.ycl.mapper.ProjectInfoMapper;
import com.ycl.service.ProjectInfoService;
@@ -15,7 +15,10 @@
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -32,6 +35,7 @@
    /**
     * 添加
     *
     * @param form
     * @return
     */
@@ -44,6 +48,7 @@
    /**
     * 修改
     *
     * @param form
     * @return
     */
@@ -60,6 +65,7 @@
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
@@ -71,6 +77,7 @@
    /**
     * id删除
     *
     * @param id
     * @return
     */
@@ -82,6 +89,7 @@
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
@@ -94,6 +102,7 @@
    /**
     * 根据id查找
     *
     * @param id
     * @return
     */
@@ -106,6 +115,7 @@
    /**
     * 列表
     *
     * @return
     */
    @Override
@@ -116,4 +126,37 @@
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public IndexCountVO getIndexCount(IndexDTO indexDTO) {
        // {"proPhaseCountVO":[{"type":"储备规划阶段","count":0,"amount":"0.00","text":"储"},
        // {"type":"项目前期阶段","count":0,"amount":"0.00","text":"新"},
        // {"type":"实施阶段","count":0,"amount":"0.00","text":"建"},{"type":"竣工投用阶段","count":0,"amount":"0.00","text":"竣"}],
        // "impTypeCountVO":[{"type":"一般项目","count":0,"amount":"0.00","text":"普"},
        // {"type":"县重点项目","count":0,"amount":"0.00","text":"县"},{"type":"市重点项目","count":0,"amount":"0.00","text":"市"},
        // {"type":"省重点项目","count":0,"amount":"0.00","text":"省"}]}}
        IndexCountVO indexCountVO = new IndexCountVO();
        List<IndexProPhaseCountVO> proPhaseCountVO = new ArrayList<>();
        proPhaseCountVO.add(new IndexProPhaseCountVO("储备规划阶段", 0, "0.00", "储"));
        proPhaseCountVO.add(new IndexProPhaseCountVO("项目前期阶段", 0, "0.00", "新"));
        proPhaseCountVO.add(new IndexProPhaseCountVO("实施阶段", 0, "0.00", "建"));
        proPhaseCountVO.add(new IndexProPhaseCountVO("竣工投用阶段", 0, "0.00", "竣"));
        List<IndexImpTypeCountVO> impTypeCountVO = new ArrayList<>();
        impTypeCountVO.add(new IndexImpTypeCountVO("一般项目", 0, "0.00", "普"));
        impTypeCountVO.add(new IndexImpTypeCountVO("县重点项目", 0, "0.00", "县"));
        impTypeCountVO.add(new IndexImpTypeCountVO("市重点项目", 0, "0.00", "市"));
        impTypeCountVO.add(new IndexImpTypeCountVO("省重点项目", 0, "0.00", "省"));
        indexCountVO.setImpTypeCountVO(impTypeCountVO);
        indexCountVO.setProPhaseCountVO(proPhaseCountVO);
        return indexCountVO;
    }
    @Override
    public Map<String, Integer> countExceptionProject(IndexDTO indexDTO) {
        Map<String, Integer> map = new HashMap<>();
        map.put("processExceptionProject", 0);
        return map;
    }
}
common/src/main/java/com/ycl/common/core/page/TableDataInfo.java
@@ -8,7 +8,7 @@
 *
 * @author ycl
 */
public class TableDataInfo implements Serializable
public class TableDataInfo<T> implements Serializable
{
    private static final long serialVersionUID = 1L;
common/src/main/java/com/ycl/common/utils/StringUtils.java
@@ -17,6 +17,9 @@
 */
public class StringUtils extends org.apache.commons.lang3.StringUtils
{
    public static final String SEPARATOR1 = ",";
    public static final String SLASH = "/";
    /** 空字符串 */
    private static final String NULLSTR = "";
pom.xml
@@ -36,6 +36,7 @@
        <knife.version>3.0.3</knife.version>
        <flowable.version>6.8.1</flowable.version>
        <flowable-other.version>6.8.1</flowable-other.version>
        <hutool.version>5.8.31</hutool.version>
    </properties>
    <!-- 依赖声明 -->
@@ -243,6 +244,14 @@
                <version>${platform.version}</version>
            </dependency>
            <!-- hutool 的依赖配置-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-bom</artifactId>
                <version>${hutool.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>