Browse Source

Merge remote-tracking branch 'remotes/origin/dev_bugfix_ljj' into dev

master
jianjun 4 years ago
parent
commit
c31f526c0b
  1. 112
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventReportOrgDTO.java
  2. 12
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java
  3. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java
  4. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java
  5. 66
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  6. 16
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  7. 19
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java
  8. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java
  9. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java
  10. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  11. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupAgencyDailyService.java
  12. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupGridDailyService.java
  13. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupAgencyDailyServiceImpl.java
  14. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupGridDailyServiceImpl.java
  15. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml
  16. 5
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java
  17. 1
      epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml
  18. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  19. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  20. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  21. 0
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.19__project_work_minutes.sql
  22. 22
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

112
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventReportOrgDTO.java

@ -0,0 +1,112 @@
/**
* 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.dataaggre.dto.govproject;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 事件相关组织表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-08-03
*/
@Data
public class ResiEventReportOrgDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 事件id
*/
private String resiEventId;
/**
* 报给
网格grid
社区community
街道:street
区县级: district
市级: city
省级:province
*/
private String orgType;
/**
* 报给的组织或者网格id
*/
private String orgId;
/**
* org_id的上级组织idorg_id是跟组织此列为0
*/
private String orgPid;
/**
* org_id的所有上级组织idorg_id是跟组织此列为0
*/
private String orgPids;
/**
* 含义已读read未读un_read组织下的工作人员从待处理=>处理中点击查看详情前更新为已读
*/
private String orgRead;
/**
* (1)含义1:展示红点0不展示(2)注意发布事件插入数据时为1(3)何时更新人大代表回复or报事人回复or工作人员回复立项办结更新为1
*/
private Boolean redDot;
/**
* 删除标识:0.未删除 1.已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

12
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java

@ -32,12 +32,14 @@ public class CategoryProjectResultDTO implements Serializable {
private List<String> categoryCodes = new ArrayList<>();
//一级分类名称集合
private List<String> categoryNames = new ArrayList<>();
//来源:议题issue 项目立项:agency 事件:resi_event【控制电机查看时里边三个按钮的显示】
//网格Id
private String gridId;
//来源:议题issue 项目立项:agency 事件:resi_event【控制点击查看时里边三个按钮的显示】
private String origin;
//网格Id[上报给组织的事件、直接立项的项目此值为空]
private String gridId = "";
//网格名[上报给组织的事件、直接立项的项目此值为空]
private String gridName = "";
//来源Id
private String originId;
//所属组织名[来源楼院小组的项目所属组织显示来源的网格名,直接立项的显示立项的组织名,来源事件的显示上报给的网格或组织名]
private String orgName = "";
//状态:待处理 pending,已结案closed
private String status;
//标题

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java

@ -102,9 +102,9 @@ public class GovProjectController {
* @author sun
*/
@PostMapping("categoryprojectlist")
public Result<CategoryProjectResultDTO> categoryProjectList(@LoginUser TokenDto tokenDto, @RequestBody CategoryProjectFormDTO formDTO) {
public Result<CategoryProjectResultDTO> categoryProjectList(@RequestBody CategoryProjectFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, CategoryProjectFormDTO.Category.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCustomerId("45687aa479955f9d06204d415238f7cc");
return new Result<CategoryProjectResultDTO>().ok(govProjectService.categoryProjectList(formDTO));
}

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java

@ -22,6 +22,7 @@ import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventReportOrgDTO;
import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.CategoryProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
@ -115,4 +116,9 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
@Param("userIds") List<String> userIds,
@Param("origin") String origin);
/**
* @Description 事件项目上报组织信息
* @author sun
*/
List<ResiEventReportOrgDTO> getEventOrgList(@Param("eventIds") List<String> eventIds);
}

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

