Browse Source

Merge branch 'dev' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_data_fusion

 Conflicts:
	epmet-gateway/src/main/resources/bootstrap.yml
master
zxc 4 years ago
parent
commit
ebfef35c6e
  1. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java
  3. 3
      epmet-gateway/src/main/resources/bootstrap.yml
  4. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  5. 23
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml
  6. 30
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/form/PatrolCountFormDTO.java
  7. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/GridManagerListResultDTO.java
  8. 32
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/PatrolCountResultDTO.java
  9. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java
  10. 5
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/PatrolConstant.java
  11. 20
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java
  12. 10
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java
  13. 35
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java
  14. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml
  15. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateCommunityServiceImpl.java
  16. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java
  17. 30
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java
  18. 34
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  19. 48
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  20. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml
  21. 1
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CommunityScoreDao.xml
  22. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/GridScoreDao.xml
  23. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridStaffResultDTO.java
  24. 96
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerStartPageDTO.java
  25. 25
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/HomeStartPageFromDTO.java
  26. 49
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/SaveStartPageFromDTO.java
  27. 26
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/StartPageFromDTO.java
  28. 31
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/HomeStartPageResultDTO.java
  29. 47
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/StartPageResultDTO.java
  30. 6
      epmet-module/oper-customize/oper-customize-server/pom.xml
  31. 138
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerStartPageController.java
  32. 48
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerStartPageDao.java
  33. 66
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerStartPageEntity.java
  34. 71
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/CustomerStartPageExcel.java
  35. 47
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/CustomerStartPageRedis.java
  36. 121
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerStartPageService.java
  37. 242
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerStartPageServiceImpl.java
  38. 18
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.11__customer_start_page.sql
  39. 28
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerStartPageDao.xml
  40. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java
  41. 4
      epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -109,6 +109,7 @@ public enum EpmetErrorCode {
ONLINE_BADGE_COUNT(8517, "最多上线5个徽章"),
PATROL_REPEATED_SUBMIT_ERROR(8521, "巡查已结束,请勿重复提交"),
PATROL_END_TIME_ERROR(8522, "巡查结束时间不能小于巡查开始时间"),
TIME_FORMAT_ERROR(8523, "时间格式错误"),
// 该错误不会提示给前端,只是后端传输错误信息用。
ACCESS_SQL_FILTER_MISSION_ARGS(8701, "缺少生成权限过滤SQL所需参数"),
OPER_ADD_CUSTOMER_ROOT_AGENCY_ERROR(8702, "添加客户根级组织失败"),

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java

@ -71,6 +71,7 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu
//app-client-userId
String redisKey = request.getHeader(Constant.APP_USER_KEY);
if (StringUtils.isEmpty(redisKey)) {
logger.info("用户未登陆");
throw new RenException(ErrorCode.UNAUTHORIZED);
}
// String[] keyArray=redisKey.split("-");

3
epmet-gateway/src/main/resources/bootstrap.yml

@ -466,13 +466,12 @@ epmet:
- /data/aggregator/**
- /gov/voice/**
- /resi/voice/**
- /epmet/point/**
# 内部认证url白名单(在白名单中的,就不会再校验登录了)
internalAuthUrlsWhiteList:
- /epmetuser/customerstaff/customerlist
- /gov/project/project/platformcallback
- /epmet/point/mqCallback/**
- /oper/customize/customerstartpage/homestartpage
# 外部应用认证,使用AccessToken等头进行认证
externalOpenUrls:

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -84,7 +84,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
public List<StaffListResultDTO> staffList(StaffListFormDTO formDTO) {
List<StaffListResultDTO> resultList = new ArrayList<>();
List<StaffListResultDTO> result = new ArrayList<>();
//1.查询当前人员所属组织下网格列表数据,供后续封装数据使用
//1.查询当前人员所属组织级所有网格列表数据,供后续封装数据使用
List<CustomerGridDTO> list = govOrgService.gridListByStaffId(formDTO.getUserId());
if (list.size() < NumConstant.ONE) {
return resultList;

23
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml

@ -78,11 +78,24 @@
WHERE
cg.del_flag = '0'
AND ca.del_flag = '0'
AND cg.pid = (
select agency_id
from customer_staff_agency
where del_flag = '0'
AND user_id = #{staffId}
AND (
cg.pid = (
select agency_id
from customer_staff_agency
where del_flag = '0'
AND user_id = #{staffId}
)
OR
cg.pids LIKE CONCAT(
'%',
(
select agency_id
from customer_staff_agency
where del_flag = '0'
AND user_id = #{staffId}
),
'%'
)
)
</select>

30
epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/form/PatrolCountFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.user.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/6/22 1:54 下午
* @DESC
*/
@Data
public class PatrolCountFormDTO implements Serializable {
private static final long serialVersionUID = -4365871122000986115L;
public interface PatrolCountForm{}
/**
* 组织ID
*/
@NotBlank(message = "组织ID不能为空",groups = PatrolCountForm.class)
private String agencyId;
/**
* 行政地区编码
*/
private String areaCode;
}

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/GridManagerListResultDTO.java

@ -20,6 +20,11 @@ public class GridManagerListResultDTO implements Serializable {
*/
private String staffId;
/**
* 工作人员手机号
*/
private String mobile;
/**
* 经度
*/

32
epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/PatrolCountResultDTO.java

@ -0,0 +1,32 @@
package com.epmet.user.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/6/22 1:50 下午
* @DESC
*/
@Data
public class PatrolCountResultDTO implements Serializable {
private static final long serialVersionUID = -5686401629775910576L;
/**
* 当前巡查中人数
*/
private Integer patrollingCount;
/**
* 当前未巡查中人数
*/
private Integer elseCount;
public PatrolCountResultDTO() {
this.patrollingCount = NumConstant.ZERO;
this.elseCount = NumConstant.ZERO;
}
}

2
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/IndexConstant.java

@ -30,7 +30,7 @@ public class IndexConstant {
public static final String THRESHOLD_TEXT = "给定阈值%d%%,超过阈值不加分";
public static final String TABLE_DESC = "详见下表:";
public static final String INDEX_SCORE_TITLE = "当月指数";
public static final String INDEX_SCORE_DESC = "含义:自然月周期内,当月指数得分=党建指数得分*相关权重+治理指数得分*相关权重+服务指数得分*相关权重";
public static final String INDEX_SCORE_DESC = "自然月周期内,当月指数得分=党建指数得分*相关权重+治理指数得分*相关权重+服务指数得分*相关权重";
public static final String INDEX_DISTRINCT_TABLE1_INDEX_CODE = "suoyoujiedaozlnlpjz";
public static final String ZHI_LI_NENG_LI = "zhilinengli";
public static final String PATTERN_D = "d";

5
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/constant/PatrolConstant.java

@ -17,4 +17,9 @@ public interface PatrolConstant {
*/
String LATITUDE = "latitude";
/**
* 巡查中
*/
String PATROLLING = "patrolling";
}

20
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java

@ -6,9 +6,11 @@ import com.epmet.datareport.service.user.StaffPatrolDetailService;
import com.epmet.user.form.GridManagerListFormDTO;
import com.epmet.dto.form.PatrolTrackFormDTO;
import com.epmet.dto.form.RecordListFormDTO;
import com.epmet.user.form.PatrolCountFormDTO;
import com.epmet.user.result.GridManagerListResultDTO;
import com.epmet.dto.result.PatrolTrackResultDTO;
import com.epmet.dto.result.RecordListResultDTO;
import com.epmet.user.result.PatrolCountResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -23,12 +25,12 @@ import java.util.List;
@RestController
@RequestMapping("staffpatrol")
public class StaffPatrolDetailController {
@Autowired
private StaffPatrolDetailService staffPatrolService;
/**
* @Description 001网格员分布
* @Description 001网格员分布 优先选择areaCode查询
* @Param formDTO
* @author zxc
* @date 2021/6/7 3:06 下午
@ -63,4 +65,16 @@ public class StaffPatrolDetailController {
return new Result<List<PatrolTrackResultDTO>>().ok(staffPatrolService.patrolTrack(formDTO));
}
}
/**
* @Description 004网格员巡查中和未巡查中的人数
* @Param formDTO
* @author zxc
* @date 2021/6/22 2:01 下午
*/
@PostMapping("patrolcount")
public Result<PatrolCountResultDTO> patrolCount(@RequestBody PatrolCountFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, PatrolCountFormDTO.PatrolCountForm.class);
return new Result<PatrolCountResultDTO>().ok(staffPatrolService.patrolCount(formDTO));
}
}

10
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java

@ -3,9 +3,11 @@ package com.epmet.datareport.service.user;
import com.epmet.user.form.GridManagerListFormDTO;
import com.epmet.dto.form.PatrolTrackFormDTO;
import com.epmet.dto.form.RecordListFormDTO;
import com.epmet.user.form.PatrolCountFormDTO;
import com.epmet.user.result.GridManagerListResultDTO;
import com.epmet.dto.result.PatrolTrackResultDTO;
import com.epmet.dto.result.RecordListResultDTO;
import com.epmet.user.result.PatrolCountResultDTO;
import java.util.List;
@ -41,4 +43,12 @@ public interface StaffPatrolDetailService{
*/
List<PatrolTrackResultDTO> patrolTrack(PatrolTrackFormDTO formDTO);
/**
* @Description 004网格员巡查中和未巡查中的人数
* @Param formDTO
* @author zxc
* @date 2021/6/22 2:01 下午
*/
PatrolCountResultDTO patrolCount(PatrolCountFormDTO formDTO);
}

35
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java

@ -9,16 +9,15 @@ import com.epmet.datareport.dao.user.StaffPatrolDetailDao;
import com.epmet.datareport.dao.user.StaffPatrolRecordDao;
import com.epmet.datareport.service.evaluationindex.screen.ScreenOrgService;
import com.epmet.datareport.service.user.StaffPatrolDetailService;
import com.epmet.dto.result.GridStaffResultDTO;
import com.epmet.dto.result.UserNameAndLLResultDTO;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.user.form.GridManagerListFormDTO;
import com.epmet.dto.form.PatrolTrackFormDTO;
import com.epmet.dto.form.RecordListFormDTO;
import com.epmet.user.form.PatrolCountFormDTO;
import com.epmet.user.result.GridManagerListResultDTO;
import com.epmet.dto.result.PatrolTrackResultDTO;
import com.epmet.dto.result.RecordListResultDTO;
import com.epmet.user.result.PatrolCountResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -27,6 +26,7 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -192,5 +192,32 @@ public class StaffPatrolDetailServiceImpl implements StaffPatrolDetailService {
return new ArrayList<>();
}
/**
* @Description 004网格员巡查中和未巡查中的人数
* @Param formDTO
* @author zxc
* @date 2021/6/22 2:01 下午
*/
@Override
public PatrolCountResultDTO patrolCount(PatrolCountFormDTO formDTO) {
PatrolCountResultDTO result = new PatrolCountResultDTO();
GridManagerListFormDTO gridManagerListFormDTO = ConvertUtils.sourceToTarget(formDTO, GridManagerListFormDTO.class);
List<GridManagerListResultDTO> resultDTOS = gridManagerList(gridManagerListFormDTO);
// 结果为空就是没网格员
if (CollectionUtils.isEmpty(resultDTOS)){
return result;
}
// 根据状态分组,只取巡查中的网格员;巡查中的为0,剩下的都是未巡查,巡查中不为0,总数 - 巡查中 = 未巡查
Map<String, List<GridManagerListResultDTO>> groupByStatus = resultDTOS.stream().collect(Collectors.groupingBy(GridManagerListResultDTO::getStatus));
List<GridManagerListResultDTO> patrolling = groupByStatus.get(PatrolConstant.PATROLLING);
if (CollectionUtils.isEmpty(patrolling)){
result.setElseCount(resultDTOS.size());
return result;
}
result.setPatrollingCount(patrolling.size());
result.setElseCount(resultDTOS.size() - patrolling.size());
return result;
}
}

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml

@ -333,11 +333,11 @@
LEFT JOIN epmet_evaluation_index.screen_customer_agency ca ON ca.AGENCY_ID = cg.PARENT_AGENCY_ID AND ca.DEL_FLAG = 0
LEFT JOIN epmet_evaluation_index.screen_customer_agency ca2 ON ca2.AGENCY_ID = ca.PID AND ca2.DEL_FLAG = 0
WHERE cg.DEL_FLAG = 0
<if test="agencyId == null">
<if test="areaCode != null and areaCode != ''">
AND cg.AREA_CODE LIKE CONCAT(#{areaCode},'%')
</if>
<if test="areaCode == null">
AND cg.PARENT_AGENCY_ID = #{agencyId}
<if test="agencyId != null and agencyId != ''">
AND cg.ALL_PARENT_IDS LIKE CONCAT(#{agencyId}, '%')
</if>
</select>

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateCommunityServiceImpl.java

@ -646,9 +646,13 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
//下属所有网格的党建能力平均值
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
if (IndexCodeEnum.XIA_SHU_SUO_YOU_WGDDJNLPJZ.getCode().equals(detail.getIndexCode())) {
List<SubGridAvgResultDTO> subGridPartyAvgScore = factIndexGridScoreDao.selectSubGridAvgScoreByAreaCodeNew(form.getMonthId(),IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
subGridPartyAvgScore.stream().forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.XIA_SHU_SUO_YOU_WGDDJNLPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridPartyAvgScore)) {
log.warn(IndexCalConstant.GRID_PARTY_AVG_NULL);
} else {
@ -702,7 +706,8 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
CommunityCalResultDTO result = getResultB(scoreTotalOfSampleId, form.getCustomerId(), form.getMonthId(), NumConstant.ZERO_STR, IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(), IndexCodeEnum.SHE_QU_XIANG_GUAN.getCode(), pid);
deleteOldRecord(form.getCustomerId(),form.getMonthId());
result.getFiveLevel().forEach(s->{
s.setSampleCount(0);
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? 0 : sampleCount);
});
deleteAndInsert(result);
return true;
@ -724,10 +729,14 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
String yearId = DateUtils.getYearId(form.getMonthId());
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
// 社区下属所有网格治理能力汇总(平均值)
if (IndexCodeEnum.SHE_QU_XIA_SHU_SYWGZLNLHZPJZ.getCode().equals(detail.getIndexCode())) {
List<SubGridAvgResultDTO> subGridGovernAvg = factIndexGridScoreDao.selectSubGridAvgScoreByAreaCodeNew(form.getMonthId(),IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
subGridGovernAvg.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.SHE_QU_XIA_SHU_SYWGZLNLHZPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridGovernAvg)){
log.warn("社区下级治理能力平均分集合为空");
}else{
@ -779,7 +788,8 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
log.info("communityGovernAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
CommunityCalResultDTO result = getResultB(scoreTotalOfSampleId, form.getCustomerId(), form.getMonthId(), NumConstant.ZERO_STR, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(), IndexCodeEnum.SHE_QU_XIANG_GUAN.getCode(), pid);
result.getFiveLevel().forEach(s->{
s.setSampleCount(0);
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? 0 : sampleCount);
});
deleteAndInsert(result);
return true;
@ -802,10 +812,14 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
String yearId = DateUtils.getYearId(form.getMonthId());
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
String indexCode = detail.getIndexCode();
if (IndexCodeEnum.SHE_QU_XIA_JI_SYWGFWNLDFPJZ.getCode().equals(indexCode)) {
List<SubGridAvgResultDTO> subGridServiceAvg = factIndexGridScoreDao.selectSubGridAvgScoreByAreaCodeNew(form.getMonthId(),IndexCodeEnum.FU_WU_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
subGridServiceAvg.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.SHE_QU_XIA_JI_SYWGFWNLDFPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridServiceAvg)) {
log.warn("查询社区下级所有网格服务能力得分平均值集合为空");
} else {
@ -857,7 +871,8 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
log.info("communityServiceAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
CommunityCalResultDTO result = getResultB(scoreTotalOfSampleId, form.getCustomerId(), form.getMonthId(), NumConstant.ZERO_STR, IndexCodeEnum.FU_WU_NENG_LI.getCode(), IndexCodeEnum.SHE_QU_XIANG_GUAN.getCode(), pid);
result.getFiveLevel().forEach(s->{
s.setSampleCount(0);
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? 0 : sampleCount);
});
deleteAndInsert(result);
return true;

33
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateDistrictServiceImpl.java

@ -230,7 +230,7 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
List<SubAgencyScoreAvgResultDTO> subGridPartyAvgScore = agencyScoreDao.selectAgencyScoreAvgNew(customerId, monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),IndexCalConstant.STREET_LEVEL,quarterId,yearId);
log.info("subGridPartyAvgScore:::"+subGridPartyAvgScore.toString());
subGridPartyAvgScore.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode()), s.getSampleCount());
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridPartyAvgScore)) {
log.warn(IndexCalConstant.DISTRICT_PARTY_AVG_NULL);
@ -319,7 +319,7 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
List<SubAgencyScoreAvgResultDTO> districtGovernAvgList = agencyScoreDao.selectAgencyScoreAvgNew(customerId, monthId, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),IndexCalConstant.STREET_LEVEL,quarterId,yearId);
log.info("districtGovernAvgList:::"+districtGovernAvgList.toString());
districtGovernAvgList.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode()), s.getSampleCount());
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode()), s.getSampleCount());
});
for (int i = 0; i < districtGovernAvgList.size(); i++) {
if (districtGovernAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){
@ -412,7 +412,7 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
List<SubAgencyScoreAvgResultDTO> subStreetAvgList = agencyScoreDao.selectAgencyScoreAvgNew(customerId, monthId,IndexCodeEnum.FU_WU_NENG_LI.getCode(),IndexCalConstant.STREET_LEVEL,quarterId,yearId);
log.info("subStreetAvgList:::"+subStreetAvgList.toString());
subStreetAvgList.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getParentId().concat(":").concat(IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode()), s.getSampleCount());
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode()), s.getSampleCount());
});
for (int i = 0; i < subStreetAvgList.size(); i++) {
if (subStreetAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){
@ -645,10 +645,15 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
Map<String, String> pid = new HashMap<>();
Map<String, String> agencyMap = agencyMap(customerId);
//党建能力平均值
// key:agencyId,value:sampleCount样本量
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
indexDetailList.forEach(detail -> {
if (IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode().equals(detail.getIndexCode())) {
List<SubAgencyScoreAvgResultDTO> subGridPartyAvgScore = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
log.info("subGridPartyAvgScore:::"+subGridPartyAvgScore.toString());
subGridPartyAvgScore.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_JI_JIE_DDJNLHZPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridPartyAvgScore)) {
log.warn(IndexCalConstant.DISTRICT_PARTY_AVG_NULL);
} else if (subGridPartyAvgScore.size() > NumConstant.ZERO) {
@ -709,6 +714,10 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
log.info("districtPartyAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(), IndexCodeEnum.QUAN_QU_XIANG_GUAN.getCode(), pid);
deleteOldRecord(customerId,monthId,IndexCalConstant.DISTRICT_LEVEL);
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
return true;
}
@ -732,11 +741,15 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
Map<String, String> agencyMap = agencyMap(customerId);
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
if (IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode().equals(detail.getIndexCode())) {
// 治理能力平均值
List<SubAgencyScoreAvgResultDTO> districtGovernAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
log.info("districtGovernAvgList:::"+districtGovernAvgList.toString());
districtGovernAvgList.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.SUO_YOU_JIE_DAO_ZLNLPJZ.getCode()), s.getSampleCount());
});
for (int i = 0; i < districtGovernAvgList.size(); i++) {
if (districtGovernAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){
districtGovernAvgList.remove(districtGovernAvgList.get(i));
@ -800,6 +813,11 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
log.info("districtGovernAbilityCalculateExistsSub getScoreTotalOfSampleId param:{}", JSON.toJSONString(indexInputVOS));
log.info("districtGovernAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(), IndexCodeEnum.QUAN_QU_XIANG_GUAN.getCode(), pid);
// 赋值样本量
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
return true;
}
@ -823,11 +841,15 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
Map<String, String> agencyMap = agencyMap(customerId);
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
String indexCode = detail.getIndexCode();
if (IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode().equals(indexCode)) {
List<SubAgencyScoreAvgResultDTO> subStreetAvgList = agencyScoreDao.selectAgencyScoreAvgExistsSubNew(monthId,IndexCodeEnum.FU_WU_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
log.info("subStreetAvgList:::"+subStreetAvgList.toString());
subStreetAvgList.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.QU_XIA_SHU_JIE_DFWNLHZPJZ.getCode()), s.getSampleCount());
});
for (int i = 0; i < subStreetAvgList.size(); i++) {
if (subStreetAvgList.get(i).getAgencyId().equals(NumConstant.ZERO_STR)){
subStreetAvgList.remove(subStreetAvgList.get(i));
@ -867,6 +889,11 @@ public class IndexCalculateDistrictServiceImpl implements IndexCalculateDistrict
log.info("districtServiceAbilityCalculateExistsSub getScoreTotalOfSampleId param:{}", JSON.toJSONString(indexInputVOS));
log.info("districtServiceAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.FU_WU_NENG_LI.getCode(), IndexCodeEnum.QUAN_QU_XIANG_GUAN.getCode(), pid);
// 赋值样本量
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
}
return true;

30
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateStreetServiceImpl.java

@ -659,12 +659,17 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
//下属所有社区的党建能力平均值
// key:agencyId,value:sampleCount样本量
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
if (IndexCodeEnum.JIE_DAO_XIA_SHU_SYSQDJNLHZPJZ.getCode().equals(detail.getIndexCode())) {
// 下属所有社区的党建能力平均值
List<SubCommunityAvgResultDTO> dispose = communityScoreDao.selectSubCommAvgScoreExistSubNotSelfNew(monthId,IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
// 数据处理
List<SubCommunityAvgResultDTO> subCommPartyAvgScore = disposeSubAvg(dispose, form);
dispose.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.JIE_DAO_XIA_SHU_SYSQDJNLHZPJZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subCommPartyAvgScore)) {
log.warn(IndexCalConstant.COMMUNITY_PARTY_AVG_NULL);
} else if (subCommPartyAvgScore.size() > NumConstant.ZERO) {
@ -718,6 +723,11 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
log.info("streetPartyAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.DANG_JIAN_NENG_LI.getCode(), IndexCodeEnum.JIE_DAO_XIANG_GUAN.getCode(), pid);
deleteOldRecord(customerId, monthId, IndexCalConstant.STREET_LEVEL);
// 赋值样本量
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
return true;
}
@ -739,6 +749,8 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
String quarterId = DateUtils.getQuarterId(monthId);
String yearId = DateUtils.getYearId(monthId);
List<IndexInputVO> indexInputVOS = new ArrayList<>();
// key:agencyId,value:sampleCount样本量
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
Map<String, String> pid = new HashMap<>();
detailListByParentCode.forEach(detail -> {
if (IndexCodeEnum.JIE_DAO_XIA_SHU_SYSQZLNLHZ.getCode().equals(detail.getIndexCode())) {
@ -746,6 +758,9 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
List<SubCommunityAvgResultDTO> dispose = communityScoreDao.selectSubCommAvgScoreExistSubNotSelfNew(monthId,IndexCodeEnum.ZHI_LI_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
// 孔村数据处理
List<SubCommunityAvgResultDTO> subGridGovernAvg = disposeSubAvg(dispose,form);
subGridGovernAvg.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.JIE_DAO_XIA_SHU_SYSQZLNLHZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subGridGovernAvg)){
log.warn("查询街道下属所有社区治理能力汇总为空");
}else if (subGridGovernAvg.size() > NumConstant.ZERO) {
@ -797,6 +812,11 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
log.info("streetGovernAbilityCalculateExistsSub getScoreTotalOfSampleId param:{}", JSON.toJSONString(indexInputVOS));
log.info("streetGovernAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.ZHI_LI_NENG_LI.getCode(), IndexCodeEnum.JIE_DAO_XIANG_GUAN.getCode(), pid);
// 赋值样本量
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
return true;
}
@ -819,6 +839,8 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
String yearId = DateUtils.getYearId(monthId);
List<IndexInputVO> indexInputVOS = new ArrayList<>();
Map<String, String> pid = new HashMap<>();
// key:agencyId,value:sampleCount样本量
Map<String, Integer> gridPartyScoreSampleCountMap = new HashMap<>();
detailListByParentCode.forEach(detail -> {
String indexCode = detail.getIndexCode();
if (IndexCodeEnum.JIE_DAO_XIA_SHU_SQFWNLDFPYZ.getCode().equals(indexCode)) {
@ -826,6 +848,9 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
List<SubCommunityAvgResultDTO> dispose = communityScoreDao.selectSubCommAvgScoreExistSubNotSelfNew(monthId,IndexCodeEnum.FU_WU_NENG_LI.getCode(),form.getCustomerAreaCode(),quarterId,yearId);
// 孔村数据处理
List<SubCommunityAvgResultDTO> subCommServiceAvg = disposeSubAvg(dispose,form);
subCommServiceAvg.forEach(s -> {
gridPartyScoreSampleCountMap.put(s.getAgencyId().concat(":").concat(IndexCodeEnum.JIE_DAO_XIA_SHU_SQFWNLDFPYZ.getCode()), s.getSampleCount());
});
if (CollectionUtils.isEmpty(subCommServiceAvg)) {
log.warn("查询街道下属社区服务能力得分平均值为空");
} else if (subCommServiceAvg.size() > NumConstant.ZERO) {
@ -877,6 +902,11 @@ public class IndexCalculateStreetServiceImpl implements IndexCalculateStreetServ
log.info("streetServiceAbilityCalculateExistsSub getScoreTotalOfSampleId param:{}", JSON.toJSONString(indexInputVOS));
log.info("streetServiceAbilityCalculateExistsSub getScoreCountOfSampleId result:{}", JSON.toJSONString(scoreTotalOfSampleId));
AgencyCalResultDTO result = getResultB(scoreTotalOfSampleId, customerId, monthId, NumConstant.ZERO_STR, IndexCodeEnum.FU_WU_NENG_LI.getCode(), IndexCodeEnum.JIE_DAO_XIANG_GUAN.getCode(), pid);
// 赋值样本量
result.getFiveLevel().forEach(s -> {
Integer sampleCount = gridPartyScoreSampleCountMap.get(s.getAgencyId().concat(":").concat(s.getIndexCode()));
s.setSampleCount(sampleCount == null ? NumConstant.ZERO : sampleCount);
});
insertDetail(result);
return true;
}

34
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

@ -330,20 +330,20 @@
IFNULL( b.count,
0 ) AS "count"
FROM
(SELECT f.AGENCY_ID,
(SELECT da.ID AS AGENCY_ID,
COUNT( f.ID ) AS "count"
FROM fact_origin_project_log_daily f
INNER JOIN dim_agency da ON f.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON f.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE f.IS_ACTIVE = 0
AND f.CUSTOMER_ID = #{customerId}
AND f.MONTH_ID = #{monthId}
GROUP BY f.AGENCY_ID ) a
GROUP BY da.ID ) a
LEFT JOIN
(SELECT f.AGENCY_ID,
(SELECT da.ID AS AGENCY_ID,
COUNT( f.ID ) AS "count"
FROM fact_origin_project_log_daily f
INNER JOIN dim_agency da ON f.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON f.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
( ACTION_CODE = 'close'
@ -354,7 +354,7 @@
AND f.IS_ACTIVE = 1
AND f.CUSTOMER_ID = #{customerId}
AND f.MONTH_ID = #{monthId}
GROUP BY f.AGENCY_ID ) b
GROUP BY da.ID ) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>
<select id="selectGridSatisfaction" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -388,11 +388,12 @@
FROM
(
SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
fm.ID,
IFNULL( IS_SATISFIED, 1 ) AS "score"
FROM
fact_origin_project_main_daily fm
dim_agency da
INNER JOIN fact_origin_project_main_daily fm ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
WHERE fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
AND fm.PROJECT_STATUS = 'closed'
@ -553,11 +554,12 @@
FROM
(
SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
fm.ID,
IFNULL( IS_SATISFIED, 1 ) AS "score"
FROM
fact_origin_project_main_daily fm
dim_agency da
INNER JOIN fact_origin_project_main_daily fm ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
WHERE fm.CUSTOMER_ID = #{customerId}
AND fm.PROJECT_STATUS = 'closed'
AND fm.ORIGIN = 'issue'
@ -571,20 +573,20 @@
IFNULL( b.count,
0 ) AS "count"
FROM
(SELECT f.AGENCY_ID,
(SELECT da.ID AS AGENCY_ID,
COUNT( f.ID ) AS "count"
FROM fact_origin_project_log_daily f
INNER JOIN dim_agency da ON f.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON f.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE f.IS_ACTIVE = 0
AND f.CUSTOMER_ID = #{customerId}
AND f.DATE_ID &lt;= #{dateId}
GROUP BY f.AGENCY_ID ) a
GROUP BY da.ID ) a
LEFT JOIN
(SELECT f.AGENCY_ID,
(SELECT da.ID AS AGENCY_ID,
COUNT( f.ID ) AS "count"
FROM fact_origin_project_log_daily f
INNER JOIN dim_agency da ON f.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON f.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
(ACTION_CODE = 'close'
@ -595,7 +597,7 @@
AND f.IS_ACTIVE = 1
AND f.CUSTOMER_ID = #{customerId}
AND f.DATE_ID &lt;= #{dateId}
GROUP BY f.AGENCY_ID ) b
GROUP BY da.ID ) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>
<select id="selectGridResponseDaily" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">

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

@ -197,25 +197,25 @@
IFNULL(b.count,0) AS "count"
FROM
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
GROUP BY
fm.AGENCY_ID) a
da.ID) a
LEFT JOIN
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
@ -223,7 +223,7 @@
AND fm.MONTH_ID = #{monthId}
AND fm.FINISH_ORG_IDS LIKE CONCAT('%', fm.AGENCY_ID,'%')
GROUP BY
fm.AGENCY_ID) b
da.ID) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>
<select id="getResolveProject" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -233,25 +233,25 @@
IFNULL(b.count,0) AS "count"
FROM
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.MONTH_ID = #{monthId}
GROUP BY
fm.AGENCY_ID) a
da.ID) a
LEFT JOIN
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
@ -259,7 +259,7 @@
AND fm.MONTH_ID = #{monthId}
AND fm.IS_RESOLVED = 'resolved'
GROUP BY
fm.AGENCY_ID) b
da.ID) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>
<select id="getGridResolveProject" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -858,25 +858,25 @@
IFNULL(b.count,0) AS "count"
FROM
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.DATE_ID &lt;= #{dateId}
GROUP BY
fm.AGENCY_ID) a
da.ID) a
LEFT JOIN
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
@ -884,7 +884,7 @@
AND fm.DATE_ID &lt;= #{dateId}
AND fm.FINISH_ORG_IDS LIKE CONCAT('%', fm.AGENCY_ID,'%')
GROUP BY
fm.AGENCY_ID) b
da.ID) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>
<select id="getResolveProjectDaily" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
@ -894,25 +894,25 @@
IFNULL(b.count,0) AS "count"
FROM
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.DATE_ID &lt;= #{dateId}
GROUP BY
fm.AGENCY_ID) a
da.ID) a
LEFT JOIN
(SELECT
fm.AGENCY_ID,
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.AGENCY_ID = da.ID
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
@ -920,7 +920,7 @@
AND fm.DATE_ID &lt;= #{dateId}
AND fm.IS_RESOLVED = 'resolved'
GROUP BY
fm.AGENCY_ID) b
da.ID) b
ON a.AGENCY_ID = b.AGENCY_ID
</select>

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/AgencyScoreDao.xml

