Browse Source

screenProjectData

master
wangchao 5 years ago
parent
commit
52c6ca8219
  1. 122
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/ProjectStaffDTO.java
  2. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectImgDataDTO.java
  3. 4
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectProcessDTO.java
  4. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectProcessDao.java
  5. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java
  6. 27
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java
  7. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java
  8. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  9. 52
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java
  10. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java
  11. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectProcessService.java
  12. 17
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java
  13. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectProcessServiceImpl.java
  14. 32
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java
  15. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java
  16. 71
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java
  17. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  18. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java
  19. 23
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
  20. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java
  21. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  22. 14
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  23. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectProcessDao.xml
  24. 97
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml
  25. 16
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml

122
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/ProjectStaffDTO.java

@ -0,0 +1,122 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.project;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 项目人员关联表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-05-11
*/
@Data
public class ProjectStaffDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 唯一标识
*/
private String id;
/**
* 项目ID
*/
private String projectId;
/**
* 项目处理进展ID
*/
private String processId;
/**
* 客户ID
*/
private String customerId;
/**
* 机关ID
*/
private String orgId;
/**
* 部门ID
*/
private String departmentId;
/**
* 网格ID
*/
private String gridId;
/**
* 所属机关11:22:33
*/
private String orgIdPath;
/**
* 人员ID
*/
private String staffId;
/**
* 部门名
*/
private String departmentName;
/**
* 是否处理未处理unhandled已处理handle
*/
private String isHandle;
/**
* 删除标识0.未删除 1.已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectImgDataDTO.java

@ -88,4 +88,6 @@ public class ScreenProjectImgDataDTO implements Serializable {
*/
private Date updatedTime;
private String topicId;
}

4
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectProcessDTO.java

