Browse Source

项目列表bug修改

项目添加项目耗时字段
dev
zhaoqifeng 4 years ago
parent
commit
f2b2c08334
  1. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java
  2. 69
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  3. 105
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  4. 13
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  5. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java
  6. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  7. 62
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  8. 2
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.17__project_work_minutes.sql
  9. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java

@ -38,4 +38,8 @@ public class AllProjectFormDTO implements Serializable {
private List<String> gridIdList; private List<String> gridIdList;
private String agencyId; private String agencyId;
private List<String> agencyIdList;
private String customerId;
} }

69
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java

@ -2,13 +2,16 @@ package com.epmet.dataaggre.service.govproject.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.ProjectConstant;
import com.epmet.dataaggre.dao.govproject.ProjectDao; import com.epmet.dataaggre.dao.govproject.ProjectDao;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO;
@ -167,61 +170,21 @@ public class GovProjectServiceImpl implements GovProjectService {
@Override @Override
public AllProjectResultDTO allProjectList(TokenDto tokenDto, AllProjectFormDTO formDTO) { public AllProjectResultDTO allProjectList(TokenDto tokenDto, AllProjectFormDTO formDTO) {
AllProjectResultDTO resultDTO = new AllProjectResultDTO(); AllProjectResultDTO resultDTO = new AllProjectResultDTO();
String agencyId = govOrgService.getAgencyIdByUserId(tokenDto.getUserId()); if (CollectionUtils.isEmpty(formDTO.getAgencyIdList()) && CollectionUtils.isEmpty(formDTO.getGridIdList())) {
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo) {
if (StringUtils.isEmpty(agencyId)) { throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取工作人员信息失败");
throw new RenException(String.format("获取工作人员组织信息失败,staffId->%s", tokenDto.getUserId())); }
List<String> agencyList = new ArrayList<>();
agencyList.add(staffInfo.getAgencyId());
formDTO.setAgencyIdList(agencyList);
} }
formDTO.setAgencyId(agencyId); formDTO.setCustomerId(tokenDto.getCustomerId());
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<ProjectInfoDTO> projectList = projectDao.getAllProject(formDTO); List<ProjectInfoDTO> projectList = projectDao.getAllProject(formDTO);
PageInfo<ProjectInfoDTO> pageInfo = new PageInfo<>(projectList);
if (CollectionUtils.isNotEmpty(projectList)) { if (CollectionUtils.isNotEmpty(projectList)) {
resultDTO.setProjectCount(projectList.size()); resultDTO.setProjectCount((int) pageInfo.getTotal());
projectList.forEach(project -> {
//计算项目耗时
Integer timeSpent;
if (ProjectConstant.PROJECT_STATUS_CLOSED.equals(project.getProjectStatus())) {
timeSpent = getTimeSpent(project.getProjectId(), project.getStartTime(), project.getEndTime());
} else {
timeSpent = getTimeSpent(project.getProjectId(), project.getStartTime(), new Date());
}
project.setTimeSpent(timeSpent);
//获取当前处理部门
ProjectDTO projectDTO = new ProjectDTO();
projectDTO.setId(project.getProjectId());
List<String> departmentList = projectDao.selectDepartmentNameList(projectDTO);
project.setCurrentDisposeDept(departmentList);
});
int pageSize = pageIndex + formDTO.getPageSize();
if (pageSize > projectList.size()) {
pageSize = projectList.size();
}
//排序(创建:create 更新:update 部门:department 耗时:date 次数:count)
switch (formDTO.getSortType()) {
case "create":
projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getProjectTime).reversed())
.collect(Collectors.toList()).subList(pageIndex, pageSize);
break;
case "update":
projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getUpdateTime).reversed())
.collect(Collectors.toList()).subList(pageIndex, pageSize);
break;
case "department":
projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getDepartmentCount).reversed())
.collect(Collectors.toList()).subList(pageIndex, pageSize);
break;
case "date":
projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getTimeSpent).reversed())
.collect(Collectors.toList()).subList(pageIndex, pageSize);
break;
case "count":
projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getProcessCount).reversed())
.collect(Collectors.toList()).subList(pageIndex, pageSize);
break;
default:
break;
}
resultDTO.setProjectList(projectList); resultDTO.setProjectList(projectList);
} else { } else {
resultDTO.setProjectCount(NumConstant.ZERO); resultDTO.setProjectCount(NumConstant.ZERO);

105
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml

@ -4,7 +4,7 @@
<mapper namespace="com.epmet.dataaggre.dao.govproject.ProjectDao"> <mapper namespace="com.epmet.dataaggre.dao.govproject.ProjectDao">
<select id="getAllProject" resultType="com.epmet.dataaggre.dto.govproject.result.ProjectInfoDTO"> <select id="getAllProject" resultType="com.epmet.dataaggre.dto.govproject.result.ProjectInfoDTO">
SELECT DISTINCT SELECT
p.ID AS projectId, p.ID AS projectId,
p.TITLE AS projectTitle, p.TITLE AS projectTitle,
p.`STATUS` AS projectStatus, p.`STATUS` AS projectStatus,
@ -14,28 +14,115 @@
date_format( updateTime, '%Y%m%d' )) AS updateTime, date_format( updateTime, '%Y%m%d' )) AS updateTime,
p.CREATED_TIME AS startTime, p.CREATED_TIME AS startTime,
updateTime AS endTime, updateTime AS endTime,
p.WORK_MINUTES DIV 60 AS timeSpent,
departmentCount, departmentCount,
IFNULL( processCount, 0 ) AS processCount, IFNULL( processCount, 0 ) AS processCount,
IFNULL( pp.PUBLIC_REPLY, '' ) AS publicReply IFNULL( pp.PUBLIC_REPLY, '' ) AS publicReply
FROM FROM
project p project p
LEFT JOIN ( SELECT PROJECT_ID, GRID_ID FROM project_related_personnel WHERE DEL_FLAG = '0' AND SOURCE_TYPE = 'issue' ) prp ON p.ID = prp.PROJECT_ID INNER JOIN ( SELECT PROJECT_ID, MAX( CREATED_TIME ) AS updateTime FROM project_process ppro WHERE CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ppro ON p.ID = ppro.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, MAX( CREATED_TIME ) AS updateTime FROM project_process ppro GROUP BY PROJECT_ID ) ppro ON p.ID = ppro.PROJECT_ID INNER JOIN ( SELECT PROJECT_ID, COUNT( DISTINCT DEPARTMENT_NAME ) AS departmentCount FROM project_staff WHERE CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ps ON ps.PROJECT_ID = p.ID
INNER JOIN ( SELECT PROJECT_ID, COUNT( DISTINCT DEPARTMENT_NAME ) AS departmentCount FROM project_staff GROUP BY PROJECT_ID ) ps ON ps.PROJECT_ID = p.ID LEFT JOIN ( SELECT PROJECT_ID, COUNT( ID ) AS processCount FROM project_process WHERE DEL_FLAG = '0' AND OPERATION != 'created' AND CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ppc ON ppc.PROJECT_ID = p.ID
LEFT JOIN ( SELECT PROJECT_ID, COUNT( ID ) AS processCount FROM project_process WHERE DEL_FLAG = '0' AND OPERATION != 'created' GROUP BY PROJECT_ID ) ppc ON ppc.PROJECT_ID = p.ID
LEFT JOIN project_process pp ON p.ID = pp.PROJECT_ID LEFT JOIN project_process pp ON p.ID = pp.PROJECT_ID
AND pp.OPERATION = 'close' AND pp.DEL_FLAG = '0' AND pp.CUSTOMER_ID = #{customerId}
AND pp.OPERATION = 'close'
WHERE WHERE
p.DEL_FLAG = '0' p.DEL_FLAG = '0'
AND p.CUSTOMER_ID = #{customerId}
AND p.ORG_ID_PATH LIKE concat('%', #{agencyId}, '%') AND p.ORG_ID_PATH LIKE concat('%', #{agencyId}, '%')
<if test="projectStatus != null and projectStatus != ''">
AND p.`STATUS` = #{projectStatus}
</if>
<choose>
<when test="agencyIdList != null and agencyIdList.size() > 0">
<foreach collection="agencyIdList" item="agency" open="AND (" close=" )" separator=" OR ">
p.ORG_ID_PATH LIKE concat('%', #{agency}, '%')
</foreach>
<if test="gridIdList != null and gridIdList.size() > 0"> <if test="gridIdList != null and gridIdList.size() > 0">
OR p.ID IN (
SELECT
PROJECT_ID
FROM
project_related_personnel
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'issue'
AND CUSTOMER_ID = #{customerId}
<foreach collection="gridIdList" item="gridId" open="AND (" close=" )" separator=" OR ">
GRID_ID = #{gridId}
</foreach>
UNION ALL
SELECT
PROJECT_ID
FROM
resi_event_report_org a
INNER JOIN resi_event b ON a.RESI_EVENT_ID = b.ID
AND b.CUSTOMER_ID = #{customerId}
AND b.SHIFT_PROJECT = 1
WHERE
a.DEL_FLAG = '0'
AND a.ORG_TYPE = 'grid'
AND a.CUSTOMER_ID = #{customerId}
<foreach collection="gridIdList" item="gridId" open="AND (" close=" )" separator=" OR "> <foreach collection="gridIdList" item="gridId" open="AND (" close=" )" separator=" OR ">
prp.GRID_ID = #{gridId} ORG_ID = #{gridId}
</foreach> </foreach>
)
</if> </if>
<if test="projectStatus != null and projectStatus != ''"> </when>
AND p.`STATUS` = #{projectStatus} <otherwise>
<if test="gridIdList != null and gridIdList.size() > 0">
AND p.ID IN (
SELECT
PROJECT_ID
FROM
project_related_personnel
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'issue'
AND CUSTOMER_ID = #{customerId}
<foreach collection="gridIdList" item="gridId" open="AND (" close=" )" separator=" OR ">
GRID_ID = #{gridId}
</foreach>
UNION ALL
SELECT
PROJECT_ID
FROM
resi_event_report_org a
INNER JOIN resi_event b ON a.RESI_EVENT_ID = b.ID
AND b.CUSTOMER_ID = #{customerId}
AND b.SHIFT_PROJECT = 1
WHERE
a.DEL_FLAG = '0'
AND a.ORG_TYPE = 'grid'
AND a.CUSTOMER_ID = #{customerId}
<foreach collection="gridIdList" item="gridId" open="AND (" close=" )" separator=" OR ">
ORG_ID = #{gridId}
</foreach>
)
</if> </if>
</otherwise>
</choose>
<choose>
<when test="sortType == 'create'">
ORDER BY projectTime DESC
</when>
<when test="sortType == 'update'">
ORDER BY updateTime DESC
</when>
<when test="sortType == 'department'">
ORDER BY departmentCount DESC
</when>
<when test="sortType == 'count'">
ORDER BY processCount DESC
</when>
<when test="sortType == 'date'">
ORDER BY timeSpent DESC
</when>
<otherwise>
ORDER BY projectTime DESC
</otherwise>
</choose>
</select> </select>
<!-- 查询项目信息 --> <!-- 查询项目信息 -->
<select id="selectProjectInfoClosed" resultType="com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO"> <select id="selectProjectInfoClosed" resultType="com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO">

13
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -312,4 +312,17 @@ public class ProjectController {
ValidatorUtils.validateEntity(formDTO,TopicResearchAnalysisFormDTO.AddUserInternalGroup.class); ValidatorUtils.validateEntity(formDTO,TopicResearchAnalysisFormDTO.AddUserInternalGroup.class);
return new Result<TopicResearchAnalysisResDTO>().ok(projectService.topicResearchAnalysis(formDTO)); return new Result<TopicResearchAnalysisResDTO>().ok(projectService.topicResearchAnalysis(formDTO));
} }
/**
* @Description 计算项目耗时
* @Param dto
* @Return {@link Result}
* @Author zhaoqifeng
* @Date 2022/1/11 17:52
*/
@PostMapping("project-Work-Minutes-Job")
public Result projectWorkMinutesJob(@RequestBody ProjectDTO dto) {
projectService.projectWorkMinutesJob(dto);
return new Result();
}
} }

8
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity; package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* 项目表 * 项目表
* *
@ -98,4 +95,9 @@ public class ProjectEntity extends BaseEpmetEntity {
* */ * */
private String locateDimension; private String locateDimension;
/**
* 项目耗时分钟
* */
private Integer workMinutes;
} }

