Browse Source

左边饼

master
zxc 4 years ago
parent
commit
93f64369b4
  1. 7
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java
  2. 3
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  3. 23
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java
  4. 38
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java
  5. 27
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java
  6. 27
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java
  7. 16
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  8. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  9. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  10. 89
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  11. 14
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

7
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.result; package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@ -24,8 +25,14 @@ public class CategoryListResultDTO implements Serializable {
*/ */
private String categoryName; private String categoryName;
private Integer count;
private Integer codeLength;
public CategoryListResultDTO() { public CategoryListResultDTO() {
this.categoryCode = ""; this.categoryCode = "";
this.categoryName = ""; this.categoryName = "";
this.count = NumConstant.ZERO;
this.codeLength = NumConstant.ZERO;
} }
} }

3
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

@ -249,7 +249,8 @@
<select id="selectCategoryOneLevelListByCustomerId" resultType="com.epmet.dto.result.CategoryListResultDTO"> <select id="selectCategoryOneLevelListByCustomerId" resultType="com.epmet.dto.result.CategoryListResultDTO">
SELECT SELECT
CATEGORY_CODE, CATEGORY_CODE,
CATEGORY_NAME CATEGORY_NAME,
LENGTH(CATEGORY_CODE) AS codeLength
FROM issue_project_category_dict FROM issue_project_category_dict
WHERE DEL_FLAG = 0 WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId} AND CUSTOMER_ID = #{customerId}

23
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/7 9:55 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisFormDTO implements Serializable {
private static final long serialVersionUID = 4911448213428751186L;
public interface ProjectDistributionAnalysisForm{}
@NotBlank(message = "date不能为空",groups = ProjectDistributionAnalysisForm.class)
private String date;
}

38
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java

@ -0,0 +1,38 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/7 9:40 上午
* @DESC
*/
@Data
public class CategoryListDTO implements Serializable {
private static final long serialVersionUID = 2782140672250580404L;
/**
* 分类编码
*/
private String categoryCode;
/**
* 分类名字
*/
private String categoryName;
/**
* 个数
*/
private Integer count;
public CategoryListDTO() {
this.categoryCode = "";
this.categoryName = "";
this.count = NumConstant.ZERO;
}
}

27
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2021/12/7 11:18 上午
* @DESC
*/
@Data
public class ProjectCategoryByDateDTO implements Serializable {
private static final long serialVersionUID = -6620068264792270703L;
/**
* 项目创建时间
*/
private Date createdTime;
/**
* 分类编码
*/
private String categoryCode;
}

27
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/12/7 9:38 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisLeftResultDTO implements Serializable {
private static final long serialVersionUID = -5694808164804517466L;
/**
* 时间段
*/
private String time;
/**
* 分类集合
*/
private List<CategoryListDTO> categoryList;
}

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

@ -17,7 +17,9 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.AssertUtils;
@ -31,6 +33,7 @@ import com.epmet.dto.result.*;
import com.epmet.excel.ProjectExcel; import com.epmet.excel.ProjectExcel;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.service.ProjectService; import com.epmet.service.ProjectService;
import jdk.nashorn.internal.parser.Token;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -271,4 +274,17 @@ public class ProjectController {
return new Result<List<UnResolvedResultDTO>>().ok(projectService.getUnResolvedListByGrid(formDTO)); return new Result<List<UnResolvedResultDTO>>().ok(projectService.getUnResolvedListByGrid(formDTO));
} }
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
@PostMapping("projectdistributionanalysisleft")
public Result<List<ProjectDistributionAnalysisLeftResultDTO>> projectDistributionAnalysisLeft(@RequestBody ProjectDistributionAnalysisFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, ProjectDistributionAnalysisFormDTO.ProjectDistributionAnalysisForm.class);
return new Result<List<ProjectDistributionAnalysisLeftResultDTO>>().ok(projectService.projectDistributionAnalysisLeft(formDTO,tokenDto));
}
} }

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java

@ -217,4 +217,14 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
EventProjectInfoDTO selectEventProjectInfo(@Param("projectId")String projectId); EventProjectInfoDTO selectEventProjectInfo(@Param("projectId")String projectId);
List<ProjectEntity> selectByOriginId(String originId); List<ProjectEntity> selectByOriginId(String originId);
/**
* @Description 根据日期查询项目分类
* @param date
* @param orgId
* @author zxc
* @date 2021/12/7 2:43 下午
*/
List<ProjectCategoryByDateDTO> selectProjectCategoryByDate(@Param("date")String date,@Param("orgId")String orgId,@Param("codeLength")Integer codeLength);
} }

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

@ -19,6 +19,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ProjectDTO; import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
@ -331,4 +332,14 @@ public interface ProjectService extends BaseService<ProjectEntity> {
List<UnResolvedResultDTO> getUnResolvedListByGrid(ShiftProjectListFromDTO fromDTO); List<UnResolvedResultDTO> getUnResolvedListByGrid(ShiftProjectListFromDTO fromDTO);
List<ProjectEntity> getByOriginId(String eventId); List<ProjectEntity> getByOriginId(String eventId);
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto);
} }

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