@ -19,7 +19,9 @@ package com.epmet.dto.screen;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.epmet.dto.project.ProjectStaffDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@ -143,4 +145,6 @@ public class ScreenProjectProcessDTO implements Serializable {
*/
private String DataEndTime;
private List<ProjectStaffDTO> points;
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectProcessDao.java

@ -32,4 +32,6 @@ import org.apache.ibatis.annotations.Param;
public interface ScreenProjectProcessDao extends BaseDao<ScreenProjectProcessEntity> {
int deleteByDateIdAndCustomerId(@Param("customerId") String customerId, @Param("dateId") String dateId);
int countByCustomerId(@Param("customerId") String customerId);
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java

@ -23,6 +23,7 @@ import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectCategoryDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.entity.project.ProjectEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

27
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java

@ -18,12 +18,14 @@
package com.epmet.dao.project;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ProjectProcessDTO;
import com.epmet.dto.project.FinishOrgDTO;
import com.epmet.dto.project.ProcessInfoDTO;
import com.epmet.dto.project.ProjectOrgRelationDTO;
import com.epmet.dto.project.result.ProjectLatestOperationResultDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.dto.screen.ScreenProjectProcessDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.entity.project.ProjectProcessEntity;
import org.apache.ibatis.annotations.Mapper;
@ -153,4 +155,27 @@ public interface ProjectProcessDao extends BaseDao<ProjectProcessEntity> {
* @date 2020.09.28 14:45
*/
List<ProjectLatestOperationResultDTO> selectLatestOperation(@Param("list") List<String> list,@Param("customerId") String customerId);
/**
* @Description 查找指定日期结案的项目
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.ProjectProcessDTO>
* @author wangc
* @date 2021.03.09 10:49
*/
List<ProjectProcessDTO> selectClosedProjectOnAppointedDay(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @Description 统计新增项目节点以及被流转到的指向部门
* @param customerId
* @param dateId
* @param dataEndTime
* @return java.util.List<com.epmet.dto.screen.ScreenProjectProcessDTO>
* @author wangc
* @date 2021.03.09 16:25
*/
List<ScreenProjectProcessDTO> selectProjectProcessAndDirection(@Param("customerId") String customerId, @Param("dateId") String dateId, @Param("dataEndTime")String dataEndTime );
List<ScreenProjectProcessAttachmentDTO> selectProcessAttachment(@Param("list")List<String> list);
}

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java

@ -9,6 +9,7 @@ package com.epmet.dao.topic;
import com.epmet.dto.group.result.TopicContentResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectImgDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.dto.extract.result.TopicInfoResultDTO;
@ -127,4 +128,14 @@ public interface TopicDao {
* @date 2021.03.08 17:13
*/
List<ScreenProjectDataDTO> selectScreenProjectData(@Param("list") List<ScreenProjectDataDTO> list);
/**
* @Description 初始化指定项目的图片
* @param customerId
* @param list
* @return java.util.List<com.epmet.dto.screen.ScreenProjectImgDataDTO>
* @author wangc
* @date 2021.03.09 14:19
*/
List<ScreenProjectImgDataDTO> initNewScreenProjectImgData(@Param("customerId")String customerId,@Param("list") List<ScreenProjectDataDTO> list);
}

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java

@ -403,6 +403,7 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
if(CollectionUtils.isEmpty(list)) return;
Result<List<CostDayResultDTO>> costDays = epmetCommonServiceOpenFeignClient.costWorkDays(periodDao.selectProjectNodeStartStopTime(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())));
if(null != costDays && !CollectionUtils.isEmpty(costDays.getData())){
//key : projectId
Map<String,List<CostDayResultDTO>> projectPeriodMap
= costDays.getData().stream().collect(Collectors.groupingBy(CostDayResultDTO :: getId));
list.stream().map(o -> {

52
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java

@ -3,13 +3,18 @@ package com.epmet.service.evaluationindex.extract.toscreen.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectImgDataDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.dto.screen.ScreenProjectProcessDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.service.Issue.IssueService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectLogDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.evaluationindex.extract.toscreen.ScreenProjectSettleService;
import com.epmet.service.evaluationindex.screen.ScreenProjectDataService;
import com.epmet.service.evaluationindex.screen.ScreenProjectImgDataService;
import com.epmet.service.evaluationindex.screen.ScreenProjectProcessAttachmentService;
import com.epmet.service.evaluationindex.screen.ScreenProjectProcessService;
import com.epmet.service.project.ProjectProcessService;
import com.epmet.service.project.ProjectService;
import com.epmet.service.topic.TopicService;
@ -19,10 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -39,8 +41,6 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
@Autowired
private FactOriginProjectMainDailyService originMainService;
@Autowired
private FactOriginProjectLogDailyService logService;
@Autowired
private ProjectService projectService;
@Autowired
private ProjectProcessService processService;
@ -50,6 +50,12 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
private UserService userService;
@Autowired
private IssueService issueService;
@Autowired
private ScreenProjectProcessService targetProcessService;
@Autowired
private ScreenProjectImgDataService targetImgService;
@Autowired
private ScreenProjectProcessAttachmentService targetAttachmentService;
/**
* @Description 抽取项目数据到screen_project_*
@ -76,8 +82,10 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
about2ExceedLimit = null == ex.getAbout2ExceedLimit() ? ex.getDefaultAbout2ExceedLimit() : ex.getDefaultAbout2ExceedLimit();
}
}
}
//因为即将超期提醒时间(天)就是即将超期期限,在表中存储的是超期前多少天
//所以这里要换算成滞留日
about2ExceedLimit = exceedLimit >= about2ExceedLimit ? exceedLimit - about2ExceedLimit : exceedLimit;
List<ScreenProjectDataDTO> metaData =
originMainService.initNewScreenProjectData(param.getCustomerId(), rows , param.getDateId(),exceedLimit,about2ExceedLimit);
@ -91,9 +99,10 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
return null;
}));
}
metaData = Optional.ofNullable(topicService.getScreenProjectData(metaData)).orElse(metaData);
metaData = Optional.ofNullable(userService.getScreenProjectData(metaData)).orElse(metaData);
topicService.fillScreenProjectData(metaData);
//metaData = Optional.ofNullable(topicService.getScreenProjectData(metaData)).orElse(metaData);
userService.fillScreenProjectData(metaData);
//metaData = Optional.ofNullable(userService.getScreenProjectData(metaData)).orElse(metaData);
}
ScreenProjectDataDTO orientCase = new ScreenProjectDataDTO();
orientCase.setCustomerId(param.getCustomerId());
@ -102,7 +111,8 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
targetDbService.getPending(orientCase);
// 给metaData和orientData赋上分类信息
List<String> projectIds = metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList());
List<String> projectIds =
Optional.ofNullable(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>());
projectIds.addAll(orientData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList()));
Map<String, Set<String>> categoryMap = projectService.getProjectCategory(projectIds);
if(!CollectionUtils.isEmpty(categoryMap)){
@ -119,8 +129,24 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
//重新计算orientData的级别 有现成的方法 fact_origin_project_org_period_daily
originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit);
//TODO 更新结案时间和结案状态
//更新结案时间和结案状态
processService.updateProjectStatus(orientData,param.getDateId(),param.getCustomerId());
//TODO collect - metaData
//TODO update - orientData
if(!CollectionUtils.isEmpty(metaData)){
List<ScreenProjectImgDataDTO> imgs = topicService.buildNewScreenProjectImgData(metaData);
//TODO collect img
//TODO 先按照项目Id全删除,再insert
}
//
List<ScreenProjectProcessDTO> processes = processService.buildNewScreenProjectProcessData(param.getCustomerId(), param.getDateId(),!targetProcessService.checkIfHistoricalDataExists(param.getCustomerId()));
//TODO collect process 按照processId删除,再insert
if(!CollectionUtils.isEmpty(processes)){
List<ScreenProjectProcessAttachmentDTO> attachments = processService.buildProcessAttachmentData(processes.stream().map(ScreenProjectProcessDTO::getProcessId).distinct().collect(Collectors.toList()));
}
}
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java

@ -97,6 +97,15 @@ public interface ScreenProjectDataService extends BaseService<ScreenProjectDataE
void collect(String customerId, ScreenCollFormDTO<ScreenProjectDataInfoFormDTO> param);
/**
* @Description 内部数据入库
* @param param
* @return void
* @author wangc
* @date 2021.03.09 11:10
*/
void collect(ScreenCollFormDTO<ScreenProjectDataDTO> param);
/**
* @Description 查询是否存在客户的数据
* @param customerId

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectProcessService.java

@ -96,4 +96,6 @@ public interface ScreenProjectProcessService extends BaseService<ScreenProjectPr
void delete(String[] ids);
void collect(String customerId, ScreenCollFormDTO<ScreenProjectProcessFormDTO> param);
boolean checkIfHistoricalDataExists(String customerId);
}

17
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java

@ -219,6 +219,23 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
});
}
/**
* @Description 内部数据入库
* @param param
* @return void
* @author wangc
* @date 2021.03.09 11:10
*/
@Override
public void collect(ScreenCollFormDTO<ScreenProjectDataDTO> param) {
//内部数据抽取的逻辑是,不管dateId指定的哪一天,只要在抽取时,目标数据库中没有相应数据
//就抽取指定日期及其之前的所有数据,因此在删除时只需对指定日期删除即可,上述情况是因为
//库中无数据,范围性删除无意义,只是针对在数据库有历史数据的情况下,保证对同一天进行反
//复采集时数不会重复
}
/**
* @Description 查询是否存在客户的数据

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectProcessServiceImpl.java

@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
@ -153,4 +154,9 @@ public class ScreenProjectProcessServiceImpl extends BaseServiceImpl<ScreenProje
}
@Override
public boolean checkIfHistoricalDataExists(String customerId) {
return baseDao.countByCustomerId(customerId) > NumConstant.ZERO;
}
}

32
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java

@ -23,6 +23,8 @@ import com.epmet.dto.project.ProcessInfoDTO;
import com.epmet.dto.project.result.ProjectLatestOperationResultDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.dto.screen.ScreenProjectProcessDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.entity.project.ProjectProcessEntity;
@ -126,5 +128,33 @@ public interface ProjectProcessService extends BaseService<ProjectProcessEntity>
*/
Map<String,ProjectLatestOperationResultDTO> getLatestOperation(List<String> list, String customerId);
void updateProjectStatus(List<ScreenProjectDataDTO> list, String dateId);
/**
* @Description 查询指定日期关闭的项目 然后将状态由pending改为closed_case并加上结案时间
* @param list
* @param dateId
* @return void
* @author wangc
* @date 2021.03.09 09:54
*/
void updateProjectStatus(List<ScreenProjectDataDTO> list, String dateId,String customerId);
/**
* @Description 构建大屏项目进展数据
*
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.screen.ScreenProjectProcessDTO>
* @author wangc
* @date 2021.03.09 14:49
*/
List<ScreenProjectProcessDTO> buildNewScreenProjectProcessData(String customerId,String dateId,boolean ifRanged);
/**
* @Description 构建节点附件数据
* @param processIds
* @return java.util.List<com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO>
* @author wangc
* @date 2021.03.09 16:56
*/
List<ScreenProjectProcessAttachmentDTO> buildProcessAttachmentData(List<String> processIds);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java

@ -23,6 +23,7 @@ import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.dto.project.ProjectInfoDTO;
import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.entity.project.ProjectEntity;
import org.apache.ibatis.annotations.Param;
@ -141,4 +142,5 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @date 2021.03.08 23:46
*/
Map<String,Set<String>> getProjectCategory(List<String> projectIds);
}

71
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java

@ -21,16 +21,21 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.project.ProjectProcessDao;
import com.epmet.dto.ProjectProcessDTO;
import com.epmet.dto.form.CommonStaffIdFormDTO;
import com.epmet.dto.project.FinishOrgDTO;
import com.epmet.dto.project.ProcessInfoDTO;
import com.epmet.dto.project.ProjectOrgRelationDTO;
import com.epmet.dto.project.ProjectStaffDTO;
import com.epmet.dto.project.result.ProjectLatestOperationResultDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.dto.screen.ScreenProjectProcessDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.entity.project.ProjectProcessEntity;
import com.epmet.service.project.ProjectProcessService;
@ -39,6 +44,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
@ -127,9 +133,72 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
}
}
/**
* @Description 查询指定日期关闭的项目 然后将状态由pending改为closed_case并加上结案时间
* @param list
* @param dateId
* @return void
* @author wangc
* @date 2021.03.09 09:54
*/
@Override
public void updateProjectStatus(List<ScreenProjectDataDTO> list,String dateId) {
public void updateProjectStatus(List<ScreenProjectDataDTO> list,String dateId,String customerId) {
if(CollectionUtils.isEmpty(list)) return;
List<ProjectProcessDTO> closedInfo = baseDao.selectClosedProjectOnAppointedDay(customerId, dateId);
if(CollectionUtils.isEmpty(closedInfo)) return;
list.stream().flatMap(target -> closedInfo.stream().filter(closedCase -> StringUtils.equals(closedCase.getProjectId(),target.getProjectId())).map(
merge -> {
target.setProjectStatusCode("closed_case");
target.setCloseCaseTime(DateUtils.format(merge.getCreatedTime(),DateUtils.DATE_TIME_PATTERN));
return null;
}
));
}
/**
* @Description 构建大屏项目进展数据
*
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.screen.ScreenProjectProcessDTO>
* @author wangc
* @date 2021.03.09 14:49
*/
@Override
public List<ScreenProjectProcessDTO> buildNewScreenProjectProcessData(String customerId, String dateId, boolean ifRanged) {
List<ScreenProjectProcessDTO> processes = baseDao.selectProjectProcessAndDirection(customerId, ifRanged ? null : dateId, dateId);
if(CollectionUtils.isEmpty(processes)) return null;
processes.stream().filter(process -> StringUtils.equalsAny(process.getOperation(),
"close","return","transfer")).map(target -> {
List<ProjectStaffDTO> points = target.getPoints();
if(!CollectionUtils.isEmpty(points)){
List<String> orgIds = points.stream().map(ProjectStaffDTO::getOrgId).distinct().collect(Collectors.toList());
List<String> names = points.stream().map(ProjectStaffDTO::getDepartmentName).distinct().collect(Collectors.toList());
StringBuilder builder1 = new StringBuilder();
orgIds.forEach(orgId -> builder1.append(orgId).append(","));
StringBuilder builder2 = new StringBuilder();
names.forEach(name -> builder2.append(name).append(","));
target.setTransferDeptIds(builder1.substring(NumConstant.ZERO,builder1.length() - NumConstant.TWO));
target.setTransferDeptName(builder2.substring(NumConstant.ZERO,builder2.length() - NumConstant.TWO));
}
return null;
});
return processes;
}
/**
* @Description 构建节点附件数据
* @param processIds
* @return java.util.List<com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO>
* @author wangc
* @date 2021.03.09 16:56
*/
@Override
public List<ScreenProjectProcessAttachmentDTO> buildProcessAttachmentData(List<String> processIds) {
return baseDao.selectProcessAttachment(processIds);
}
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectCategoryDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.service.project.ProjectService;
import org.apache.commons.lang3.StringUtils;
@ -138,6 +139,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
*/
@Override
public Map<String, Set<String>> getProjectCategory(List<String> projectIds) {
if(CollectionUtils.isEmpty(projectIds)) return null;
List<ProjectCategoryDTO> categories = baseDao.selectProjectCategory(projectIds);
if(CollectionUtils.isEmpty(categories)) return null;
Map<String, Set<String>> map = new HashMap<>();
@ -149,4 +151,6 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return map;
}
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java

@ -3,12 +3,14 @@ package com.epmet.service.topic;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.result.TopicInfoResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectImgDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.stats.DimTopicStatusDTO;
import com.epmet.dto.stats.topic.result.TopicStatisticalData;
import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.dto.topic.TopicOriginInfoDTO;
import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity;
import com.epmet.entity.evaluationindex.screen.ScreenProjectImgDataEntity;
import com.epmet.util.DimIdGenerator;
import java.util.Date;
@ -93,5 +95,14 @@ public interface TopicService {
* @author wangc
* @date 2021.03.08 17:16
*/
List<ScreenProjectDataDTO> getScreenProjectData(List<ScreenProjectDataDTO> list);
List<ScreenProjectDataDTO> fillScreenProjectData(List<ScreenProjectDataDTO> list);
/**
* @Description 构建新增的大屏项目图片数据
* @param list
* @return java.util.List<com.epmet.dto.screen.ScreenProjectImgDataDTO>
* @author wangc
* @date 2021.03.09 13:59
*/
List<ScreenProjectImgDataDTO> buildNewScreenProjectImgData(List<ScreenProjectDataDTO> list);
}

23
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java

@ -8,6 +8,7 @@ import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.result.TopicInfoResultDTO;
import com.epmet.dto.group.result.TopicContentResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.screen.ScreenProjectImgDataDTO;
import com.epmet.dto.screen.form.ProjectSourceMapFormDTO;
import com.epmet.dto.stats.DimTopicStatusDTO;
import com.epmet.dto.stats.topic.*;
@ -193,7 +194,7 @@ public class TopicServiceImpl implements TopicService {
* @date 2021.03.08 17:16
*/
@Override
public List<ScreenProjectDataDTO> getScreenProjectData(List<ScreenProjectDataDTO> list) {
public List<ScreenProjectDataDTO> fillScreenProjectData(List<ScreenProjectDataDTO> list) {
List<ScreenProjectDataDTO> collection = topicDao.selectScreenProjectData(list);
if(!CollectionUtils.isEmpty(collection)){
list.stream().flatMap(target -> collection.stream().filter(
@ -209,6 +210,26 @@ public class TopicServiceImpl implements TopicService {
return collection;
}
/**
* @Description 构建新增的大屏项目图片数据
* @param list
* @return java.util.List<com.epmet.dto.screen.ScreenProjectImgDataDTO>
* @author wangc
* @date 2021.03.09 13:59
*/
@Override
public List<ScreenProjectImgDataDTO> buildNewScreenProjectImgData(List<ScreenProjectDataDTO> list) {
List<ScreenProjectImgDataDTO> imgs = topicDao.initNewScreenProjectImgData(list.get(NumConstant.ZERO).getCustomerId(), list);
if(CollectionUtils.isEmpty(imgs)) return null;
imgs.stream().flatMap(img -> list.stream().filter(project -> StringUtils.equals(img.getTopicId(),project.getTopicId())).map(
match -> {
img.setProjectId(match.getProjectId());
return null;
}
));
return imgs;
}
/**
* @Description 初始化机关-所有下级网格Map
* @param pid - 固定一个机关Id

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java

@ -84,5 +84,5 @@ public interface UserService {
* @author wangc
* @date 2021.03.08 17:16
*/
List<ScreenProjectDataDTO> getScreenProjectData(List<ScreenProjectDataDTO> list);
List<ScreenProjectDataDTO> fillScreenProjectData(List<ScreenProjectDataDTO> list);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -737,7 +737,7 @@ public class UserServiceImpl implements UserService {
* @date 2021.03.08 17:16
*/
@Override
public List<ScreenProjectDataDTO> getScreenProjectData(List<ScreenProjectDataDTO> list) {
public List<ScreenProjectDataDTO> fillScreenProjectData(List<ScreenProjectDataDTO> list) {
List<ScreenProjectDataDTO> collection = userDao.selectScreenProjectData(list);
if(!CollectionUtils.isEmpty(collection)){
list.stream().flatMap(target -> collection.stream().filter(res -> StringUtils.equals(target.getLinkName(),res.getTopicId()))

14
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -559,12 +559,14 @@
data.DEL_FLAG = '0'
AND
data.CUSTOMER_ID = #{customerId}
<if test='null != dateId and "" != dateId'>
AND data.DATE_ID = #{dateId}
</if>
<if test='(null == dateId or "" == dateId) and null != dataEndTime and "" != dataEndTime'>
AND CAST(data.DATE_ID AS SIGNED) <![CDATA[ <= ]]> CAST(#{dataEndTime} AS SIGNED)
</if>
<choose>
<when test='null != dateId and "" != dateId'>
AND data.DATE_ID = #{dateId}
</when>
<otherwise>
AND CAST(data.DATE_ID AS SIGNED) <![CDATA[ <= ]]> CAST(#{dataEndTime} AS SIGNED)
</otherwise>
</choose>
</select>
</mapper>

5
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectProcessDao.xml

@ -10,4 +10,9 @@
limit 1000
</delete>
<select id="countByCustomerId" resultType="int">
select count(id) from `screen_project_process`
where del_flag = '0' and customer_id = #{customerId}
</select>
</mapper>

97
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml

@ -311,4 +311,101 @@
</if>
</select>
<select id="selectClosedProjectOnAppointedDay" resultType="com.epmet.dto.ProjectProcessDTO">
SELECT
project_id,
created_time
FROM
`project_process`
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND operation = 'close'
AND DATE_FORMAT( CREATED_TIME, '%Y%m%d' ) = #{dateId}
</select>
<resultMap id="processDirectionMap" type="com.epmet.dto.screen.ScreenProjectProcessDTO">
<result column="customer_id" property="customerId" />
<result column="processId" property="processId" />
<result column="project_id" property="projectId" />
<result column="handlerName" property="handlerName" />
<result column="handlerId" property="handlerId" />
<result column="handlerType" property="handlerType" />
<result column="org_id_path" property="orgIdPath" />
<result column="operation" property="operation" />
<result column="public_reply" property="publicReply" />
<result column="internal_remark" property="internalRemark" />
<result column="processTime" property="processTime" />
<result column="dataEndTime" property="dataEndTime" />
<collection property="points" ofType="com.epmet.dto.project.ProjectStaffDTO">
<result column="orgId" property="orgId"/>
<result column="DEPARTMENT_NAME" property="departmentName"/>
</collection>
</resultMap>
<select id="selectProjectProcessAndDirection" resultMap="processDirectionMap">
SELECT
process.project_id,
process.customer_id,
process.id as processId,
process.DEPARTMENT_NAME as handlerName,
CASE WHEN process.DEPARTMENT_ID IS NOT NULL <![CDATA[&&]]> trim(process.DEPARTMENT_ID) <![CDATA[<>]]> '' THEN process.DEPARTMENT_ID
WHEN process.GRID_ID IS NOT NULL <![CDATA[&&]]> trim(process.GRID_ID) <![CDATA[<>]]> '' THEN process.GRID_ID
ELSE process.AGENCY_ID END as handlerId,
CASE WHEN process.DEPARTMENT_ID IS NOT NULL <![CDATA[&&]]> trim(process.DEPARTMENT_ID) <![CDATA[<>]]> '' THEN 'department'
WHEN process.GRID_ID IS NOT NULL <![CDATA[&&]]> trim(process.GRID_ID) <![CDATA[<>]]> '' THEN 'grid'
ELSE 'agency' END as handlerType,
process.ORG_ID_PATH,
process.OPERATION,
process.PUBLIC_REPLY,
process.INTERNAL_REMARK,
process.CREATED_TIME as processTime,
#{dataEndTime} as dataEndTime
staff.DEPARTMENT_NAME,
CASE WHEN staff.DEPARTMENT_ID IS NOT NULL <![CDATA[&&]]> trim(staff.DEPARTMENT_ID) <![CDATA[<>]]> '' THEN staff.DEPARTMENT_ID
WHEN staff.GRID_ID IS NOT NULL <![CDATA[&&]]> trim(staff.GRID_ID) <![CDATA[<>]]> '' THEN staff.GRID_ID
ELSE staff.ORG_ID END as orgId
FROM `project_process` process
left join `project_staff` staff on staff.PROCESS_ID = process.ID and staff.DEL_FLAG = '0'
where process.del_flag = '0' and process.customer_id = #{customerId}
<choose>
<when test='null != dateId and "" != dateId'>
AND DATE_FORMAT(process.created_time, '%Y%m%d') = #{dateId}
</when>
<otherwise>
AND CAST(DATE_FORMAT(process.created_time, '%Y%m%d') AS SIGNED) <![CDATA[ <= ]]> CAST(#{dataEndTime} AS SIGNED)
</otherwise>
</choose>
</select>
<select id="selectProcessAttachment" resultType="com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO">
SELECT
ID AS attachementId,
CUSTOMER_ID,
PROJECT_ID,
PROCESS_ID,
FILE_PLACE,
FILE_NAME,
ATTACHMENT_NAME,
ATTACHMENT_SIZE,
ATTACHMENT_FORMAT,
ATTACHMENT_TYPE,
ATTACHMENT_URL,
SORT,
DURATION
FROM
`project_process_attachment`
WHERE
del_flag = '0'
AND ( ( FILE_PLACE = 'public' AND STATUS IN ( 'auto_passed', 'approved' ) ) OR FILE_PLACE = 'internal' )
<foreach collection="list" item="processId" open="AND ( " separator=" OR " close=" )">
PROCESS_ID = #{processId}
</foreach>
</select>
</mapper>

16
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml

@ -256,4 +256,20 @@
ID = #{project.topicId}
</foreach>
</select>
<select id="initNewScreenProjectImgData" resultType="com.epmet.dto.screen.ScreenProjectImgDataDTO">
SELECT
#{customerId} as customerId,
ATTACHMENT_URL AS projectImgUrl,
SORT ,
TOPIC_ID
FROM
`resi_topic_attachment`
WHERE
del_flag = '0'
AND ATTACHMENT_TYPE = 'image'
<foreach collection="list" item="project" open="AND ( " separator=" OR " close=" )">
TOPIC_ID = #{project.topicId}
</foreach>
</select>
</mapper>
Loading…
Cancel
Save