9
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -357,4 +357,13 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @return * @return
*/ */
TopicResearchAnalysisResDTO topicResearchAnalysis(TopicResearchAnalysisFormDTO formDTO); TopicResearchAnalysisResDTO topicResearchAnalysis(TopicResearchAnalysisFormDTO formDTO);
/**
* 计算项目耗时定时任务
* @Param dto
* @Return
* @Author zhaoqifeng
* @Date 2022/1/11 17:05
*/
void projectWorkMinutesJob(ProjectDTO dto);
} }

62
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -18,6 +18,7 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
@ -58,7 +59,6 @@ import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.send.SendMqMsgUtil; import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.*; import com.epmet.service.*;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -448,8 +448,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
} }
Date current = new Date(); Date current = new Date();
//项目耗时
Integer workMinutes = calculateDelta_T(ProjectConstant.PRECISE_CALCULATION,
ProjectConstant.CALCULATION_TYPE_DEFAULT, fromDTO.getProjectId(), projectEntity.getCreatedTime(), current);
projectEntity.setStatus(ProjectConstant.CLOSED); projectEntity.setStatus(ProjectConstant.CLOSED);
projectEntity.setClosedStatus(fromDTO.getClosedStatus()); projectEntity.setClosedStatus(fromDTO.getClosedStatus());
projectEntity.setWorkMinutes(workMinutes);
baseDao.updateById(projectEntity); baseDao.updateById(projectEntity);
//更新项目关联表 //更新项目关联表
ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity(); ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity();
@ -642,9 +648,16 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
throw new RenException(EpmetErrorCode.PROJECT_IS_CLOSED.getCode()); throw new RenException(EpmetErrorCode.PROJECT_IS_CLOSED.getCode());
} }
Date current = new Date(); Date current = new Date();
//项目耗时
Integer workMinutes = calculateDelta_T(ProjectConstant.PRECISE_CALCULATION,
ProjectConstant.CALCULATION_TYPE_DEFAULT, fromDTO.getProjectId(), projectEntity.getCreatedTime(), current);
projectEntity.setStatus(ProjectConstant.CLOSED); projectEntity.setStatus(ProjectConstant.CLOSED);
projectEntity.setClosedStatus(fromDTO.getClosedStatus()); projectEntity.setClosedStatus(fromDTO.getClosedStatus());
projectEntity.setWorkMinutes(workMinutes);
baseDao.updateById(projectEntity); baseDao.updateById(projectEntity);
//更新项目关联表 //更新项目关联表
ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity(); ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity();
@ -3045,6 +3058,53 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return resultDTO; return resultDTO;
} }
/**
* 计算项目耗时定时任务
*
* @param dto
* @Param dto
* @Return
* @Author zhaoqifeng
* @Date 2022/1/11 17:05
*/
@Override
public void projectWorkMinutesJob(ProjectDTO dto) {
List<ProjectEntity> list;
int pageNo = NumConstant.ZERO;
int PageSize = NumConstant.ONE_HUNDRED;
do {
pageNo = pageNo + NumConstant.ONE;
PageHelper.startPage(pageNo, PageSize);
//获取项目列表
LambdaQueryWrapper<ProjectEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(dto.getId()), ProjectEntity::getId, dto.getId());
wrapper.eq(StringUtils.isNotBlank(dto.getStatus()), ProjectEntity::getStatus, dto.getStatus());
list = baseDao.selectList(wrapper);
if (CollectionUtils.isNotEmpty(list)) {
//提取项目ID,创建时间,更新时间
List<TimestampIntervalFormDTO> intervalList = list.stream().map(item -> {
TimestampIntervalFormDTO formDTO = new TimestampIntervalFormDTO();
formDTO.setId(item.getId());
formDTO.setLeft(item.getCreatedTime());
if (ProjectConstant.PENDING.equals(item.getStatus())) {
formDTO.setRight(new Date());
} else {
formDTO.setRight(item.getUpdatedTime());
}
return formDTO;
}).collect(Collectors.toList());
//批量计算项目耗时
Map<String,Integer> map = batchCalculateDelta_T(ProjectConstant.PRECISE_CALCULATION,
ProjectConstant.CALCULATION_TYPE_DEFAULT, intervalList);
list.forEach(item -> {
item.setWorkMinutes(map.get(item.getId()));
});
updateBatchById(list);
}
} while(CollectionUtils.isNotEmpty(list));
}
/** /**
* @Description 区间项目分类数量处理 * @Description 区间项目分类数量处理
* 查询的是时间段内的分类项目数查询的时间 是传入一个日期拼上时间在进行比较大小 * 查询的是时间段内的分类项目数查询的时间 是传入一个日期拼上时间在进行比较大小

2
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.17__project_work_minutes.sql

@ -0,0 +1,2 @@
ALTER TABLE `project`
ADD COLUMN `WORK_MINUTES` integer(11) NULL DEFAULT 0 COMMENT '项目耗时(分钟)' AFTER `LOCATE_DIMENSION`;

4
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -995,7 +995,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED); BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP); radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP);
} }
dto.setRadio(radio.stripTrailingZeros().toString().concat("%")); dto.setRadio(radio.stripTrailingZeros().toPlainString().concat("%"));
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@ -1054,7 +1054,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED); BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP); radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP);
} }
dto.setRadio(radio.stripTrailingZeros().toString().concat("%")); dto.setRadio(radio.stripTrailingZeros().toPlainString().concat("%"));
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

Loading…
Cancel
Save