@ -230,6 +230,7 @@
#{quarterId} AS quarterId,
#{yearId} AS yearId,
IFNULL(ROUND(AVG( fics.score ),6),0) AS score,
COUNT(1) AS sample_count,
sca.customer_id,
sca.pid AS parentId
FROM screen_customer_agency sca
@ -254,6 +255,7 @@
#{quarterId} AS quarterId,
#{yearId} AS yearId,
IFNULL(ROUND(AVG( fics.score ),6),0) AS score,
COUNT(1) AS sample_count,
sca.customer_id AS customerId,
(SELECT AGENCY_ID FROM screen_customer_agency WHERE AREA_CODE = #{areaCode} AND DEL_FLAG = 0) AS parentId
FROM screen_customer_agency sca

1
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/CommunityScoreDao.xml

@ -156,6 +156,7 @@
#{quarterId} AS quarterId,
#{yearId} AS yearId,
IFNULL(ROUND(AVG( fics.score ),6),0) AS score,
COUNT(1) AS sampleCount,
sca.customer_id,
sca.pid AS parentId
FROM screen_customer_agency sca

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcal/GridScoreDao.xml

@ -211,6 +211,7 @@
#{quarterId} as quarterId,
#{yearId} as yearId,
IFNULL(ROUND(AVG( figc.score ),6),0) AS score,
COUNT(1) AS sample_count,
sca.customer_id as customerId,
sca.pid AS parentId
FROM screen_customer_agency sca
@ -234,6 +235,7 @@
#{quarterId} as quarterId,
#{yearId} as yearId,
IFNULL(ROUND(AVG( figc.score ),6),0) AS score,
COUNT(1) AS sample_count,
sca.customer_id as customerId,
sca.pid AS parentId
FROM screen_customer_agency sca

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridStaffResultDTO.java

@ -18,4 +18,6 @@ public class GridStaffResultDTO implements Serializable {
private String staffId;
private String mobile;
}

96
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerStartPageDTO.java

@ -0,0 +1,96 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Data
public class CustomerStartPageDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 唯一标识
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 小程序所属端类型居民端: resi 工作端: work
*/
private String clientType;
/**
* 启动页文件url路径
*/
private String url;
/**
* 启动页展示时间单位秒
*/
private Integer time;
/**
* 启动页文件类型(图片 - image 视频 - video)
*/
private String type;
/**
* 删除标识0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

25
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/HomeStartPageFromDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 小程序-启动页查询-接口入参
* @Author sun
*/
@Data
public class HomeStartPageFromDTO implements Serializable {
private static final long serialVersionUID = -6163303184086480522L;
/**
* extAppId
*/
@NotBlank(message = "小程序Id不能为空", groups = {Start.class})
private String appId;
public interface Start extends CustomerClientShowGroup {}
}

49
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/SaveStartPageFromDTO.java

@ -0,0 +1,49 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 运营端-启动页查询-接口入参
* @Author sun
*/
@Data
public class SaveStartPageFromDTO implements Serializable {
private static final long serialVersionUID = -6163303184086480522L;
/**
* 客户ID
*/
@NotBlank(message = "客户Id不能为空", groups = {Save.class})
private String customerId;
/**
* 启动页文件url路径
*/
@NotBlank(message = "url路径不能为空", groups = {Save.class})
private String url;
/**
* 小程序所属端类型居民端: resi 工作端: work
*/
@NotBlank(message = "所属端类型不能为空", groups = {Save.class})
private String clientType;
/**
* 启动页展示时间单位秒
*/
@NotNull(message = "展示时长不能为空", groups = {Save.class})
@Min(value = 3, groups = {Save.class})
@Max(value = 10, groups = {Save.class})
private Integer time;
/**
* 启动页文件类型(图片 - image 视频 - video)
*/
@NotBlank(message = "文件类型不能为空", groups = {Save.class})
private String type;
public interface Save extends CustomerClientShowGroup {}
}

26
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/StartPageFromDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* 运营端-启动页查询-接口入参
* @Author sun
*/
@Data
public class StartPageFromDTO implements Serializable {
private static final long serialVersionUID = -6163303184086480522L;
/**
* 客户ID
*/
@NotBlank(message = "客户Id不能为空", groups = {Start.class})
private String customerId;
public interface Start extends CustomerClientShowGroup {}
}

31
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/HomeStartPageResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 小程序-启动页查询-接口入参
* @Author sun
*/
@Data
public class HomeStartPageResultDTO implements Serializable {
private static final long serialVersionUID = 2971689193155710437L;
/**
* 居民端启动页文件url路径
*/
private String resiUrl;
/**
* 居民端启动页展示时间单位秒
*/
private Integer resiTime;
/**
* 工作端启动页文件url路径
*/
private String workUrl;
/**
* 工作端启动页展示时间单位秒
*/
private Integer workTime;
}

47
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/StartPageResultDTO.java

@ -0,0 +1,47 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 运营端-启动页查询-接口入参
* @Author sun
*/
@Data
public class StartPageResultDTO implements Serializable {
private static final long serialVersionUID = 2971689193155710437L;
/**
* 启动页文件url路径
*/
private String url;
/**
* 小程序所属端类型居民端: resi 工作端: work
*/
private String clientType;
/**
* 启动页展示时间单位秒
*/
private Integer time;
/**
* 暂时没用启动页文件类型(图片 - image 视频 - video)
*/
private String type;
/**
* 默认值
*/
private String defUrl;
/**
* 默认值
*/
private String defClientType;
/**
* 默认值
*/
private Integer defTime;
/**
* 默认值
*/
private String defType;
}

6
epmet-module/oper-customize/oper-customize-server/pom.xml

@ -77,6 +77,12 @@
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-third-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

138
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerStartPageController.java

@ -0,0 +1,138 @@
/**
* 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.controller;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.CustomerStartPageDTO;
import com.epmet.dto.form.HomeStartPageFromDTO;
import com.epmet.dto.form.SaveStartPageFromDTO;
import com.epmet.dto.form.StartPageFromDTO;
import com.epmet.dto.result.HomeStartPageResultDTO;
import com.epmet.dto.result.StartPageResultDTO;
import com.epmet.excel.CustomerStartPageExcel;
import com.epmet.service.CustomerStartPageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@RestController
@RequestMapping("customerstartpage")
public class CustomerStartPageController {
@Autowired
private CustomerStartPageService customerStartPageService;
@GetMapping("page")
public Result<PageData<CustomerStartPageDTO>> page(@RequestParam Map<String, Object> params) {
PageData<CustomerStartPageDTO> page = customerStartPageService.page(params);
return new Result<PageData<CustomerStartPageDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<CustomerStartPageDTO> get(@PathVariable("id") String id) {
CustomerStartPageDTO data = customerStartPageService.get(id);
return new Result<CustomerStartPageDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody CustomerStartPageDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
customerStartPageService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody CustomerStartPageDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
customerStartPageService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
customerStartPageService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<CustomerStartPageDTO> list = customerStartPageService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, CustomerStartPageExcel.class);
}
/**
* @param fromDTO
* @Author sun
* @Description 运营端-启动页查询
**/
@PostMapping("startpage")
public Result<List<StartPageResultDTO>> startPage(@RequestBody StartPageFromDTO fromDTO) {
ValidatorUtils.validateEntity(fromDTO, StartPageFromDTO.Start.class);
return new Result<List<StartPageResultDTO>>().ok(customerStartPageService.startPage(fromDTO));
}
/**
* @param formDTO
* @Author sun
* @Description 运营端-启动页保存
**/
@PostMapping("savestartpage")
public Result saveStartPage(@RequestBody SaveStartPageFromDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SaveStartPageFromDTO.Save.class);
if (!"resi".equals(formDTO.getClientType()) && !"work".equals(formDTO.getClientType())) {
throw new RenException("参数错误,所属端类型值错误");
}
customerStartPageService.saveStartPage(formDTO);
return new Result();
}
/**
* @param fromDTO
* @Author sun
* @Description 小程序-启动页查询
**/
@PostMapping("homestartpage")
public Result<HomeStartPageResultDTO> homeStartPage(@RequestBody HomeStartPageFromDTO fromDTO) {
ValidatorUtils.validateEntity(fromDTO, HomeStartPageFromDTO.Start.class);
return new Result<HomeStartPageResultDTO>().ok(customerStartPageService.homeStartPage(fromDTO));
}
}