@ -6,7 +6,10 @@ 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.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
@ -22,6 +25,7 @@ import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventDTO;
import com.epmet.dataaggre.dto.govproject.ResiEventReportOrgDTO;
import com.epmet.dataaggre.dto.govproject.form.*;
import com.epmet.dataaggre.dto.govproject.result.*;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
@ -46,6 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -383,23 +388,66 @@ public class GovProjectServiceImpl implements GovProjectService {
List<String> projectIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getProjectId).collect(Collectors.toList());
List<CategoryProjectResultDTO.Project> list = projectDao.getCategoryList(projectIds);
//4.查询网格信息【楼院小组类项目、上报事件且上报给网格的项目才存在网格Id】
List<String> gridIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getGridId).collect(Collectors.toList());
gridIds = gridIds.stream().distinct().collect(Collectors.toList());
List<GridsInfoListResultDTO> gridList = govOrgService.gridListByIds(gridIds);
//4.查询来源事件的项目上报的组织信息
List<String> eventIds = result.getList().stream().filter(re -> "resi_event".equals(re.getOrigin())).map(m -> m.getOriginId()).collect(Collectors.toList());
List<ResiEventReportOrgDTO> eventOrgList = projectDao.getEventOrgList(eventIds);
Map<String, ResiEventReportOrgDTO> eventMap = eventOrgList.stream().collect(Collectors.toMap(ResiEventReportOrgDTO::getResiEventId, Function.identity()));
//5.查询来源议题、事件的项目居民端创建人userId
List<ResiEventDTO> eventUser = projectDao.getEventList(projectIds);
List<ProjectRelatedPersonnelDTO> topicUser = projectDao.getTopicUser(projectIds);
//5.封装数据
//组织或网格id->组织或网格名称
Map<String, String> map = new HashMap<>();
result.getList().forEach(re -> {
//项目涉及网格信息
gridList.forEach(g -> {
if (StringUtils.isNotBlank(re.getGridId()) && re.getGridId().equals(g.getGridId())) {
re.setGridName(g.getName());
//所属组织
if ("issue".equals(re.getOrigin())) {
if (map.containsKey(re.getGridId())) {
re.setOrgName(map.get(re.getGridId()));
} else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(re.getGridId());
if (gridInfo != null) {
re.setOrgName(gridInfo.getGridName());
map.put(re.getGridId(), gridInfo.getGridName());
}
}
});
} else if ("agency".equals(re.getOrigin())) {
if (map.containsKey(re.getAgencyId())) {
re.setOrgName(map.get(re.getAgencyId()));
} else {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(re.getAgencyId());
if (agencyInfo != null) {
re.setOrgName(agencyInfo.getOrganizationName());
map.put(re.getAgencyId(), agencyInfo.getOrganizationName());
}
}
} else if ("resi_event".equals(re.getOrigin())) {
if (eventMap.containsKey(re.getOriginId())) {
if ("grid".equals(eventMap.get(re.getOriginId()).getOrgType())) {
if (map.containsKey(re.getGridId())) {
re.setOrgName(map.get(re.getGridId()));
} else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(re.getGridId());
if (gridInfo != null) {
re.setOrgName(gridInfo.getGridName());
map.put(re.getGridId(), gridInfo.getGridName());
}
}
} else {
if (map.containsKey(re.getAgencyId())) {
re.setOrgName(map.get(re.getAgencyId()));
} else {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(re.getAgencyId());
if (agencyInfo != null) {
re.setOrgName(agencyInfo.getOrganizationName());
map.put(re.getAgencyId(), agencyInfo.getOrganizationName());
}
}
}
}
}
//项目涉及分类信息【一个项目涉及多个一级分类】
//一级分类Id
List<String> caId = new ArrayList<>();

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

@ -267,6 +267,7 @@
p.agency_id agencyId,
p.id projectId,
p.origin origin,
p.origin_id originId,
IFNULL(pc.grid_id, '') gridId,
p.`status` status,
p.title title,
@ -380,4 +381,19 @@
ORDER BY p.created_time DESC
</select>
<select id="getEventOrgList" resultType="com.epmet.dataaggre.dto.govproject.ResiEventReportOrgDTO">
SELECT
customer_id,
resi_event_id,
org_type,
org_id
FROM
resi_event_report_org
WHERE
del_flag = '0'
<foreach collection="eventIds" item="eventId" open="AND resi_event_id IN (" separator="," close=")">
#{eventId}
</foreach>
</select>
</mapper>

19
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java

@ -23,6 +23,7 @@ import com.epmet.service.stats.*;
import com.epmet.util.DimIdGenerator;
import com.epmet.util.ModuleConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -89,10 +90,15 @@ public class StatsGroupServiceImpl implements StatsGroupService {
DimIdGenerator.DimIdBean dimIdBean = this.getDimIdBean(formDTO);
if (customerIds.size() != NumConstant.ZERO) {
customerIds.forEach(customerId -> {
Boolean status = true;
try {
List<GridIdListByCustomerResultDTO> gridsInfo = customerGridService.getCustomerGridIdList(customerId, dimIdBean.getDateId());
List<GroupGridDailyResultDTO> resultDTOS = groupDataService.groupGridDaily(customerId, dimIdBean, gridsInfo);
factGroupGridDailyService.statisticsGroupGridDaily(resultDTOS, customerId);
List<List<GridIdListByCustomerResultDTO>> partition = ListUtils.partition(gridsInfo, NumConstant.ONE_HUNDRED);
for (List<GridIdListByCustomerResultDTO> p : partition) {
List<GroupGridDailyResultDTO> resultDTOS = groupDataService.groupGridDaily(customerId, dimIdBean, p);
factGroupGridDailyService.statisticsGroupGridDaily(resultDTOS, customerId,status);
status = false;
}
} catch (Exception e) {
log.error(String.format(GroupConstant.STATS_FAILED_GRID_DAILY, customerId, LocalDate.now(), e));
}
@ -129,10 +135,15 @@ public class StatsGroupServiceImpl implements StatsGroupService {
if (customerIds.size() != NumConstant.ZERO) {
DimIdGenerator.DimIdBean dimIdBean = this.getDimIdBean(formDTO);
customerIds.forEach(customerId -> {
Boolean status = true;
try {
List<DimAgencyDTO> customerAgencyInfos = dimAgencyService.getAgencyInfoByCustomerId(customerId);
List<AgencyGroupDailyResultDTO> agencyGroupDaily = this.getAgencyGroupDaily(customerAgencyInfos, dimIdBean, customerId);
factGroupAgencyDailyService.insertGroupAgencyDaily(agencyGroupDaily, customerId);
List<List<DimAgencyDTO>> partition = ListUtils.partition(customerAgencyInfos, NumConstant.ONE_HUNDRED);
for (List<DimAgencyDTO> p : partition) {
List<AgencyGroupDailyResultDTO> agencyGroupDaily = this.getAgencyGroupDaily(p, dimIdBean, customerId);
factGroupAgencyDailyService.insertGroupAgencyDaily(agencyGroupDaily, customerId,status);
status = false;
}
} catch (Exception e) {
log.error(String.format(GroupConstant.STATS_FAILED_AGENCY_DAILY, customerId, LocalDate.now(), e));
}

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java

@ -187,11 +187,13 @@ public class StatsProjectServiceImpl implements StatsProjectService {
projectEntity.setStatus(ProjectConstant.CLOSED);
projectEntity.setPageSize(NumConstant.ONE_THOUSAND);
int pageNo = NumConstant.ONE;
int size = NumConstant.ZERO;
List<ProjectProcessEntity> processList = new ArrayList<>();
do {
//1.一千条一循环查询节点数据,封装每个组织对应数据
projectEntity.setPageNo(pageNo);
processList = projectProcessService.getProcessList(projectEntity);
size = processList.size();
pageNo++;
//遍历删除项目节点表查询的无效数据
if (list.size() > NumConstant.ZERO) {
@ -245,11 +247,11 @@ public class StatsProjectServiceImpl implements StatsProjectService {
if (mapList.containsKey(agency.getId())) {
entity = mapList.get(agency.getId());
entity.setProjectTotal(entity.getProjectTotal() + projectTotal.intValue());
entity.setPendingTotal(entity.getPendingTotal() + projectTotal.intValue() - closedTotal.intValue());
entity.setPendingTotal(entity.getProjectTotal() - closedTotal.intValue());
entity.setClosedTotal(entity.getClosedTotal() + closedTotal.intValue());
if (projectTotal.intValue() > NumConstant.ZERO) {
entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) projectTotal.intValue())));
entity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue())));
entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) entity.getProjectTotal())));
entity.setClosedRatio(new BigDecimal(numberFormat.format((float) entity.getClosedTotal() / (float) entity.getProjectTotal())));
}
entity.setProjectIncr(entity.getProjectIncr() + projectIncr.intValue());
entity.setPendingIncr(entity.getPendingIncr() + projectIncr.intValue());
@ -267,8 +269,8 @@ public class StatsProjectServiceImpl implements StatsProjectService {
entity.setPendingTotal(projectTotal.intValue() - closedTotal.intValue());
entity.setClosedTotal(closedTotal.intValue());
if (projectTotal.intValue() > NumConstant.ZERO) {
entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) projectTotal.intValue())));
entity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue())));
entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) entity.getProjectTotal())));
entity.setClosedRatio(new BigDecimal(numberFormat.format((float) entity.getClosedTotal() / (float) entity.getProjectTotal())));
}
entity.setProjectIncr(projectIncr.intValue());
entity.setPendingIncr(projectIncr.intValue());
@ -276,7 +278,7 @@ public class StatsProjectServiceImpl implements StatsProjectService {
}
mapList.put(agency.getId(), entity);
}
} while (!CollectionUtil.isEmpty(processList) && processList.size() == NumConstant.ONE_THOUSAND);
} while (size == NumConstant.ONE_THOUSAND);
//二、再分页查询项目表数据,封装每个组织的已结案已解决总数、已结案未解决总数;日增量中已结案已解决总数、已结案未解决总数
int num = NumConstant.ONE;
@ -285,6 +287,7 @@ public class StatsProjectServiceImpl implements StatsProjectService {
//3.一千条一循环查询项目数据,封装每个组织对应数据
projectEntity.setPageNo(num);
projectList = projectService.getProjectList(projectEntity);
size = projectList.size();
num++;
//遍历删除项目主表查询的无效数据
if (list.size() > NumConstant.ZERO) {
@ -343,8 +346,8 @@ public class StatsProjectServiceImpl implements StatsProjectService {
entity.setResolvedTotal(entity.getResolvedTotal() + resolvedTotal.intValue());
entity.setUnresolvedTotal(entity.getUnresolvedTotal() + unResolvedTotal.intValue());
if (entity.getClosedTotal() > NumConstant.ZERO) {
entity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) entity.getClosedTotal())));
entity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) entity.getClosedTotal())));
entity.setResolvedRatio(new BigDecimal(numberFormat.format((float) entity.getResolvedTotal() / (float) entity.getClosedTotal())));
entity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) entity.getUnresolvedTotal() / (float) entity.getClosedTotal())));
}
entity.setResolvedIncr(entity.getResolvedIncr() + resolvedIncr.intValue());
entity.setUnresolvedIncr(entity.getUnresolvedIncr() + unResolvedIncr.intValue());
@ -371,7 +374,7 @@ public class StatsProjectServiceImpl implements StatsProjectService {
}
mapList.put(agency.getId(), entity);
}
} while (!CollectionUtil.isEmpty(projectList) && projectList.size() == NumConstant.ONE_THOUSAND);
} while (size == NumConstant.ONE_THOUSAND);
List<FactAgencyProjectDailyEntity> projectDateEntityList = new ArrayList<>(mapList.values());
//三、批量保存数据,先删后增

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

