New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.domain.vo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class IndexMsgCountVO { |
| | | |
| | | /** |
| | | * 审核消息数 |
| | | */ |
| | | private Long auditCount; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | |
New file |
| | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 项目管理基础信息表 服务类 |
| | |
| | | * @return |
| | | */ |
| | | Result all(); |
| | | |
| | | IndexCountVO getIndexCount(IndexDTO indexDTO); |
| | | |
| | | Map<String,Integer> countExceptionProject(IndexDTO indexDTO); |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 添加 |
| | | * |
| | | * @param form |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 修改 |
| | | * |
| | | * @param form |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 批量删除 |
| | | * |
| | | * @param ids |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * id删除 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 分页查询 |
| | | * |
| | | * @param query |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 根据id查找 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 列表 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | |
| | | .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; |
| | | } |
| | | } |
| | |
| | | * |
| | | * @author ycl |
| | | */ |
| | | public class TableDataInfo implements Serializable |
| | | public class TableDataInfo<T> implements Serializable |
| | | { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | */ |
| | | public class StringUtils extends org.apache.commons.lang3.StringUtils |
| | | { |
| | | public static final String SEPARATOR1 = ","; |
| | | |
| | | public static final String SLASH = "/"; |
| | | /** 空字符串 */ |
| | | private static final String NULLSTR = ""; |
| | | |
| | |
| | | <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> |
| | | |
| | | <!-- 依赖声明 --> |
| | |
| | | <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> |
| | | |