@ -23,12 +23,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode; 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.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.*;
import com.epmet.constant.*; import com.epmet.constant.*;
@ -74,6 +78,7 @@ import javax.servlet.http.HttpServletRequest;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -2790,6 +2795,83 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return baseDao.selectByOriginId(originId); return baseDao.selectByOriginId(originId);
} }
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
@Override
public List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询到此工作人员的所属组织信息...");
}
Result<List<CategoryListResultDTO>> listResult = govIssueOpenFeignClient.selectCategoryOneLevelListByCustomerId(tokenDto);
if (!listResult.success()){
throw new EpmetException("查询1级分类列表失败...");
}
List<ProjectCategoryByDateDTO> projectCategoryByDateDTOS = baseDao.selectProjectCategoryByDate(formDTO.getDate(), staffInfo.getAgencyId(), listResult.getData().get(NumConstant.ZERO).getCodeLength());
if (CollectionUtils.isEmpty(projectCategoryByDateDTOS)){
return new ArrayList<>();
}
return disposeTimeInterval(projectCategoryByDateDTOS, formDTO.getDate(), listResult.getData());
}
/**
* @Description 区间项目分类数量处理
* @param categories
* @param date
* @param listResult
* @author zxc
* @date 2021/12/8 9:45 上午
*/
public List<ProjectDistributionAnalysisLeftResultDTO> disposeTimeInterval(List<ProjectCategoryByDateDTO> categories, String date,List<CategoryListResultDTO> listResult){
List<String> intervalTimeList = getIntervalTimeList("00:00", "24:00", 240);
List<ProjectDistributionAnalysisLeftResultDTO> result = new ArrayList<>();
Map<String, List<ProjectCategoryByDateDTO>> groupByCode = categories.stream().collect(Collectors.groupingBy(ProjectCategoryByDateDTO::getCategoryCode));
for (int i = 0; i < intervalTimeList.size(); i++) {
ProjectDistributionAnalysisLeftResultDTO dto = new ProjectDistributionAnalysisLeftResultDTO();
dto.setTime(intervalTimeList.get(i));
dto.setCategoryList(ConvertUtils.sourceToTarget(listResult,CategoryListDTO.class));
String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00");
long end = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, concat).getTime();
if (i == NumConstant.ZERO){
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
if (cate.getCategoryCode().equals(k)){
v.forEach(l -> {
if (l.getCreatedTime().getTime() < end){
cate.setCount(count.getAndSet(count.get() + NumConstant.ONE));
}
});
}
});
});
}else if (i == intervalTimeList.size() - NumConstant.ONE){
break;
}else {
String startStr = date.concat(" ").concat(intervalTimeList.get(i - NumConstant.ONE)).concat(":00");
long start = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, startStr).getTime();
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
if (cate.getCategoryCode().equals(k)){
v.forEach(l -> {
if (l.getCreatedTime().getTime() < end && l.getCreatedTime().getTime() >= start){
cate.setCount(count.getAndSet(count.get() + NumConstant.ONE));
}
});
}
});
});
}
result.add(dto);
}
return result;
}
/** /**
* @Description 获取固定时间段之间固定时间的集合 * @Description 获取固定时间段之间固定时间的集合
@ -2799,7 +2881,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
* @author zxc * @author zxc
* @date 2021/11/22 3:48 下午 * @date 2021/11/22 3:48 下午
*/ */
public static List<String> getIntervalTimeList(String start,String end,Integer interval) { public List<String> getIntervalTimeList(String start,String end,Integer interval) {
Date startDate = convertStringToDate("HH:mm", start); Date startDate = convertStringToDate("HH:mm", start);
Date endDate = convertStringToDate("HH:mm", end); Date endDate = convertStringToDate("HH:mm", end);
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
@ -2820,11 +2902,12 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
} }
list.remove(list.size() - NumConstant.ONE); list.remove(list.size() - NumConstant.ONE);
list.add(list.size(),"24:00"); list.add(list.size(),"24:00");
list.remove(NumConstant.ZERO);
return list; return list;
} }
public static Date convertStringToDate(String format, String dateStr) { public Date convertStringToDate(String format, String dateStr) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
try { try {
Date date = simpleDateFormat.parse(dateStr); Date date = simpleDateFormat.parse(dateStr);
@ -2835,7 +2918,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return null; return null;
} }
public static String convertDateToString(String format, Date date) { public String convertDateToString(String format, Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date); return simpleDateFormat.format(date);
} }

14
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -397,4 +397,18 @@
where p.DEL_FLAG = '0' where p.DEL_FLAG = '0'
AND p.ORIGIN_ID = #{originId} AND p.ORIGIN_ID = #{originId}
</select> </select>
<!-- 根据日期查询项目分类 -->
<select id="selectProjectCategoryByDate" resultType="com.epmet.dto.result.ProjectCategoryByDateDTO">
SELECT
DISTINCT p.ID AS projectId,
p.CREATED_TIME AS createdTime,
LEFT(pc.CATEGORY_CODE,#{codeLength}) AS categoryCode
FROM project p
INNER JOIN project_category pc ON (pc.PROJECT_ID = p.ID AND pc.DEL_FLAG = 0)
WHERE p.DEL_FLAG = 0
AND p.ORG_ID_PATH LIKE CONCAT('%',#{orgId})
AND DATE_FORMAT(p.CREATED_TIME,'%Y-%m-%d') = #{date}
ORDER BY projectId
</select>
</mapper> </mapper>
Loading…
Cancel
Save