diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java
new file mode 100644
index 0000000000..1b2d32c2cc
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.epmet.commons.tools.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.filter.RequestContextFilter;
+import org.springframework.web.servlet.DispatcherServlet;
+
+import javax.annotation.PostConstruct;
+
+
+/**
+ * DESC:设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+@Configuration
+public class ThreadDispatcherConfig {
+
+ @Autowired
+ RequestContextFilter requestContextFilter;
+ @Autowired
+ DispatcherServlet dispatcherServlet;
+
+ @PostConstruct
+ public void init() {
+ // 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。
+ requestContextFilter.setThreadContextInheritable(true);
+ dispatcherServlet.setThreadContextInheritable(true);
+ }
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
index 400e3893e4..77875d5415 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
@@ -171,4 +171,7 @@ public interface Constant {
* 被禁用标识
* */
String DISABLE = "disable";
+
+ String OPITON_SOURCE_REMOTE = "remote";
+ String OPITON_SOURCE_LOCAL = "local";
}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
index 67f467f63c..62d9fef763 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
@@ -107,4 +107,7 @@ public interface StrConstant {
* 积分规则修改的头
*/
String POINT_CHANGE_HEAD = "修改了%s规则,";
+
+ String YES = "是";
+ String NO = "否";
}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java
index 5bf8a82715..ec7806a620 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java
@@ -10,14 +10,9 @@ package com.epmet.commons.tools.feign;
import feign.Logger;
import feign.RequestInterceptor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.web.filter.RequestContextFilter;
-import org.springframework.web.servlet.DispatcherServlet;
-
-import javax.annotation.PostConstruct;
/**
@@ -29,10 +24,6 @@ import javax.annotation.PostConstruct;
*/
@Configuration
public class FeignConfig {
- @Autowired
- RequestContextFilter requestContextFilter;
- @Autowired
- DispatcherServlet dispatcherServlet;
@Bean
@ConditionalOnMissingBean
@@ -46,10 +37,5 @@ public class FeignConfig {
return Logger.Level.BASIC;//控制台会输出debug日志
}
- @PostConstruct
- public void init() {
- // 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。
- requestContextFilter.setThreadContextInheritable(true);
- dispatcherServlet.setThreadContextInheritable(true);
- }
+
}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java
new file mode 100644
index 0000000000..df4536366b
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.epmet.commons.tools.validator.group;
+
+/**
+ * 查询 Group
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+public interface QueryGroup {
+
+}
diff --git a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java
index a1630c821e..064b59610e 100644
--- a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java
+++ b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java
@@ -10,6 +10,7 @@ package com.epmet;
import com.epmet.commons.tools.aspect.ServletExceptionHandler;
import com.epmet.commons.tools.config.RedissonConfig;
+import com.epmet.commons.tools.config.ThreadDispatcherConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@@ -27,7 +28,7 @@ import org.springframework.context.annotation.FilterType;
@EnableDiscoveryClient
@EnableFeignClients
//@ServletComponentScan
-@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ServletExceptionHandler.class}))
+@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ThreadDispatcherConfig.class, ServletExceptionHandler.class}))
public class GatewayApplication {
public static void main(String[] args) {
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
index e736309945..f293af93d0 100644
--- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
@@ -44,6 +44,10 @@ public class CustomerDataManageResultDTO {
private Integer patrolCount = 0;
//巡查时长
private String patrolDuration;
+ /**
+ * 例行工作次数
+ */
+ private Integer patrolRoutineWorkTimes = 0;
//未转换前的巡查时长
private Integer patrolDurationInteger = 0;
//数据对应dateId
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
index 49c101c018..e1fe7554ec 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
@@ -40,6 +40,7 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao userIds,
@Param("startDateId") String startDateID,
@Param("endDateID") String endDateID);
+
+ /**
+ * desc: 获取例行工作次数
+ * @param patrolForm
+ * @return
+ */
+ List getRoutineWorkCount(CustomerDataManageFormDTO patrolForm);
}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java
index 821a11426f..65f55557fe 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java
@@ -47,6 +47,9 @@ public class CustomerDataManageExcel {
@Excel(name = "巡查时长")
private String patrolDuration;
+ @Excel(name = "例行工作次数")
+ private Integer patrolRoutineWorkTimes;
+
/**
* 未转换前的巡查时长
*/
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
index 5492c22acd..527b6a484b 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
@@ -1,61 +1,61 @@
package com.epmet.dataaggre.service.datastats.impl;
import com.alibaba.fastjson.JSON;
-import com.epmet.commons.dynamic.datasource.annotation.DataSource;
-import com.epmet.commons.tools.constant.NumConstant;
-import com.epmet.commons.tools.enums.OrgLevelEnum;
+ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+ import com.epmet.commons.tools.constant.NumConstant;
+ import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.RenException;
-import com.epmet.commons.tools.feign.ResultDataResolver;
-import com.epmet.commons.tools.utils.ConvertUtils;
-import com.epmet.commons.tools.utils.DateUtils;
-import com.epmet.commons.tools.utils.ExcelUtils;
-import com.epmet.dataaggre.constant.DataSourceConstant;
-import com.epmet.dataaggre.constant.OrgConstant;
-import com.epmet.dataaggre.dao.datastats.DataStatsDao;
-import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
-import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
-import com.epmet.dataaggre.dto.datastats.form.*;
-import com.epmet.dataaggre.dto.datastats.result.*;
+ import com.epmet.commons.tools.feign.ResultDataResolver;
+ import com.epmet.commons.tools.utils.ConvertUtils;
+ import com.epmet.commons.tools.utils.DateUtils;
+ import com.epmet.commons.tools.utils.ExcelUtils;
+ import com.epmet.dataaggre.constant.DataSourceConstant;
+ import com.epmet.dataaggre.constant.OrgConstant;
+ import com.epmet.dataaggre.dao.datastats.DataStatsDao;
+ import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
+ import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
+ import com.epmet.dataaggre.dto.datastats.form.*;
+ import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
-import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
-import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
-import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
-import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
-import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
-import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
+ import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
+ import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
+ import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
+ import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
+ import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
+ import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
-import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
-import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
-import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
-import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
-import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
-import com.epmet.dataaggre.excel.CustomerDataManageExcel;
-import com.epmet.dataaggre.service.datastats.DataStatsService;
-import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
-import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
-import com.epmet.dataaggre.service.govorg.GovOrgService;
-import com.epmet.dataaggre.service.opercrm.CustomerRelation;
-import com.github.pagehelper.PageHelper;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
+ import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
+ import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
+ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
+ import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
+ import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
+ import com.epmet.dataaggre.excel.CustomerDataManageExcel;
+ import com.epmet.dataaggre.service.datastats.DataStatsService;
+ import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
+ import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
+ import com.epmet.dataaggre.service.govorg.GovOrgService;
+ import com.epmet.dataaggre.service.opercrm.CustomerRelation;
+ import com.github.pagehelper.PageHelper;
+ import lombok.extern.slf4j.Slf4j;
+ import org.apache.commons.collections4.CollectionUtils;
+ import org.apache.commons.lang3.StringUtils;
+ import org.springframework.beans.factory.annotation.Autowired;
+ import org.springframework.stereotype.Service;
+
+ import javax.servlet.http.HttpServletResponse;
+ import java.math.BigDecimal;
+ import java.math.RoundingMode;
+ import java.text.NumberFormat;
+ import java.text.ParseException;
+ import java.text.SimpleDateFormat;
+ import java.util.*;
+ import java.util.concurrent.atomic.AtomicInteger;
+ import java.util.concurrent.atomic.AtomicReference;
+ import java.util.stream.Collectors;
/**
* @Author sun
@@ -1386,7 +1386,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
return o2.getGroupSelfGovernRatio().compareTo(o1.getGroupSelfGovernRatio());
} else if ("grid".equals(formDTO.getType())) {
return o2.getGridSelfGovernRatio().compareTo(o1.getGridSelfGovernRatio());
- } else if ("community".equals(formDTO.getType())) {
+ } else if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getType())) {
return o2.getCommunityResolvedRatio().compareTo(o1.getCommunityResolvedRatio());
} else if ("department".equals(formDTO.getType())) {
return o2.getDistrictDeptResolvedRatio().compareTo(o1.getDistrictDeptResolvedRatio());
@@ -1679,7 +1679,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
- if ("community".equals(formDTO.getAgencyLevel())) {
+ if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
@@ -1755,7 +1755,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
//根据组织级别判断查询直属下级组织或网格数据
//2.直属网格
- if ("community".equals(formDTO.getAgencyLevel())) {
+ if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())) {
//2-1.查询组织直属网格列表【网格维度】
List gridList = indexService.getSubGridList(formDTO.getAgencyId());
if (gridList.size() < NumConstant.ONE) {
@@ -1888,6 +1888,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
c.setProjectCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getProjectCount).sum());
c.setClosedProjectCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getClosedProjectCount).sum());
c.setPatrolPeopleCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolPeopleCount).sum());
+ c.setPatrolRoutineWorkTimes(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolRoutineWorkTimes).sum());
c.setPatrolCount(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolCount).sum());
c.setPatrolDurationInteger(result.stream().mapToInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolDurationInteger).sum());
c.setPatrolDuration(getHm(c.getPatrolDurationInteger()));
@@ -2002,6 +2003,8 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
patrolForm.setStartTime(startTimeForm);
List patrolEnd = statsStaffPatrolRecordDailyService.patrolList(patrolForm);
+ //获取例行工作次数
+ List workCountList = statsStaffPatrolRecordDailyService.getPatrolRecordCount(patrolForm);
//NumConstant.FOUR.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
HashMap uStartMap = new HashMap<>();
HashMap gStartMap = new HashMap<>();
@@ -2023,50 +2026,50 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
}
//5.封装数据
- agencyGrid.getAgencyGridList().forEach(org -> {
+ for (ScreenAgencyOrGridListDTO.AgencyGrid org : agencyGrid.getAgencyGridList()) {
CustomerDataManageResultDTO.CustomerDataManage dto = new CustomerDataManageResultDTO.CustomerDataManage();
dto.setOrgId(org.getOrgId());
dto.setOrgName(org.getOrgName());
int user = NumConstant.ZERO;
int resi = NumConstant.ZERO;
int part = NumConstant.ZERO;
- if(uEndMap.containsKey(org.getOrgId())){
+ if (uEndMap.containsKey(org.getOrgId())) {
user = uEndMap.get(org.getOrgId()).getUserCount();
resi = uEndMap.get(org.getOrgId()).getResidentCount();
part = uEndMap.get(org.getOrgId()).getPartyMemberCount();
- if ("Interval".equals(formDTO.getType())&&uStartMap.containsKey(org.getOrgId())) {
+ if ("Interval".equals(formDTO.getType()) && uStartMap.containsKey(org.getOrgId())) {
user = user - uStartMap.get(org.getOrgId()).getUserCount();
resi = resi - uStartMap.get(org.getOrgId()).getResidentCount();
part = part - uStartMap.get(org.getOrgId()).getPartyMemberCount();
}
}
int group = NumConstant.ZERO;
- if(gEndMap.containsKey(org.getOrgId())){
+ if (gEndMap.containsKey(org.getOrgId())) {
group = gEndMap.get(org.getOrgId()).getGroupCount();
- if ("Interval".equals(formDTO.getType())&&gStartMap.containsKey(org.getOrgId())) {
+ if ("Interval".equals(formDTO.getType()) && gStartMap.containsKey(org.getOrgId())) {
group = group - gStartMap.get(org.getOrgId()).getGroupCount();
}
}
int topic = NumConstant.ZERO;
- if(tEndMap.containsKey(org.getOrgId())){
+ if (tEndMap.containsKey(org.getOrgId())) {
topic = tEndMap.get(org.getOrgId()).getTopicCount();
- if ("Interval".equals(formDTO.getType())&&tStartMap.containsKey(org.getOrgId())) {
+ if ("Interval".equals(formDTO.getType()) && tStartMap.containsKey(org.getOrgId())) {
topic = topic - tStartMap.get(org.getOrgId()).getTopicCount();
}
}
int issue = NumConstant.ZERO;
- if(iEndMap.containsKey(org.getOrgId())){
+ if (iEndMap.containsKey(org.getOrgId())) {
issue = iEndMap.get(org.getOrgId()).getIssueCount();
- if ("Interval".equals(formDTO.getType())&&iStartMap.containsKey(org.getOrgId())) {
+ if ("Interval".equals(formDTO.getType()) && iStartMap.containsKey(org.getOrgId())) {
issue = issue - iStartMap.get(org.getOrgId()).getIssueCount();
}
}
int project = NumConstant.ZERO;
int closed = NumConstant.ZERO;
- if(pEndMap.containsKey(org.getOrgId())){
+ if (pEndMap.containsKey(org.getOrgId())) {
project = pEndMap.get(org.getOrgId()).getProjectCount();
closed = pEndMap.get(org.getOrgId()).getClosedProjectCount();
- if ("Interval".equals(formDTO.getType())&&pStartMap.containsKey(org.getOrgId())) {
+ if ("Interval".equals(formDTO.getType()) && pStartMap.containsKey(org.getOrgId())) {
project = project - pStartMap.get(org.getOrgId()).getProjectCount();
closed = closed - pStartMap.get(org.getOrgId()).getClosedProjectCount();
}
@@ -2077,18 +2080,32 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
int patrolDurationInteger = NumConstant.ZERO;
HashSet set = new HashSet();
for (CustomerDataManageResultDTO.CustomerDataManage u : patrolEnd) {
- if ("community".equals(agencyGrid.getLevel()) && org.getOrgId().equals(u.getOrgId())) {
+ if (OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && org.getOrgId().equals(u.getOrgId())) {
patroCount += u.getPatrolCount();
patrolDurationInteger += u.getPatrolDurationInteger();
set.add(u.getStaffId());
}
- if (!"community".equals(agencyGrid.getLevel()) && u.getOrgId().contains(org.getOrgId())) {
+ if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && u.getOrgId().contains(org.getOrgId())) {
patroCount += u.getPatrolCount();
patrolDurationInteger += u.getPatrolDurationInteger();
set.add(u.getStaffId());
}
}
+ //例行工作次数累加
+ int patrolRoutineWorkTimes = NumConstant.ZERO;
+ if (CollectionUtils.isNotEmpty(workCountList) && workCountList.get(NumConstant.ZERO) != null) {
+ for (CustomerDataManageResultDTO.CustomerDataManage work : workCountList) {
+ if (OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && org.getOrgId().equals(work.getOrgId())) {
+ patrolRoutineWorkTimes += work.getPatrolRoutineWorkTimes();
+ set.add(work.getStaffId());
+ } else if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) && work.getOrgId().contains(org.getOrgId())) {
+ patrolRoutineWorkTimes += work.getPatrolRoutineWorkTimes();
+ set.add(work.getStaffId());
+ }
+ }
+ }
+
patro = set.size();
Integer minutes = patrolDurationInteger / 60;
patrolDuration = (minutes / 60 > NumConstant.ZERO ? minutes / 60 + "小时" : "") + (minutes % 60 > NumConstant.ZERO ? minutes % 60 + "分钟" : "0分钟");
@@ -2106,8 +2123,10 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
dto.setPatrolDuration(patrolDuration);
dto.setPatrolDurationInteger(patrolDurationInteger);
+ dto.setPatrolRoutineWorkTimes(patrolRoutineWorkTimes);
+
dataManageList.add(dto);
- });
+ }
//NumConstant.SIX.默认按用户总数降序
Collections.sort(dataManageList, new Comparator() {
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
index 4bd0b91d93..6b20674c30 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
@@ -35,12 +35,13 @@ import java.util.List;
public interface StatsStaffPatrolRecordDailyService extends BaseService {
/**
- * desc:获取组织或网格的 时间段内的总次数等
+ * desc:获取组织或网格的 时间段内的总次数等
+ *
* @param orgIdList
- * @param startDateId
- * @param endDateId
- * @return
- */
+ * @param startDateId
+ * @param endDateId
+ * @return
+ */
List getPatrolSumList(List orgIdList, String startDateId, String endDateId);
/**
@@ -51,11 +52,20 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List userIds, String startDateID, String endDateID);
+
+ /**
+ * desc:获取巡查日统计的相关次数
+ *
+ * @param patrolForm
+ * @return
+ */
+ List getPatrolRecordCount(CustomerDataManageFormDTO patrolForm);
}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
index 610bdcd81c..d885b50130 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
@@ -52,4 +52,9 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List userIds, String startDateID, String endDateID) {
return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, gridId, userIds, startDateID, endDateID);
}
+
+ @Override
+ public List getPatrolRecordCount(CustomerDataManageFormDTO patrolForm) {
+ return baseDao.getRoutineWorkCount(patrolForm);
+ }
}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
index 86aae4d681..273b7e215b 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
@@ -86,5 +86,42 @@
sprd.STAFF_ID,
sprd.GRID_ID
+
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
index a09e63861c..c4c0138ad0 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
@@ -10,6 +10,7 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
+import com.epmet.constant.PingYinConstant;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.evaluationindex.extract.todata.FactOriginExtractService;
@@ -66,7 +67,7 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
} catch (Exception e) {
//失败不重发
logger.error("consumeMessage fail,msg:{}",e.getMessage());
- return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+ return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
log.info("consumeMessage success, cost:{} ms",System.currentTimeMillis() - start);
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
@@ -94,7 +95,7 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
}
log.info("消费了项目变动消息,customer id:{}", msgObj.getCustomerId());
- if (org.apache.commons.lang.StringUtils.isNotBlank(pendingMsgLabel)) {
+ if (StringUtils.isNotBlank(pendingMsgLabel)) {
try {
removePendingMqMsgCache(pendingMsgLabel);
} catch (Exception e) {
@@ -109,19 +110,14 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
try {
String customerId = msgObj.getCustomerId();
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
- lock = distributedLock.getLock(String.format("lock:project_changed:%s", customerId)
+ lock = distributedLock.getLock(String.format("lock:project_changed:%s:%s", customerId, msgObj.getProjectId())
,30L, 30L, TimeUnit.SECONDS);
if (StringUtils.isBlank(customerId)){
logger.error("consumer project_changed fail,msg:{}",customerId);
return;
}
- //消息被消费太快 业务数据还没有完成 歇一会先
- try {
- Thread.sleep(60L);
- } catch (InterruptedException e) {
- logger.error("consumeMessage sleep exception",e);
- }
+
ExtractOriginFormDTO extractOriginFormDTO = new ExtractOriginFormDTO();
extractOriginFormDTO.setCustomerId(customerId);
@@ -146,21 +142,8 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
}
logger.info("consumer projectChanged msg success,{}",aBoolean);
- //发送项目数据上报的mq消息
- if ("6f203e30de1a65aab7e69c058826cd80".equals(customerId)) {
- if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation()) || "close".equals(msgObj.getOperation())) {
- String type;
- if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
- type = SystemMessageType.PROJECT_ADD;
- } else {
- type = SystemMessageType.PROJECT_EDIT;
- }
- List projectList = new ArrayList<>();
- projectList.add(msgObj.getProjectId());
- DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, projectList, type);
- SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
- }
- }
+ sendProject2OpenData(msgObj, customerId);
+
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】消费项目变动消息失败:",e);
@@ -175,6 +158,29 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
}
}
+ /**
+ * desc:发型项目数据到 opendata
+ * @param msgObj
+ * @param customerId
+ */
+ private void sendProject2OpenData(ProjectChangedMQMsg msgObj, String customerId) {
+ //发送项目数据上报的mq消息
+ if (PingYinConstant.PROD_PING_YIN_CUSTOMER_ID.equals(customerId)) {
+ if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation()) || "close".equals(msgObj.getOperation())) {
+ String type;
+ if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
+ type = SystemMessageType.PROJECT_ADD;
+ } else {
+ type = SystemMessageType.PROJECT_EDIT;
+ }
+ List projectList = new ArrayList<>();
+ projectList.add(msgObj.getProjectId());
+ DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, projectList, type);
+ SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
+ }
+ }
+ }
+
@PreDestroy
public void saveCalStatus() {
//todo
diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java
index c72566d91e..9eea1fe6c2 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java
@@ -1,11 +1,13 @@
package com.epmet.dto.form;
+import com.epmet.commons.tools.dto.form.PageFormDTO;
+import com.epmet.commons.tools.validator.group.QueryGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
-public class ImportTaskCommonFormDTO {
+public class ImportTaskCommonFormDTO extends PageFormDTO {
public interface Create {}
public interface Finish {}
@@ -19,7 +21,7 @@ public class ImportTaskCommonFormDTO {
/**
* 操作者ID
*/
- @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class })
+ @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class, QueryGroup.class})
private String operatorId;
/**
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java
index 2780dc302b..850ae91056 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java
@@ -1,9 +1,13 @@
package com.epmet.controller;
+import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
+import com.epmet.commons.tools.validator.group.QueryGroup;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.service.ImportTaskService;
@@ -12,8 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.HashMap;
-
@RestController
@RequestMapping("import-task")
public class ImportTaskController {
@@ -21,6 +23,19 @@ public class ImportTaskController {
@Autowired
private ImportTaskService importTaskService;
+ /**
+ * desc:分页获取个人导入记录
+ * @param tokenDto
+ * @return
+ */
+ @RequestMapping("page")
+ public Result> list(@LoginUser TokenDto tokenDto, @RequestBody ImportTaskCommonFormDTO param) {
+ //tokenDto.setUserId("d8dfc6c1fa2538976059f3900036d419");
+ param.setOperatorId(tokenDto.getUserId());
+ ValidatorUtils.validateEntity(param, QueryGroup.class);
+ return new Result().ok(importTaskService.page(param));
+ }
+
/**
* 创建导入任务
* @param input
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java
index ab59a44956..56eddf11bb 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java
@@ -1,8 +1,12 @@
package com.epmet.service;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
+import com.epmet.dto.result.ImportTaskCommonResultDTO;
+
/**
- *
+ *
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-15
@@ -33,4 +37,11 @@ public interface ImportTaskService {
* @param resultDesc 结果描述文本
*/
Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc);
-}
\ No newline at end of file
+
+ /**
+ * desc:分页获取个人导入记录
+ * @param param
+ * @return
+ */
+ PageData page(ImportTaskCommonFormDTO param);
+}
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java
index 3565e4c8f7..7d6cb24573 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java
@@ -4,17 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.security.user.LoginUserUtil;
+import com.epmet.commons.tools.page.PageData;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.ImportTaskDao;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
+import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.entity.ImportTaskEntity;
import com.epmet.service.ImportTaskService;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
- *
+ *
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-15
@@ -83,4 +88,15 @@ public class ImportTaskServiceImpl implements ImportTaskService {
public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) {
return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0;
}
-}
\ No newline at end of file
+
+ @Override
+ public PageData page(ImportTaskCommonFormDTO param) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId());
+ Page page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> {
+ importRecordDao.selectList(queryWrapper);
+ });
+ PageData result = new PageData<>(page.getResult(),page.getTotal());
+ return result;
+ }
+}
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java
index f94e54a486..611207bd98 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java
@@ -1,24 +1,10 @@
package com.epmet.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
-import com.epmet.commons.tools.page.PageData;
-import com.epmet.commons.tools.utils.ConvertUtils;
-import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.LatestActServiceRelationDao;
-import com.epmet.dto.LatestActServiceRelationDTO;
import com.epmet.entity.LatestActServiceRelationEntity;
-import com.epmet.redis.LatestActServiceRelationRedis;
import com.epmet.service.LatestActServiceRelationService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
/**
* 联建活动与服务事项关联表
diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml
index 094292fe13..0a13f2a38d 100644
--- a/epmet-module/gov-org/gov-org-server/pom.xml
+++ b/epmet-module/gov-org/gov-org-server/pom.xml
@@ -33,6 +33,11 @@
epmet-commons-dynamic-datasource
2.0.0
+
+ com.epmet
+ epmet-oss-client
+ 2.0.0
+
org.springframework.boot
spring-boot-starter-web
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
index d49715e330..76f69d819e 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java
@@ -7,6 +7,12 @@ package com.epmet.constant;
*/
public interface ImportErrorMsgConstants {
+ String EXIST_ERROR = "数据已存在";
+ String HOUSE_ERROR = "所属组织、所属网格、所属小区、所属楼栋、单元号、房屋类型、房屋用途、出租、房主姓名、房主电话、房主身份证的值未填写,或者所填写信息在系统中未找到";
+
+ String BUILDING_ERROR = "所属组织、所属网格、所属小区、楼栋类型、单元数的值未填写,或者所填写信息在系统中未找到";
+
+ String NEIGHBOR_HOOD_ERROR = "所属组织、所属网格、详细地址的值未填写,或者所填写信息在系统中未找到";
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
index 017da95fd9..026948d385 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
@@ -27,17 +27,17 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
+import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.form.*;
-import com.epmet.dto.result.HouseInfoDTO;
-import com.epmet.dto.result.IcNeighborHoodResultDTO;
-import com.epmet.dto.result.ImportResultDTO;
-import com.epmet.dto.result.LoginUserDetailsResultDTO;
+import com.epmet.dto.result.*;
import com.epmet.excel.IcHouseExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.model.HouseInfoModel;
@@ -85,6 +85,8 @@ public class HouseController implements ResultDataResolver {
private IcNeighborHoodService neighborHoodService;
@Autowired
private IcHouseService icHouseService;
+ @Autowired
+ private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@PostMapping("houselist")
@@ -266,10 +268,17 @@ public class HouseController implements ResultDataResolver {
} catch (IOException e) {
return new Result().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class)
- .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService))
+ .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
index e7db295a7e..d85a95854f 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java
@@ -1,5 +1,6 @@
package com.epmet.model;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@@ -11,13 +12,13 @@ import lombok.Data;
@Data
public class BuildingErrorInfoModel {
- @ExcelProperty(value = "小区名称")
+ @Excel(name = "小区名称")
private String neighborHoodName;
- @ExcelProperty(value = "楼栋名称")
+ @Excel(name = "楼栋名称")
private String buildingName;
- @ExcelProperty(value = "错误信息")
+ @Excel(name = "错误信息")
private String errorMsg;
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
index 9cb84948c5..c050e3a8e4 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java
@@ -1,5 +1,6 @@
package com.epmet.model;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -12,19 +13,19 @@ import org.hibernate.validator.constraints.Length;
@Data
public class HouseErrorInfoModel {
- @ExcelProperty(value = "所属小区")
+ @Excel(name = "所属小区")
private String neighborHoodName;
- @ExcelProperty(value = "所属楼栋")
+ @Excel(name = "所属楼栋")
private String buildingName;
- @ExcelProperty(value = "单元号")
+ @Excel(name = "单元号")
private Integer buildingUnit;
- @ExcelProperty(value = "门牌号")
+ @Excel(name = "门牌号")
private String doorName;
- @ExcelProperty(value = "错误信息")
+ @Excel(name = "错误信息")
private String errorMsg;
}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
index 63e5f39000..73f4a18b84 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java
@@ -9,20 +9,22 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.CustomerGridConstant;
+import com.epmet.constant.ImportErrorMsgConstants;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
import com.epmet.enums.BuildingTypeEnums;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcNeighborHoodService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -36,6 +38,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
BuildingInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -56,12 +59,15 @@ public class ImportBuildingInfoListener extends AnalysisEventListener {
nums.add(e.getNum());
- disposeErrorMsg(info,"");
+ disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
});
}
}
@@ -163,7 +169,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
HouseInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -61,13 +67,16 @@ public class ImportHouseInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>();
NeighborHoodInfoModel info = null;
+ String taskId = "";
List needDisposeList = new ArrayList<>();
List needInsertList = new ArrayList<>();
@@ -57,13 +63,16 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener {
nums.add(e.getNum());
- disposeErrorMsg(info,"");
+ disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR);
});
}
List notExistList = groupByBuildingExistStatus.get(false);
@@ -178,7 +186,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener
void insertPropertyManagement(List propertyManagementEntities);
void neighborHoodPropertyInsert(List entities);
+
+ String orgGeneralImport(Collection> errorRows, Class tClass) throws IOException;
}
\ No newline at end of file
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
index 15daabf246..e1ee7204d5 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
@@ -13,24 +13,25 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*;
import com.epmet.dto.BuildingTreeLevelDTO;
import com.epmet.dto.CustomerStaffAgencyDTO;
import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.form.IcBulidingFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.ListIcNeighborHoodFormDTO;
-import com.epmet.dto.result.BuildingResultDTO;
-import com.epmet.dto.result.BuildingResultPagedDTO;
-import com.epmet.dto.result.IcNeighborHoodResultDTO;
-import com.epmet.dto.result.ImportResultDTO;
+import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.enums.BuildingTypeEnums;
import com.epmet.excel.IcBuildingExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.model.BuildingInfoModel;
import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportBuildingInfoListener;
@@ -89,6 +90,8 @@ public class BuildingServiceImpl implements BuildingService {
private IcHouseRedis icHouseRedis;
@Autowired
private IcNeighborHoodService neighborHoodService;
+ @Autowired
+ private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -406,10 +409,17 @@ public class BuildingServiceImpl implements BuildingService {
} catch (IOException e) {
return new Result().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class)
- .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService))
+ .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
index 99db449d72..5b22e65a97 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
@@ -17,7 +17,8 @@
package com.epmet.service.impl;
-import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
@@ -31,6 +32,7 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
+import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@@ -39,16 +41,22 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant;
+import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.*;
import com.epmet.dto.form.ImportInfoFormDTO;
+import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportResultDTO;
+import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.InfoByNamesResultDTO;
+import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.*;
import com.epmet.excel.IcNeighborHoodExcel;
+import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
+import com.epmet.feign.OssFeignClient;
import com.epmet.model.ImportNeighborHoodInfoListener;
import com.epmet.model.NeighborHoodInfoModel;
import com.epmet.redis.IcHouseRedis;
@@ -58,14 +66,21 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.http.entity.ContentType;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.tomcat.util.http.fileupload.FileItemFactory;
+import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
@@ -95,6 +110,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) {
@@ -396,10 +415,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error("读取文件失败");
}
+ ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO();
+ importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD);
+ importFormDTO.setOperatorId(formDTO.getUserId());
+ Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO);
+ if (!importTask.success()){
+ throw new EpmetException("创建任务失败");
+ }
excelReader = EasyExcel.read(inputStream).build();
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class)
- .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao))
+ .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId()))
.build();
excelReader.read(readSheet);
} finally {
@@ -609,4 +635,44 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl String orgGeneralImport(Collection> errorRows, Class tClass) throws IOException {
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表","导入失败的数据列表"),
+ tClass, errorRows);
+
+ // 文件名
+ String resultDescFileName = UUID.randomUUID().toString().concat(".xls");
+
+ FileItemFactory factory = new DiskFileItemFactory(16, null);
+ FileItem fileItem = (FileItem) factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName);
+ OutputStream os = fileItem.getOutputStream();
+ Result uploadResult = null;
+ try {
+ workbook.write(os);
+ uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
+ } catch (Exception e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件:{}", errormsg);
+ } finally {
+ try {
+ os.close();
+ } catch (IOException e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件关闭输出流:{}", errormsg);
+ }
+ try {
+ fileItem.delete();
+ } catch (Exception e) {
+ String errormsg = ExceptionUtils.getErrorStackTrace(e);
+ log.error("【居民信息导入】上传错误描述文件删除临时文件:{}", errormsg);
+ }
+ }
+
+ if (uploadResult == null || !uploadResult.success()) {
+ log.error("【居民信息导入】调用OSS上传结果描述文件失败");
+ return null;
+ }
+ return uploadResult.getData().getUrl();
+ }
+
}
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
index b637748a70..53e1bd4c6c 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
@@ -317,7 +317,10 @@ public class ProjectTraceServiceImpl implements ProjectTraceS
List staffList = formDTO.getStaffList();
//1.文字内容安全校验
List list = new ArrayList<>();
- list.add(formDTO.getTitle());list.add(formDTO.getBackGround());list.add(formDTO.getPublicReply());list.add(formDTO.getInternalRemark());
+ list.add(formDTO.getTitle());
+ list.add(formDTO.getBackGround());
+ list.add(formDTO.getPublicReply());
+ list.add(formDTO.getInternalRemark());
safetyCheck(list);
//2.数据准备,查询需要用到的数据
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java
new file mode 100644
index 0000000000..5dc0d0b7c5
--- /dev/null
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java
@@ -0,0 +1,27 @@
+package com.epmet.bean;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * desc:导出居民信息 基础信息 给其他sheet使用
+ */
+@Data
+public class ResiExportBaseInfoData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private String GRID_ID;
+ private String VILLAGE_ID;
+ private String BUILD_ID;
+ private String UNIT_ID;
+ private String HOME_ID;
+ private String IS_BDHJ;
+ private String NAME;
+ private String MOBILE;
+ private String GENDER;
+ private String ID_CARD;
+ private String BIRTHDAY;
+ private String CONTACTS;
+ private String CONTACTS_MOBILE;
+}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
index 7e4879882c..3619bb6088 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
@@ -24,6 +24,7 @@ import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
+import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
@@ -299,6 +300,7 @@ public class IcResiUserController implements ResultDataResolver {
@RequestMapping(value = "/exportExcel")
public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
+ long startM = System.currentTimeMillis();
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId());
String staffOrgPath = null;
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) {
@@ -328,7 +330,7 @@ public class IcResiUserController implements ResultDataResolver {
map.putIfAbsent(tableName,exportItem);
String columnName = item.getColumnName().concat(item.getColumnNum() == NumConstant.ZERO ? StrConstant.EPMETY_STR : item.getColumnNum().toString());
exportItem.getItemMap().put(columnName,item);
- if (item.getOptionSourceType().equals("remote")&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
+ if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType())&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
//多个参数
String[] paramArr = item.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK);
Arrays.stream(paramArr).forEach(o->{
@@ -352,7 +354,7 @@ public class IcResiUserController implements ResultDataResolver {
.collect(Collectors.toList());
List