48
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerStartPageDao.java

@ -0,0 +1,48 @@
/**
* 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.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.StartPageResultDTO;
import com.epmet.entity.CustomerStartPageEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Mapper
public interface CustomerStartPageDao extends BaseDao<CustomerStartPageEntity> {
/**
* @Author sun
* @Description 查询客户启动页配置数据
**/
List<StartPageResultDTO> selectByCustomerId(@Param("customerId") String customerId);
/**
* @Author sun
* @Description 根据客户Id删除可能存在的配置数据
**/
int delByCustomerId(@Param("customerId") String customerId, @Param("clientType") String clientType);
}

66
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerStartPageEntity.java

@ -0,0 +1,66 @@
/**
* 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.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("customer_start_page")
public class CustomerStartPageEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 小程序所属端类型居民端: resi 工作端: work
*/
private String clientType;
/**
* 启动页文件url路径
*/
private String url;
/**
* 启动页展示时间单位秒
*/
private Integer time;
/**
* 启动页文件类型(图片 - image 视频 - video)
*/
private String type;
}

71
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/excel/CustomerStartPageExcel.java

@ -0,0 +1,71 @@
/**
* 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.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Data
public class CustomerStartPageExcel {
@Excel(name = "唯一标识")
private String id;
@Excel(name = "客户ID")
private String customerId;
@Excel(name = "小程序所属端类型【居民端: resi 工作端: work】")
private String clientType;
@Excel(name = "启动页文件url路径")
private String url;
@Excel(name = "启动页展示时间,单位秒")
private Integer time;
@Excel(name = "启动页文件类型(图片 - image、 视频 - video)")
private String type;
@Excel(name = "删除标识:0.未删除 1.已删除")
private Integer delFlag;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
}

47
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/redis/CustomerStartPageRedis.java

@ -0,0 +1,47 @@
/**
* 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.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Component
public class CustomerStartPageRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

121
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerStartPageService.java

@ -0,0 +1,121 @@
/**
* 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.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.CustomerStartPageDTO;
import com.epmet.dto.form.HomeStartPageFromDTO;
import com.epmet.dto.form.SaveStartPageFromDTO;
import com.epmet.dto.form.StartPageFromDTO;
import com.epmet.dto.result.HomeStartPageResultDTO;
import com.epmet.dto.result.StartPageResultDTO;
import com.epmet.entity.CustomerStartPageEntity;
import java.util.List;
import java.util.Map;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
public interface CustomerStartPageService extends BaseService<CustomerStartPageEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<CustomerStartPageDTO>
* @author generator
* @date 2021-06-21
*/
PageData<CustomerStartPageDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<CustomerStartPageDTO>
* @author generator
* @date 2021-06-21
*/
List<CustomerStartPageDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return CustomerStartPageDTO
* @author generator
* @date 2021-06-21
*/
CustomerStartPageDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-06-21
*/
void save(CustomerStartPageDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-06-21
*/
void update(CustomerStartPageDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-06-21
*/
void delete(String[] ids);
/**
* @param fromDTO
* @Author sun
* @Description 运营端-启动页查询
**/
List<StartPageResultDTO> startPage(StartPageFromDTO fromDTO);
/**
* @param formDTO
* @Author sun
* @Description 运营端-启动页保存
**/
void saveStartPage(SaveStartPageFromDTO formDTO);
/**
* @param fromDTO
* @Author sun
* @Description 小程序-启动页查询
**/
HomeStartPageResultDTO homeStartPage(HomeStartPageFromDTO fromDTO);
}

242
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerStartPageServiceImpl.java

@ -0,0 +1,242 @@
/**
* 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.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.CustomerStartPageDao;
import com.epmet.dto.CustomerStartPageDTO;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.form.HomeStartPageFromDTO;
import com.epmet.dto.form.SaveStartPageFromDTO;
import com.epmet.dto.form.StartPageFromDTO;
import com.epmet.dto.result.HomeStartPageResultDTO;
import com.epmet.dto.result.StartPageResultDTO;
import com.epmet.entity.CustomerStartPageEntity;
import com.epmet.redis.CustomerStartPageRedis;
import com.epmet.service.CustomerStartPageService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* 客户小程序启动页配置
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-21
*/
@Service
public class CustomerStartPageServiceImpl extends BaseServiceImpl<CustomerStartPageDao, CustomerStartPageEntity> implements CustomerStartPageService {
private static final Logger logger = LoggerFactory.getLogger(CustomerStartPageServiceImpl.class);
@Autowired
private CustomerStartPageRedis customerStartPageRedis;
@Override
public PageData<CustomerStartPageDTO> page(Map<String, Object> params) {
IPage<CustomerStartPageEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, CustomerStartPageDTO.class);
}
@Override
public List<CustomerStartPageDTO> list(Map<String, Object> params) {
List<CustomerStartPageEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, CustomerStartPageDTO.class);
}
private QueryWrapper<CustomerStartPageEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<CustomerStartPageEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public CustomerStartPageDTO get(String id) {
CustomerStartPageEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, CustomerStartPageDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(CustomerStartPageDTO dto) {
CustomerStartPageEntity entity = ConvertUtils.sourceToTarget(dto, CustomerStartPageEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(CustomerStartPageDTO dto) {
CustomerStartPageEntity entity = ConvertUtils.sourceToTarget(dto, CustomerStartPageEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param fromDTO
* @Author sun
* @Description 运营端-启动页查询
**/
@Override
public List<StartPageResultDTO> startPage(StartPageFromDTO fromDTO) {
List<StartPageResultDTO> resultList = new ArrayList<>();
//1.按客户id查询客户数据
resultList = baseDao.selectByCustomerId(fromDTO.getCustomerId());
if (null == resultList || resultList.size() < NumConstant.ONE) {
StartPageResultDTO resi = new StartPageResultDTO();
resi.setClientType("resi");
resultList.add(resi);
StartPageResultDTO work = new StartPageResultDTO();
work.setClientType("work");
resultList.add(work);
}else {//缺失数据的补齐,保证返回两条
Map<String, String> map = resultList.stream().collect(Collectors.toMap(StartPageResultDTO::getClientType,StartPageResultDTO::getClientType,(value1,value2)->{
return value2;
}));
if(!map.containsKey("resi")){
StartPageResultDTO resi = new StartPageResultDTO();
resi.setClientType("resi");
resultList.add(resi);
}
if(!map.containsKey("work")){
StartPageResultDTO work = new StartPageResultDTO();
work.setClientType("work");
resultList.add(work);
}
}
//2.查询默认客户数据
List<StartPageResultDTO> defList = baseDao.selectByCustomerId("default");
//3.封装数据并返回
resultList.forEach(re -> {
defList.forEach(d -> {
if (re.getClientType().equals(d.getClientType())) {
re.setDefUrl(d.getUrl());
re.setDefClientType(d.getClientType());
re.setDefTime(d.getTime());
re.setDefType(d.getType());
}
});
});
return resultList;
}
/**
* @param formDTO
* @Author sun
* @Description 运营端-启动页保存
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveStartPage(SaveStartPageFromDTO formDTO) {
//1.按客户Id删除可能存在的历史数据
baseDao.delByCustomerId(formDTO.getCustomerId(), formDTO.getClientType());
//2.新增客户设置数据
CustomerStartPageEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerStartPageEntity.class);
insert(entity);
}
/**
* @param fromDTO
* @Author sun
* @Description 小程序-启动页查询
**/
@Override
public HomeStartPageResultDTO homeStartPage(HomeStartPageFromDTO fromDTO) {
HomeStartPageResultDTO resultDTO = new HomeStartPageResultDTO();
//1.调用third服务,根据appId查询客户Id
PaCustomerDTO dto = getCustomerInfo(fromDTO.getAppId());
//2.根据客户Id查询客户启动页数据
List<StartPageResultDTO> defList = baseDao.selectByCustomerId(dto.getId());
if(null==defList||defList.size()<NumConstant.ONE){
defList = baseDao.selectByCustomerId("default");
}
//3.封装数据并返回
defList.forEach(d -> {
if ("resi".equals(d.getClientType())) {
resultDTO.setResiUrl(d.getUrl());
resultDTO.setResiTime(d.getTime());
}
if ("work".equals(d.getClientType())) {
resultDTO.setWorkUrl(d.getUrl());
resultDTO.setWorkTime(d.getTime());
}
});
return resultDTO;
}
/**
* @param appId
* @Description 获取客户信息
* @author sun
*/
public PaCustomerDTO getCustomerInfo(String appId) {
String url = "https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/";
JSONObject jsonObject = new JSONObject();
String data = HttpClientManager.getInstance().sendPostByJSON(url + appId, JSON.toJSONString(jsonObject)).getData();
logger.info("CustomerStartPageServiceImpl.getCustomerInfo:httpclient->url:" + url + ",结果->" + data);
JSONObject toResult = JSON.parseObject(data);
Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class);
if (null != toResult.get("code")) {
mapToResult.setCode(((Integer) toResult.get("code")).intValue());
}
if (!mapToResult.success()) {
logger.error(String.format("根据appId查询客户Id失败,对应appId->" + appId));
throw new RenException(mapToResult.getMsg());
}
Object PublicCustomerResultDTO = mapToResult.getData();
JSONObject json = JSON.parseObject(PublicCustomerResultDTO.toString());
Map<String, Object> map = (Map) json.get("customer");
PaCustomerDTO customer = ConvertUtils.mapToEntity(map, PaCustomerDTO.class);
logger.info("小程序登陆third服务获取客户用户信息PaCustomerDTO->" + customer);
return customer;
}
}

18
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.11__customer_start_page.sql

@ -0,0 +1,18 @@
CREATE TABLE `customer_start_page` (
`ID` varchar(64) NOT NULL COMMENT '唯一标识',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
`CLIENT_TYPE` varchar(32) NOT NULL COMMENT '小程序所属端类型【居民端: resi 工作端: work】',
`URL` varchar(256) NOT NULL COMMENT '启动页文件url路径',
`TIME` int(11) NOT NULL DEFAULT '0' COMMENT '启动页展示时间,单位秒',
`TYPE` varchar(32) NOT NULL COMMENT '启动页文件类型(图片 - image、 视频 - video)',
`DEL_FLAG` int(11) NOT NULL DEFAULT '0' COMMENT '删除标识:0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='客户小程序启动页配置';
INSERT INTO `customer_start_page` VALUES ('3c3a2860d22d11ebbc490050568f8cf7', 'default', 'resi', 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20210621/a6e19dd7a39646b58ba29700d7d7dd64.jpg', '5', 'image', '0', '0', 'APP_USER', '2021-06-21 09:07:31', 'APP_USER', '2021-06-21 09:07:31');
INSERT INTO `customer_start_page` VALUES ('45fb43a2d22d11ebbc490050568f8cf7', 'default', 'work', 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20210621/a6e19dd7a39646b58ba29700d7d7dd64.jpg', '5', 'image', '0', '0', 'APP_USER', '2021-06-21 09:07:31', 'APP_USER', '2021-06-21 09:07:31');

28
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerStartPageDao.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.CustomerStartPageDao">
<select id="selectByCustomerId" resultType="com.epmet.dto.result.StartPageResultDTO">
SELECT
url AS url,
client_type AS clientType,
time AS time,
type AS type
FROM
customer_start_page
WHERE
del_flag = '0'
AND customer_id = #{customerId}
</select>
<delete id="delByCustomerId">
DELETE
FROM
customer_start_page
WHERE
customer_id = #{customerId}
AND client_type = #{clientType}
</delete>
</mapper>

6
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java

@ -191,7 +191,11 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
if (PatrolConstant.END.equals(record.getStatus())) {
throw new RenException(EpmetErrorCode.PATROL_REPEATED_SUBMIT_ERROR.getCode());
}
if (record.getPatrolStartTime().compareTo(Objects.requireNonNull(DateUtils.parse(formDTO.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN))) > 0) {
Date endTime = DateUtils.parse(formDTO.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN);
if (null == endTime) {
throw new RenException(EpmetErrorCode.TIME_FORMAT_ERROR.getCode());
}
if (record.getPatrolStartTime().compareTo(endTime) > 0) {
throw new RenException(EpmetErrorCode.PATROL_END_TIME_ERROR.getCode());
}
record.setActrualEndTime(new Date());

4
epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml

@ -199,9 +199,11 @@
<foreach collection="forms" item="s" separator=" UNION ALL ">
SELECT
#{s.gridId} as gridId,
sr.STAFF_ID
sr.STAFF_ID,
cs.MOBILE
FROM staff_role sr
LEFT JOIN gov_staff_role gsr ON gsr.ID = sr.ROLE_ID AND gsr.DEL_FLAG = 0
LEFT JOIN customer_staff cs ON cs.USER_ID = sr.STAFF_ID AND cs.customer_id = sr.customer_id AND cs.DEL_FLAG = 0
WHERE sr.DEL_FLAG = 0
AND gsr.ROLE_KEY = 'grid_member'
AND sr.STAFF_ID = #{s.staffId}

Loading…
Cancel
Save