@ -34,6 +34,7 @@ import com.epmet.dto.screen.ScreenProjectProcessDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.entity.project.ProjectProcessEntity;
import com.epmet.service.project.ProjectProcessService;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -62,6 +63,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
**/
@Override
public List<ProjectProcessEntity> getProcessList(ProjectEntity projectEntity) {
PageHelper.startPage(projectEntity.getPageNo(), projectEntity.getPageSize());
return baseDao.selectProcessList(projectEntity);
}

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

@ -28,6 +28,7 @@ import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.service.project.ProjectService;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -54,6 +55,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
**/
@Override
public List<ProjectEntity> getProjectList(ProjectEntity projectEntity) {
PageHelper.startPage(projectEntity.getPageNo(), projectEntity.getPageSize());
return baseDao.selectProjectList(projectEntity);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupAgencyDailyService.java

@ -101,7 +101,7 @@ public interface FactGroupAgencyDailyService extends BaseService<FactGroupAgency
* @param agencyList
* @author zxc
*/
void insertGroupAgencyDaily(List<AgencyGroupDailyResultDTO> agencyList,String customerId);
void insertGroupAgencyDaily(List<AgencyGroupDailyResultDTO> agencyList,String customerId,Boolean status);
/**
* @param

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupGridDailyService.java

@ -99,5 +99,5 @@ public interface FactGroupGridDailyService extends BaseService<FactGroupGridDail
* @param formDto
* @author zxc
*/
void statisticsGroupGridDaily(List<GroupGridDailyResultDTO> formDto,String customerId);
void statisticsGroupGridDaily(List<GroupGridDailyResultDTO> formDto,String customerId,Boolean status);
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupAgencyDailyServiceImpl.java

@ -113,12 +113,15 @@ public class FactGroupAgencyDailyServiceImpl extends BaseServiceImpl<FactGroupAg
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void insertGroupAgencyDaily(List<AgencyGroupDailyResultDTO> agencyList,String customerId) {
public void insertGroupAgencyDaily(List<AgencyGroupDailyResultDTO> agencyList,String customerId,Boolean status) {
if (!CollectionUtils.isEmpty(agencyList)){
Integer delNum;
do {
delNum = baseDao.deleteInsertAgencyDailyByDateId(agencyList.get(NumConstant.ZERO).getDateId(),customerId);
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
// true 为当前客户第一回进入,需要删除历史数据
if (status){
Integer delNum;
do {
delNum = baseDao.deleteInsertAgencyDailyByDateId(agencyList.get(NumConstant.ZERO).getDateId(),customerId);
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
}
List<List<AgencyGroupDailyResultDTO>> partition = ListUtils.partition(agencyList, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertGroupAgencyDaily(p);

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactGroupGridDailyServiceImpl.java

@ -115,15 +115,18 @@ public class FactGroupGridDailyServiceImpl extends BaseServiceImpl<FactGroupGrid
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void statisticsGroupGridDaily(List<GroupGridDailyResultDTO> formDto,String customerId) {
public void statisticsGroupGridDaily(List<GroupGridDailyResultDTO> formDto,String customerId,Boolean status) {
if (CollectionUtils.isEmpty(formDto)){
return;
}
String dateId = formDto.get(NumConstant.ZERO).getDateId();
Integer delNum;
do {
delNum = baseDao.deleteInsertDateId(dateId,customerId);
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
// true 为当前客户第一回进入,需要删除历史数据
if (status){
Integer delNum;
do {
delNum = baseDao.deleteInsertDateId(dateId,customerId);
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
}
List<List<GroupGridDailyResultDTO>> partition = ListUtils.partition(formDto, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertGroupGridDaily(p);

5
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml

@ -5,7 +5,10 @@
<select id="selectProjectList" resultType="com.epmet.entity.project.ProjectEntity">
SELECT
*
id,
customer_id,
agency_id,
closed_status
FROM
project
WHERE

5
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java

@ -3,14 +3,13 @@ package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.dao.CalenderDao;
import com.epmet.dto.form.CostDayFormDTO;
import com.epmet.dto.form.TimestampIntervalFormDTO;
import com.epmet.dto.form.WorkDayFormDTO;
import com.epmet.dto.result.CostDayResultDTO;
import com.epmet.dto.form.WorkMinuteFormDTO;
import com.epmet.dto.result.CostDayResultDTO;
import com.epmet.dto.result.WorkDayResultDTO;
import com.epmet.entity.CalenderEntity;
import com.epmet.service.WorkDayService;
@ -271,7 +270,7 @@ public class WorkDayServiceImpl implements WorkDayService {
LocalDateTime initialTime = LocalDateTime.ofInstant(right.toInstant(), ZoneId.systemDefault())
.withHour(NumConstant.ZERO).withMinute(NumConstant.ZERO).withSecond(NumConstant.ZERO).withNano(NumConstant.ZERO);
//ChronoUnit日期枚举类,between方法计算两个时间对象之间的时间量
costMin += ChronoUnit.SECONDS.between(localDateTime, initialTime)/NumConstant.SIXTY;
costMin += ChronoUnit.SECONDS.between(initialTime, localDateTime)/NumConstant.SIXTY;
}
if(NumConstant.TWO == list.size()) {
return costMin;

1
epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml

@ -60,6 +60,7 @@
DEL_FLAG = '0'
AND QUERY_DATE BETWEEN #{begin}
AND #{end}
order by query_date asc
</select>
</mapper>

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

@ -272,4 +272,15 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
* @Date 2022/1/4 16:45
*/
List<ApprovaledListResultDTO> getGridMemberProjectList(@Param("agencyId") String agencyId, @Param("staffId") String staffId, @Param("startTime") String startTime, @Param("endTime") String endTime);
/**
* 获取项目列表用来计算项目耗时
* @Param customerId
* @Param projectId
* @Param status
* @Return {@link List< ProjectEntity>}
* @Author zhaoqifeng
* @Date 2022/1/12 17:05
*/
List<ProjectEntity> getProjectListForWorkMinutes(@Param("customerId")String customerId, @Param("projectId")String projectId, @Param("status")String status);
}

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

@ -359,7 +359,7 @@ public interface ProjectService extends BaseService<ProjectEntity> {
TopicResearchAnalysisResDTO topicResearchAnalysis(TopicResearchAnalysisFormDTO formDTO);
/**
* 计算项目耗时定时任务
* 计算项目耗时定时任务 1小时一次
* @Param dto
* @Return
* @Author zhaoqifeng

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

@ -18,7 +18,6 @@
package com.epmet.service.impl;
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.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
@ -59,6 +58,7 @@ import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.base.Joiner;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@ -3079,11 +3079,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
pageNo = pageNo + NumConstant.ONE;
PageHelper.startPage(pageNo, PageSize);
//获取项目列表
LambdaQueryWrapper<ProjectEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(dto.getCustomerId()), ProjectEntity::getCustomerId, dto.getCustomerId());
wrapper.eq(StringUtils.isNotBlank(dto.getId()), ProjectEntity::getId, dto.getId());
wrapper.eq(StringUtils.isNotBlank(dto.getStatus()), ProjectEntity::getStatus, dto.getStatus());
list = baseDao.selectList(wrapper);
list = baseDao.getProjectListForWorkMinutes(dto.getCustomerId(), dto.getId(), dto.getStatus());;
if (CollectionUtils.isNotEmpty(list)) {
//提取项目ID,创建时间,更新时间
List<TimestampIntervalFormDTO> intervalList = list.stream().map(item -> {

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

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

@ -506,4 +506,26 @@
</if>
ORDER BY CREATED_TIME DESC
</select>
<select id="getProjectListForWorkMinutes" resultType="com.epmet.entity.ProjectEntity">
SELECT
a.ID,
a.`STATUS`,
a.CREATED_TIME,
b.CREATED_TIME AS "updatedTime"
FROM
project a
LEFT JOIN project_process b ON a.ID = b.PROJECT_ID
AND b.OPERATION = 'close'
WHERE
a.DEL_FLAG = '0'
<if test="customerId != null and customerId != ''">
AND a.CUSTOMER_ID = #{customerId}
</if>
<if test="projectId != null and projectId != ''">
AND a.ID = #{projectId}
</if>
<if test="status != null and status != ''">
AND a.`STATUS` = #{status}
</if>
</select>
</mapper>
Loading…
Cancel
Save