Browse Source

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

feature/evaluate
wangxianzhang 3 years ago
parent
commit
4b96276e9c
  1. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/OrgOrStaffMQMsg.java
  2. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java
  3. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  4. 1
      epmet-gateway/src/main/resources/bootstrap.yml
  5. 17
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  6. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  7. 5
      epmet-module/epmet-job/epmet-job-server/pom.xml
  8. 17
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java
  9. 31
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java
  10. 41
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java
  11. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java
  12. 6
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java
  13. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java
  14. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java
  15. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java
  16. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  17. 13
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java
  18. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  19. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  20. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  21. 29
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  22. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
  23. 2
      epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.40__add_column.sql
  24. 1
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  25. 24
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml
  26. 73
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java
  27. 26
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventProcessListResultDTO.java
  28. 106
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java
  29. 64
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  30. 1
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  31. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java
  32. 126
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java
  33. 1
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  34. 13
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  35. 121
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  36. 15
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  37. 2
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql
  38. 117
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  39. 6
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml
  40. 5
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/ExractGridInfoPingYinFormDTO.java
  41. 9
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java
  42. 75
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridInfoPingyinServiceImpl.java
  43. 71
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java
  44. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java
  45. 25
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java
  46. 22
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java
  47. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  48. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  49. 52
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  50. 11
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml
  51. 2
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/OrgOrStaffMQMsg.java

@ -22,6 +22,11 @@ public class OrgOrStaffMQMsg implements Serializable {
//删除网格:grid_delete;删除组织:agency_delete
private String type;
/**
* org原有的Code
*/
private String oldCode;
//工作人员Id集合
private List<String> staffIdList;

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java

@ -143,4 +143,9 @@ public interface ServiceConstant {
* 聚合查询服务
*/
String DATA_AGGREGATOR_SERVER = "data-aggregator-server";
/**
* 插件pli-power服务
*/
String PLI_POWER_SERVER = "pli-power-base-server";
}

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

@ -259,6 +259,7 @@ public enum EpmetErrorCode {
NOT_REGEIST_RESI(8927,"未注册居民"),
UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"),
IC_VACCINE(8929,"已存在相同记录,请去修改原有记录"),
NOT_MATCH_IC_USER_ERROR(8930,"请联系社区工作人员"),
MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"),

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

@ -502,6 +502,7 @@ epmet:
# 内部认证url白名单(在白名单中的,就不会再校验登录了)
internalAuthUrlsWhiteList:
- /epmetuser/customerstaff/customerlist
- /epmetuser/icresiuser/icUserMatchGrid
- /auth/wechat/**
- /**/druid/**
- /gov/project/project/platformcallback

17
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -1194,12 +1194,8 @@ public class GovOrgServiceImpl implements GovOrgService {
dto.setOrgId(grid.getId());
dto.setOrgType(OrgConstant.GRID);
dto.setOrgName(grid.getGridName());
if (projectMap.containsKey(grid.getId())) {
dto.setProjectCount(projectMap.get(grid.getId()));
}
if (closedMap.containsKey(grid.getId())) {
dto.setClosedCount(closedMap.get(grid.getId()));
}
dto.setProjectCount(projectMap.getOrDefault(grid.getId(), NumConstant.ZERO));
dto.setClosedCount(closedMap.getOrDefault(grid.getId(), NumConstant.ZERO));
if (memberMap.containsKey(grid.getId())) {
dto.setMemberCount(Math.toIntExact(memberMap.get(grid.getId())));
if (NumConstant.ZERO != dto.getMemberCount()) {
@ -1302,12 +1298,9 @@ public class GovOrgServiceImpl implements GovOrgService {
//统计关闭项目数
Map<String, Integer> closedMap = govProjectService.getMemberClosedProjectMap(formDTO);
result.getList().forEach(item -> {
if (projectMap.containsKey(item.getStaffId())) {
item.setProjectCount(projectMap.get(item.getStaffId()));
}
if (projectMap.containsKey(item.getStaffId())) {
item.setClosedCount(closedMap.get(item.getStaffId()));
}
item.setProjectCount(projectMap.getOrDefault(item.getStaffId(), NumConstant.ZERO));
item.setClosedCount(closedMap.getOrDefault(item.getStaffId(), NumConstant.ZERO));
if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(item.getOrgId());
if (null != agencyInfo) {

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

@ -716,7 +716,7 @@ public class GovProjectServiceImpl implements GovProjectService {
*/
@Override
public Map<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getMemberProjectCount(formDTO);
List<OrgCountDTO> list = projectDao.getMemberClosedProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}

5
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -43,6 +43,11 @@
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>pli-power-base-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

17
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java

@ -0,0 +1,17 @@
package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
public interface PliPowerService {
/**
* 访客登出
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author zhy
* @date 2022/5/30 10:25
*/
Result visitorLogout(VisitorLogoutFormDTO formDTO);
}

31
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java

@ -0,0 +1,31 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
import com.epmet.plugin.power.feign.PliPowerFeignClient;
import com.epmet.service.PliPowerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description
* @ClassName StatsUserServiceImpl
* @Auth wangc
* @Date 2020-06-29 09:41
*/
@Service
public class PliPowerServiceImpl implements PliPowerService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PliPowerFeignClient pliPowerFeignClient;
@Override
public Result visitorLogout(VisitorLogoutFormDTO formDTO) {
return pliPowerFeignClient.visitorLogout(formDTO);
}
}

41
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java

@ -0,0 +1,41 @@
package com.epmet.task;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
import com.epmet.service.PliPowerService;
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.Component;
/**
* 访客登出
*
* @author zhy
* @date 2022/5/30 10:23
*/
@Component("pliVisitorLogoutTask")
public class PliVisitorLogoutTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PliPowerService pliPowerService;
@Override
public void run(String params) {
logger.info("VisitorLogoutTask定时任务正在执行,参数为:{}", params);
VisitorLogoutFormDTO formDTO = new VisitorLogoutFormDTO();
if (StringUtils.isNotBlank(params)) {
formDTO = JSON.parseObject(params, VisitorLogoutFormDTO.class);
}
Result result = pliPowerService.visitorLogout(formDTO);
if (result.success()) {
logger.info("VisitorLogoutTask定时任务执行成功");
} else {
logger.error("VisitorLogoutTask定时任务执行失败:" + result.getMsg());
}
}
}

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java

@ -155,4 +155,9 @@ public class CustomerGridDTO implements Serializable {
* 弃用1正常使用0
*/
private Integer abandonFlag;
/**
* 网格排序
*/
private Integer sort;
}

6
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java

@ -25,6 +25,7 @@ public class EditGridFormDTO implements Serializable {
/**
* gridId 网格id
*/
@NotBlank(message = "网格ID不能为空")
private String gridId;
/**
@ -77,4 +78,9 @@ public class EditGridFormDTO implements Serializable {
* 中心点位位置
*/
private String centerAddress;
/**
* 网格排序
*/
private Integer sort;
}

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java

@ -86,7 +86,7 @@ public class IcBulidingAddFormDTO implements Serializable {
/**
* 排序
*/
@NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class})
// @NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class})
private BigDecimal sort = NumConstant.ZERO_DECIMAL;
/**

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java

@ -91,4 +91,9 @@ public class GridDetailResultDTO implements Serializable {
*/
private String mobile = "";
/**
* 网格排序
*/
private Integer gridSort = 0;
}

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

@ -41,4 +41,6 @@ public class StaffListResultDTO implements Serializable {
*/
private String mobile="";
private Boolean staffEnabledStatus = false;
}

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -177,16 +177,7 @@ public class AgencyController {
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO, EditAgencyFormDTO.DefaultUserShowGroup.class, EditAgencyFormDTO.AddUserInternalGroup.class);
Result result = agencyService.editAgency(formDTO);
//2021-10-18 推送mq,数据同步到中介库 start【中介库只放了组织的名称、级别,所以涉及批量修改pname的操作不涉及同步中间库】
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDTO.getCustomerId());
mq.setOrgId(formDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
//发送mq 消息迁移至service
return result;
}

13
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java

@ -15,6 +15,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.CustomerGridService;
import com.epmet.service.CustomerStaffAgencyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -26,6 +27,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("grid")
@Slf4j
public class GridController {
@Autowired
@ -79,16 +81,7 @@ public class GridController {
editGridFormDTO.setCustomerId(tokenDto.getCustomerId());
Result result = customerGridService.editGrid(tokenDto,editGridFormDTO);
//2021-10-18 推送mq,数据同步到中介库 start
if (result.success()) {
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDto.getCustomerId());
mq.setOrgId(editGridFormDTO.getGridId());
mq.setOrgType("grid");
mq.setType("grid_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
}
//2021-10-18 end
//发送mq 消息 移至service
return result;
}

17
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
@ -52,13 +53,14 @@ import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.entity.CustomerDepartmentEntity;
import com.epmet.entity.CustomerGridEntity;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCrmFeignClient;
import com.epmet.redis.CustomerAgencyRedis;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.AgencyService;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.CustomerOrgParameterService;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Joiner;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -71,7 +73,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -107,6 +108,8 @@ public class AgencyServiceImpl implements AgencyService {
private IcBuildingDao icBuildingDao;
@Autowired
private CustomerDepartmentDao customerDepartmentDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
/**
* @param formDTO
@ -240,6 +243,16 @@ public class AgencyServiceImpl implements AgencyService {
//5.redis缓存
customerAgencyRedis.delete(formDTO.getAgencyId());
//2021-10-18 推送mq,数据同步到中介库 start【中介库只放了组织的名称、级别,所以涉及批量修改pname的操作不涉及同步中间库】
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(originalEntity.getCustomerId());
mq.setOrgId(formDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_change");
mq.setOldCode(originalEntity.getCode());
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
//6.一些下拉组织树的缓存要清除掉
String orgTreeCachePrexKey = RedisKeys.getOrgTreeCachePrexKey(formDTO.getCustomerId());
customerAgencyRedis.deleteByPrex(orgTreeCachePrexKey);

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java

@ -202,7 +202,7 @@ public class BuildingServiceImpl implements BuildingService {
// agencyIdList.add(customerAgency.getId());
LambdaQueryWrapper<CustomerGridEntity> gridWrapper = new LambdaQueryWrapper<>();
gridWrapper.in(CustomerGridEntity::getPid, agencyIdList);
gridWrapper.last("ORDER BY CAST(GRID_NAME AS SIGNED),CONVERT(GRID_NAME using gbk)");
gridWrapper.last("ORDER BY sort,CAST(GRID_NAME AS SIGNED),CONVERT(GRID_NAME using gbk)");
List<CustomerGridEntity> customerGridList = customerGridDao.selectList(gridWrapper);
if (CollectionUtils.isEmpty(customerGridList)) {

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -325,6 +325,7 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
sf.setStaffName(stf.getStaffName());
sf.setStaffHeadPhoto(stf.getStaffHeadPhoto());
sf.setGender(stf.getGender());
sf.setStaffEnabledStatus(true);
}
});
//人员角色信息
@ -374,7 +375,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
});
});
});
resultDTO.setAgencyStaffList(agencyStaffList);
Map<Boolean, List<StaffListResultDTO>> collect = agencyStaffList.stream().collect(Collectors.groupingBy(StaffListResultDTO::getStaffEnabledStatus));
resultDTO.setAgencyStaffList(CollectionUtils.isNotEmpty(collect.get(true)) ? collect.get(true) : new ArrayList<>());
resultDTO.setDepartmentList(departmentList);
resultDTO.setGridList(gridList);
return resultDTO;

29
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java

@ -55,7 +55,6 @@ import com.epmet.entity.CustomerGridEntity;
import com.epmet.entity.CustomerStaffGridEntity;
import com.epmet.entity.StaffOrgRelationEntity;
import com.epmet.feign.*;
import com.epmet.resi.partymember.feign.ResiPartyMemberOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.CustomerGridService;
@ -111,10 +110,6 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Autowired
private GovProjectOpenFeignClient govProjectOpenFeignClient;
@Autowired
private ResiPartyMemberOpenFeignClient resiPartyMemberOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@ -331,8 +326,12 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
@Override
@Transactional(rollbackFor = Exception.class)
public Result editGrid(TokenDto tokenDto, EditGridFormDTO editGridFormDTO) {
AddGridResultDTO gridId = baseDao.selectGridIdByGridName(editGridFormDTO.getGridName(), editGridFormDTO.getAgencyId(), editGridFormDTO.getGridId());
if (gridId!=null){
CustomerGridEntity gridEntity = baseDao.selectById(editGridFormDTO.getGridId());
if(gridEntity == null){
return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode());
}
AddGridResultDTO gridInfo = baseDao.selectGridIdByGridName(editGridFormDTO.getGridName(), editGridFormDTO.getAgencyId(), editGridFormDTO.getGridId());
if (gridInfo!=null){
return new Result().error(EpmetErrorCode.NOT_ADD_GRID.getCode());
}
CustomerGridDTO customerGridDTO = new CustomerGridDTO();
@ -344,6 +343,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
customerGridDTO.setGridType(editGridFormDTO.getGridType());
customerGridDTO.setContacts(editGridFormDTO.getContacts());
customerGridDTO.setMobile(editGridFormDTO.getMobile());
customerGridDTO.setSort(editGridFormDTO.getSort());
if(StringUtils.isNotBlank(editGridFormDTO.getLongitude())){
customerGridDTO.setLongitude(editGridFormDTO.getLongitude());
}
@ -352,6 +352,19 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
}
customerGridDTO.setCenterAddress(editGridFormDTO.getCenterAddress());
baseDao.editGrid(customerGridDTO);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDto.getCustomerId());
mq.setOrgId(editGridFormDTO.getGridId());
mq.setOrgType("grid");
mq.setType("grid_change");
mq.setOldCode(gridEntity.getCode());
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
//一些下拉组织树的缓存要清除掉
String orgTreeCachePrexKey = RedisKeys.getOrgTreeCachePrexKey(tokenDto.getCustomerId());
redisUtils.deleteByPrex(orgTreeCachePrexKey);
@ -928,7 +941,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
}
LambdaQueryWrapper<CustomerGridEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerGridEntity::getPid, agencyId);
wrapper.last("ORDER BY CONVERT ( GRID_NAME USING gbk ) ASC");
wrapper.last("ORDER BY sort,CONVERT ( GRID_NAME USING gbk ) desc");
List<CustomerGridEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();

6
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java

@ -51,7 +51,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.Date;
@ -107,10 +106,11 @@ public class DepartmentServiceImpl implements DepartmentService {
Result<AddDepartmentResultDTO> result = new Result<AddDepartmentResultDTO>();
AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO();
CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class);
if (formDTO.getTotalUser() > NumConstant.ZERO) {
if (null != formDTO.getTotalUser() && formDTO.getTotalUser() > NumConstant.ZERO) {
entity.setTotalUser(formDTO.getTotalUser());
}else{
entity.setTotalUser(NumConstant.ZERO);
}
entity.setTotalUser(NumConstant.ZERO);
//1:查询当前组织机构信息,获取客户Id
CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getAgencyId());
entity.setCustomerId(parentEntity.getCustomerId());

2
epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.40__add_column.sql

@ -0,0 +1,2 @@
ALTER TABLE `epmet_gov_org`.`customer_grid`
ADD COLUMN `sort` int(11) NULL COMMENT '网格排序' AFTER `MOBILE`;

1
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -371,6 +371,7 @@
WHERE
cg.DEL_FLAG = '0'
AND cg.PID =#{agencyId}
order by cg.sort
</select>
<select id="selectSubAgencyByPid" resultMap="treeMap">

24
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml

@ -196,7 +196,8 @@
`code` AS 'code',
grid_type AS 'gridType',
contacts AS 'contacts',
mobile AS 'mobile'
mobile AS 'mobile',
sort AS gridSort
FROM
customer_grid
WHERE
@ -256,6 +257,9 @@
<if test="centerAddress != null and centerAddress !=''">
CENTER_ADDRESS= #{centerAddress},
</if>
<if test="sort != null and sort != ''">
sort = #{sort},
</if>
UPDATED_TIME=NOW()
where
id = #{id}
@ -314,7 +318,7 @@
DEL_FLAG = '0'
AND ABANDON_FLAG='0'
AND PID = #{agencyId}
ORDER BY CREATED_TIME DESC
ORDER BY sort,grid_name,CREATED_TIME DESC
<if test="null != pageSize and pageSize > 0">
LIMIT #{pageSize}
</if>
@ -417,6 +421,8 @@
WHERE del_flag = '0'
and ABANDON_FLAG='0'
AND pid = #{agencyId}
order by
sort,grid_name
</select>
<select id="selectAgencyGridMsgList" resultType="com.epmet.dto.result.AgencyGridList">
@ -440,6 +446,8 @@
AND ca.del_flag = '0'
and cg.ABANDON_FLAG='0'
AND cg.pid = #{agencyId}
order by
cg.sort,cg.grid_name
</select>
<!-- 单客户-根据城市地区码前四位匹配到城市下所有网格 -->
@ -474,8 +482,10 @@
</if>
AND grid.customer_id = #{customerId}
ORDER BY
grid.customer_id,
CONVERT ( gridName USING gbk ) ASC
grid.sort,
CONVERT ( gridName USING gbk ) ASC,
grid.customer_id
LIMIT #{pageNo}, #{pageSize}
</select>
@ -488,7 +498,9 @@
SELECT
a.id AS grid_id,
a.customer_id,
concat( agency.fullname, '-', a.grid_name ) AS gridName
concat( agency.fullname, '-', a.grid_name ) AS gridName,
a.sort as sort,
agency.fullname as fullName
FROM
CUSTOMER_GRID a
LEFT JOIN (
@ -512,7 +524,7 @@
and a.ABANDON_FLAG='0'
AND a.customer_id = #{customerId}
) AS c
ORDER BY CONVERT ( gridName USING gbk ) ASC
ORDER BY fullName,c.sort,CONVERT ( gridName USING gbk ) ASC
LIMIT #{pageNo}, #{pageSize}
</select>

73
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java

@ -0,0 +1,73 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
public class OrgProjectListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -3317804468566708838L;
/**
* 组织/网格Id
*/
private String orgId;
/**
* 组织agency 网格grid
*/
private String orgType;
/**
* 上报渠道 来源议题issue 项目立项:agency 事件:ic_event 工作人员上报:work_event
*/
private String origin;
/**
* 上报人姓名
*/
private String staffName;
/**
* 手机号
*/
private String mobile;
//手机号对应工作人员Id集合
private List<String> staffIds;
/**
* 事件内容
*/
private String backGround;
/**
* 事件类型 一类二类Id集合
*/
private List<String> firstIdList;
private List<String> secondIdList;
/**
* 事件状态 处理中 pending已结案 closed
*/
private String status;
/**
* 起始上报时间 精确到秒
*/
private String startTime;
/**
* 终止上报时间 精确到秒
*/
private String endTime;
/**
* 处置选项 筛选自己参与的项目 有值就按staffId查
*/
private String staffId;
/**
* 分页参数
*/
private Integer pageNo = 1;
private Integer pageSize = 20;
private Boolean isPage = true;
//token中信息
private String userId;
private String customerId;
}

26
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventProcessListResultDTO.java

@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
@ -16,6 +15,10 @@ public class IcEventProcessListResultDTO implements Serializable {
private static final long serialVersionUID = 5762152044573235897L;
/**
* 项目ID
*/
private String projectId;
/**
* 进展Id
*/
@ -39,6 +42,26 @@ public class IcEventProcessListResultDTO implements Serializable {
* 公开答复
*/
private String publicReply;
/**
* 是否发送到外部系统 0否 1是
*/
private Integer isSend;
/**
* 内部备注
*/
private String internalRemark;
/**
* 子节点
*/
private List<SubProcessDTO> subProcess;
/**
* 公开答复附件
*/
private List<PublicAndInternalFileResultDTO> publicFile;
/**
* 内部备注附件
*/
private List<PublicAndInternalFileResultDTO> internalFile;
/**
* 协办单位类型1社区自组织2联建单位
*/
@ -69,4 +92,5 @@ public class IcEventProcessListResultDTO implements Serializable {
*/
private String actualServiceTime;
}

106
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java

@ -0,0 +1,106 @@
package com.epmet.dto.result;
import com.epmet.dto.form.FileDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class OrgProjectListResultDTO implements Serializable {
private static final long serialVersionUID = 2374701362057175388L;
/**
* 项目ID
*/
private String projectId;
/**
* 所属组织ID
*/
private String agencyId;
/**
* 上报渠道 agency:网格上报 ic_event:居民上报 work_event:巡查上报 issue:议题上报
*/
private String origin;
/**
* 一级分类
*/
private String firstName;
private String firstId;
/**
* 二级分类
*/
private String secondName;
private String secondId;
/**
* 事件标题
*/
private String title;
/**
* 所属网格
*/
private String gridName;
private String gridId;
/**
* 地址
*/
private String address;
/**
* 报事人
*/
private String staffName;
private String staffId;
/**
* 上报人电话
*/
private String mobile;
/**
* 上报时间
*/
private String createdTime;
/**
* 事件内容
*/
private String backGround;
/**
* 结案说明
*/
private String publicReply;
/**
* 办结时间
*/
private String endTime;
/**
* 办结部门
*/
private String departmentName;
/**
* 处理建议[创建节点的公开答复]
*/
private String createPublicReply;
/**
* 图片url集合
*/
private List<FileDTO> urlList;
private String imageUrl;
/**
* 状态 处理中 pending已结案 closed
*/
private String status;
private String statusValue;
/**
* 是否需要自己处理 true:需要 false:不需要
*/
private Boolean processable = false;
}

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

@ -17,11 +17,21 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.NumConstant;
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.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
@ -30,15 +40,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.excel.OrgProjectListExcel;
import com.epmet.excel.ProjectExcel;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.service.ProjectService;
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.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -51,6 +66,7 @@ import java.util.Map;
*/
@RestController
@RequestMapping("project")
@Slf4j
public class ProjectController {
@Autowired
@ -387,4 +403,52 @@ public class ProjectController {
public Result<List<ProjectDTO>> staffPendingProject(@RequestBody ProjectListFromDTO fromDTO){
return new Result<List<ProjectDTO>>().ok(projectService.staffPendingProject(fromDTO));
}
/**
* Desc: 数字平台-项目管理列表
*/
@PostMapping("orgprojectlist")
public Result<PageData<OrgProjectListResultDTO>> orgProjectList(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
return new Result<PageData<OrgProjectListResultDTO>>().ok(projectService.orgProjectList(formDTO));
}
@PostMapping("orgprojectexport")
public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
formDTO.setIsPage(false);
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.ONE_THOUSAND);
try {
String fileName = "项目管理导出表" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectListExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<OrgProjectListResultDTO> data = null;
List<OrgProjectListExcel> list = null;
do {
data = projectService.orgProjectList(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), OrgProjectListExcel.class);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize());
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
}

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

@ -299,4 +299,5 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
List<ProjectManageListResultDTO> getProjectManageList(ProjectManageListFormDTO formDTO);
List<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO);
}

2
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java

@ -56,7 +56,7 @@ public class ProjectProcessEntity extends BaseEpmetEntity {
* 负负责人ID
*/
private String staffId;
private String staffName;
/**
* 处理结案close退回return部门流转transfer创建项目created
*/

126
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java

@ -0,0 +1,126 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import java.util.List;
/**
* 事件管理表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-17
*/
@Data
public class OrgProjectListExcel {
private static final long serialVersionUID = 2374701362057175388L;
/**
* 上报渠道 agency:网格上报 resi_event:居民上报 work_event:巡查上报 issue:议题上报
*/
@ExcelProperty(value = "上报渠道")
@ColumnWidth(25)
private String origin;
/**
* 一级分类名称
*/
@ExcelProperty(value = "一级分类")
@ColumnWidth(20)
private String firstName;
/**
* 二级分类名称
*/
@ExcelProperty(value = "二级分类")
@ColumnWidth(20)
private String secondName;
/**
* 事件标题
*/
@ExcelProperty(value = "事件标题")
@ColumnWidth(30)
private String title;
/**
* 所属网格
*/
@ExcelProperty(value = "所属网格")
@ColumnWidth(30)
private String gridName;
/**
* 地址
*/
@ExcelProperty(value = "地址")
@ColumnWidth(30)
private String address;
/**
* 报事人
*/
@ExcelProperty(value = "报事人")
@ColumnWidth(20)
private String staffName;
/**
* 上报人电话
*/
@ExcelProperty(value = "上报人电话")
@ColumnWidth(20)
private String mobile;
/**
* 上报时间
*/
@ExcelProperty(value = "上报时间")
@ColumnWidth(25)
private String createdTime;
/**
* 事件内容
*/
@ExcelProperty(value = "事件内容")
@ColumnWidth(40)
private String backGround;
/**
* 结案说明
*/
@ExcelProperty(value = "结案说明")
@ColumnWidth(30)
private String publicReply;
/**
* 办结时间
*/
@ExcelProperty(value = "办结时间")
@ColumnWidth(25)
private String endTime;
/**
* 办结部门
*/
@ExcelProperty(value = "办结部门")
@ColumnWidth(30)
private String departmentName;
/**
* 处理建议[创建节点的公开答复]
*/
@ExcelProperty(value = "处理建议")
@ColumnWidth(25)
private String createPublicReply;
/**
* 图片url集合
*/
@ExcelProperty(value = "图片")
@ColumnWidth(30)
private String imageUrl;
/**
* 状态 处理中 pending已结案 closed
*/
@ExcelProperty(value = "状态")
@ColumnWidth(20)
private String status;
}

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

@ -396,4 +396,5 @@ public interface ProjectService extends BaseService<ProjectEntity> {
void projectListExport(HttpServletResponse response,ProjectManageListFormDTO formDTO) throws IOException;
List<ProjectDTO> staffPendingProject(ProjectListFromDTO fromDTO);
PageData<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO);
}

13
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -25,10 +25,13 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
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.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
@ -250,6 +253,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
}
//2:项目处理进展列表新增数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(staffEntity.getCustomerId(), staffEntity.getStaffId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = ConvertUtils.sourceToTarget(formDTO, ProjectProcessEntity.class);
processEntity.setCustomerId(staffEntity.getCustomerId());
processEntity.setDepartmentName(staffEntity.getDepartmentName());
@ -260,6 +267,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
processEntity.setDepartmentId(staffEntity.getDepartmentId());
processEntity.setGridId(staffEntity.getGridId());
processEntity.setOrgIdPath(staffEntity.getOrgIdPath());
processEntity.setStaffName(staffInfo.getRealName());
projectProcessDao.insert(processEntity);
//3:项目人员关联表新增部门流转数据
List<TickStaffFormDTO> staffList = formDTO.getStaffList();
@ -636,6 +644,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
}
//2:项目处理进展列表新增数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(staffEntity.getCustomerId(), staffEntity.getStaffId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = ConvertUtils.sourceToTarget(formDTO, ProjectProcessEntity.class);
processEntity.setCustomerId(staffEntity.getCustomerId());
processEntity.setDepartmentName(staffEntity.getDepartmentName());
@ -648,6 +660,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
processEntity.setOrgIdPath(staffEntity.getOrgIdPath());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setStaffName(staffInfo.getRealName());
projectProcessDao.insert(processEntity);
//2-1.项目附件表新增数据
if ((null != formDTO.getPublicFile() && formDTO.getPublicFile().size() > NumConstant.ZERO)

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

@ -41,17 +41,13 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.*;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectSatisfactionDetailDao;
import com.epmet.dao.ProjectSatisfactionStatisticsDao;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.excel.ProjectListExportExcel;
import com.epmet.feign.*;
import com.epmet.redis.ProjectRedis;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.TopicAttachmentFormDTO;
@ -158,6 +154,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectSatisfactionDetailDao satisfactionDetailDao;
@Autowired
private IcEventService icEventService;
@Autowired
private ProjectStaffDao projectStaffDao;
private final static String ONE_DAY = "<1";
@ -496,6 +494,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(fromDTO.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(operatorProjectReference.getCustomerId());
@ -513,6 +512,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
ProjectDTO projectDto = ConvertUtils.sourceToTarget(projectEntity, ProjectDTO.class);
projectDto.setUpdatedTime(projectDto.getCreatedTime());
projectProcessEntity.setCostWorkdays(getDetentionDays(projectDto));
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
ProjectOrgRelationEntity orientRelation = relationDao.selectByProjectStaffId(operatorProjectReference.getId());
@ -698,7 +698,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("com.epmet.service.impl.ProjectServiceImpl.closed,找不到结案工作人员的相关记录,参数:{}",JSON.toJSONString(fromDTO));
throw new RenException("找不到结案工作人员的相关记录");
}
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(fromDTO.getCustomerId(), fromDTO.getUserId());
//结案记录加入项目进展表
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
@ -719,6 +719,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setCostWorkdays(getDetentionDays(projectDto));
projectProcessEntity.setAssistanceUnitType(fromDTO.getAssistanceUnitType());
projectProcessEntity.setAssistanceUnitId(fromDTO.getAssistanceUnitId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//保存附件
@ -912,6 +913,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(sourceProjectStaff.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId());
@ -925,6 +927,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(fromDTO.getPublicReply());
projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark());
projectProcessEntity.setStaffId(fromDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//将人员关系添加到项目关联表
@ -1187,6 +1190,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
baseDao.insert(projectEntity);
//3:项目处理进展表新增数据
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(issueDTO.getCustomerId(), formDTO.getStaffId());
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(issueDTO.getCustomerId());
@ -1197,6 +1201,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (issueDTO.getOrgId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -1403,6 +1408,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -1416,6 +1422,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(formDTO.getPublicReply());
projectProcessEntity.setInternalRemark(formDTO.getInternalRemark());
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目节点历时
@ -2115,6 +2122,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(sourceProjectStaff.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId());
@ -2128,6 +2136,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(fromDTO.getPublicReply());
projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark());
projectProcessEntity.setStaffId(fromDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -2294,6 +2303,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -2309,6 +2319,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
projectProcessEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -2429,6 +2440,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
ProjectStaffDTO projectStaff = projectStaffService.get(formDTO.getProjectStaffId());
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staff = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -2443,6 +2455,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setInternalRemark(formDTO.getInternalRemark());
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setIsSend(NumConstant.ONE);
projectProcessEntity.setStaffName(staff.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -3454,4 +3467,100 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return projectList;
}
private CustomerStaffInfoCacheResult getStaffInfo(String customerId, String staffId) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
return staffInfo;
}
@Override
public PageData<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO) {
//1.整理查询条件
if(StringUtils.isEmpty(formDTO.getOrgType())){
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException("获取工作人员信息失败");
}
formDTO.setOrgId(staffInfo.getAgencyId());
formDTO.setOrgType("agency");
}
if (StringUtils.isNoneBlank(formDTO.getMobile())) {
//有手机号筛选条件的选按手机号查找工作人员,在按staffId查项目
GetByRealNamesFormDTO dto = new GetByRealNamesFormDTO();
dto.setCustomerId(formDTO.getCustomerId());
dto.setMobile(formDTO.getMobile());
Result<List<CustomerStaffDTO>> staffResult = epmetUserOpenFeignClient.getByRealNames(dto);
if (!staffResult.success()) {
throw new RenException("获取工作人员基础信息失败......");
}
if (null != staffResult.getData() && staffResult.getData().size() > NumConstant.ZERO) {
List<String> staffIds = staffResult.getData().stream().map(CustomerStaffDTO::getUserId).collect(Collectors.toList());
formDTO.setStaffIds(staffIds);
}
}
//2.按条件筛选数据 列表/导出查询
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage());
List<OrgProjectListResultDTO> list = baseDao.orgProjectList(formDTO);
PageInfo<OrgProjectListResultDTO> pageInfo = new PageInfo<>(list);
if (list.size() < NumConstant.ONE) {
return new PageData<>(list, pageInfo.getTotal());
}
//3.封装数据
//3-1.查询分类信息
IssueProjectCategoryDictListFormDTO dictFormDto = new IssueProjectCategoryDictListFormDTO();
dictFormDto.setCustomerId(formDTO.getCustomerId());
Result<List<IssueProjectCategoryDictDTO>> categoryRes = govIssueOpenFeignClient.getCategoryList(dictFormDto);
if (!categoryRes.success() || org.springframework.util.CollectionUtils.isEmpty(categoryRes.getData())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取项目分类名称异常");
}
Map<String, String> categoryMap = categoryRes.getData().stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getId, IssueProjectCategoryDictDTO::getCategoryName));
//3-2.封装数据
for (OrgProjectListResultDTO dto : list) {
//分类名称
dto.setFirstName(categoryMap.get(dto.getFirstId()));
dto.setSecondName(categoryMap.get(dto.getSecondId()));
try {
//工作人员基础信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), dto.getStaffId());
if (null != staffInfo) {
dto.setStaffName(staffInfo.getRealName());
dto.setMobile(staffInfo.getMobile());
}
//拼接网格名
if (StringUtils.isNoneBlank(dto.getGridId())) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId());
if (null != gridInfo) {
dto.setGridName((StringUtils.isEmpty(gridInfo.getAllParentName()) ? "" : gridInfo.getAllParentName() + "-") + gridInfo.getGridNamePath());
}
} else {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId());
if (null != agencyInfo) {
dto.setGridName((StringUtils.isEmpty(agencyInfo.getAllParentName()) ? "" : agencyInfo.getAllParentName() + "-") + agencyInfo.getOrganizationName());
}
}
} catch (Exception e) {
log.warn("获取组织/网格缓存失败");
}
//图片url拼接
if (!org.springframework.util.CollectionUtils.isEmpty(dto.getUrlList())) {
String imageUrl = StringUtils.join(dto.getUrlList().stream().map(FileDTO::getUrl).collect(Collectors.toList())," <br/> ");
dto.setImageUrl(imageUrl);
}
//判断未结案项目是否涉及需要当前工作人员处理[列表查询需要,导出的不需要这段逻辑]
if (formDTO.getIsPage() && "pending".equals(dto.getStatusValue())) {
//查询当前工作人员是否存在当前项目的未处理节点
ProjectStaffDTO projectStaff = projectStaffDao.selectLatestByProjectIdAndStaffId(dto.getProjectId(), formDTO.getUserId());
if (null != projectStaff) {
dto.setProcessable(true);
}
}
}
return new PageData<>(list, pageInfo.getTotal());
}
}

15
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -427,6 +427,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -437,6 +441,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -760,6 +765,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -770,6 +779,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -1281,6 +1291,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -1291,6 +1305,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());

2
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql

@ -0,0 +1,2 @@
ALTER TABLE `epmet_gov_project`.`project_process`
ADD COLUMN `STAFF_NAME` varchar(64) NULL COMMENT '负责人姓名' AFTER `STAFF_ID`;

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

@ -620,4 +620,121 @@
GROUP BY t.PROJECT_ID
ORDER BY p.CREATED_TIME DESC
</select>
<resultMap id="OrgProjectListMap" type="com.epmet.dto.result.OrgProjectListResultDTO">
<id property="projectId" column="id" />
<id property="agencyId" column="agency_id" />
<result property="origin" column="origin"/>
<result property="title" column="title"/>
<result property="gridId" column="grid_id"/>
<result property="address" column="locate_address"/>
<result property="staffId" column="created_by"/>
<result property="createdTime" column="created_time"></result>
<result property="backGround" column="back_ground"></result>
<result property="status" column="status"></result>
<result property="statusValue" column="statusValue"></result>
<result property="firstId" column="category_pids"></result>
<result property="secondId" column="category_id"></result>
<result property="publicReply" column="public_reply"></result>
<result property="endTime" column="end_time"></result>
<result property="departmentName" column="department_name"></result>
<result property="createPublicReply" column="public_reply"></result>
<collection property="urlList" ofType="com.epmet.dto.form.FileDTO" column="id" select="getIndexExplainTreeByPid">
</collection>
</resultMap>
<select id="orgProjectList" resultMap="OrgProjectListMap">
SELECT
p.id,
p.agency_id,
( CASE WHEN p.origin = 'issue' THEN '议题上报' WHEN p.origin = 'ic_event' THEN '居民上报' WHEN p.origin = 'work_event' THEN '巡查上报' WHEN p.origin = 'agency' THEN '网格上报' ELSE '' END ) AS origin,
p.title,
p.grid_id,
p.locate_address,
p.created_by,
DATE_FORMAT(p.created_time, '%Y-%m-%d %H:%i:%s') AS created_time,
p.back_ground,
( CASE WHEN p.`STATUS` = 'pending' THEN '处理中' WHEN p.`STATUS` = 'closed' THEN '已结案' ELSE '' END ) AS status,
p.`status` AS statusValue,
pc.category_pids,
pc.category_id,
pp.public_reply,
DATE_FORMAT(pp.end_time, '%Y-%m-%d %H:%i:%s') AS end_time,
pp.department_name,
ppc.public_reply
FROM
project p
<!-- 项目分类现在是只能选一个二类,查询只查一个分类数据 -->
INNER JOIN (
select PROJECT_ID,category_pids,category_id
from project_category
where del_flag = '0' and customer_id = #{customerId}
group by project_id
ORDER BY created_time desc
)pc ON p.id = pc.project_id
<if test="firstIdList != null and firstIdList.size() > 0"><!-- 一类查询条件 -->
<foreach collection="firstIdList" item="firstId" open="AND pc.category_pids IN (" separator="," close=")">
#{firstId}
</foreach>
</if>
<if test="secondIdList != null and secondIdList.size() > 0"><!-- 二类查询条件 -->
<foreach collection="secondIdList" item="secondId" open="AND pc.category_id IN (" separator="," close=")">
#{secondId}
</foreach>
</if>
LEFT JOIN project_process pp ON p.id = pp.project_id AND pp.operation = 'close'
INNER JOIN project_process ppc ON p.id = ppc.project_id AND ppc.operation = 'created'
<if test="staffName != null and staffName != ''"><!-- 上报人姓名对应查询条件,上报人就是对应的创建节点的人 -->
AND ppc.staff_name like concat('%', #{staffName}, '%')
</if>
<if test="staffId != null and staffId != ''"><!-- 处置选项对应查询条件,查自己涉及要干的活的项目 -->
INNER JOIN(SELECT DISTINCT PROJECT_ID FROM project_staff WHERE del_flag = '0' AND staff_id = #{staffId} ) ps ON p.id = ps.project_id
</if>
WHERE
p.del_flag = '0'
AND p.customer_id = #{customerId}
<if test="orgType != null and orgType != ''"><!-- 组织/网格对应查询条件 -->
<choose>
<when test="orgType == 'agency'">
AND p.org_id_path like concat('%', #{orgId}, '%')
</when>
<when test="orgType == 'grid'">
AND p.grid_id = #{orgId}
</when>
</choose>
</if>
<if test="origin != null and origin != ''">
AND p.origin = #{origin}
</if>
<if test="staffIds != null and staffIds.size() > 0"><!-- 上报人手机号对应查询条件 -->
<foreach collection="staffIds" item="createdId" open="AND p.created_by IN (" separator="," close=")">
#{createdId}
</foreach>
</if>
<if test="backGround != null and backGround != ''">
AND p.back_ground like concat('%', #{backGround}, '%')
</if>
<if test="status != null and status != ''">
AND p.status = #{status}
</if>
<if test=" null != startTime and startTime != '' ">
AND p.created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND p.created_time <![CDATA[ <= ]]> #{endTime}
</if>
</select>
<select id="getIndexExplainTreeByPid" resultType="com.epmet.dto.form.FileDTO"><!-- 项目创建节点的图片附件 -->
SELECT
ppa.attachment_url AS url
FROM
project_process pp
INNER JOIN project_process_attachment ppa ON pp.id = ppa.process_id AND ppa.attachment_type = 'image' AND ppa.del_flag = '0'
WHERE
pp.del_flag = '0'
and pp.operation IN('created', 'close')
AND pp.project_id = #{projectId}
ORDER BY
pp.created_time ASC, ppa.created_time ASC
</select>
</mapper>

6
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml

@ -92,7 +92,11 @@
ID AS processId,
OPERATION_NAME AS processName,
UNIX_TIMESTAMP(created_time) AS processTime,
DEPARTMENT_NAME,
CASE
WHEN STAFF_NAME IS NULL THEN
DEPARTMENT_NAME
ELSE CONCAT( DEPARTMENT_NAME, '(', STAFF_NAME, ')' )
END AS "departmentName",
PUBLIC_REPLY,
INTERNAL_REMARK,
IS_SEND,

5
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/ExractGridInfoPingYinFormDTO.java

@ -36,5 +36,10 @@ public class ExractGridInfoPingYinFormDTO implements Serializable {
*/
@NotBlank(message = "操作类型【新增:add 修改删除:edit 初始化所有数据:all】不能为空", groups = {GridInfo.class})
private String type;
/**
* org 编辑之前的Code 如果有修改 则直接更新其他涉及到的表
*/
private String oldCode;
}

9
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java

@ -37,12 +37,12 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataOrgChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -51,7 +51,7 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
}
try {
msgs.forEach(msg -> consumeMessage(msg));
msgs.forEach(this::consumeMessage);
} catch (Exception e) {
logger.error(ExceptionUtils.getErrorStackTrace(e));
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
@ -94,6 +94,7 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
ExractGridInfoPingYinFormDTO extractFormDto = new ExractGridInfoPingYinFormDTO();
extractFormDto.setCustomerId(obj.getCustomerId());
extractFormDto.setType(obj.getType());
extractFormDto.setOldCode(obj.getOldCode());
List<String> orgIdList = new ArrayList<>();
if(StringUtils.isNotBlank(obj.getOrgId())){
orgIdList.add(obj.getOrgId());

75
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridInfoPingyinServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.opendata.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
@ -7,14 +8,22 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IndexCalConstant;
import com.epmet.dto.org.form.GridBaseInfoFormDTO;
import com.epmet.dto.org.result.CustomerAgencyDTO;
import com.epmet.dto.org.result.CustomerGridDTO;
import com.epmet.feign.DataStatisticalOpenFeignClient;
import com.epmet.opendata.dao.EventreportPingyinDao;
import com.epmet.opendata.dao.GridInfoPingyinDao;
import com.epmet.opendata.dao.GridstaffInfoPingyinDao;
import com.epmet.opendata.dao.GridstaffWorkInfoPingyinDao;
import com.epmet.opendata.dto.constant.DataWorkerConstant;
import com.epmet.opendata.dto.form.ExractGridInfoPingYinFormDTO;
import com.epmet.opendata.entity.EventreportPingyinEntity;
import com.epmet.opendata.entity.GridInfoPingyinEntity;
import com.epmet.opendata.entity.GridstaffInfoPingyinEntity;
import com.epmet.opendata.entity.GridstaffWorkInfoPingyinEntity;
import com.epmet.opendata.service.GridInfoPingyinService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
@ -33,11 +42,18 @@ import java.util.List;
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-07-22
*/
@Slf4j
@Service
public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinDao, GridInfoPingyinEntity> implements GridInfoPingyinService {
@Autowired
private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient;
@Autowired
private GridstaffInfoPingyinDao gridstaffInfoPingyinDao;
@Autowired
private GridstaffWorkInfoPingyinDao gridstaffWorkInfoPingyinDao;
@Autowired
private EventreportPingyinDao eventreportPingyinDao;
/**
* 抽取customer_agency到grid_info_pingyin表
@ -99,9 +115,13 @@ public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinD
this.insertBatch(gridInfoList);
} else if (formDTO.getType().contains(DataWorkerConstant.CHANGE)) {
// 修改组织时,先根据code查询,如果有数据,更新
for (GridInfoPingyinEntity entity : gridInfoList) {
//网格code变更了 则将旧的code 的数据删除状态设置为Y
if (StringUtils.isNotBlank(formDTO.getOldCode()) && !formDTO.getOldCode().equals(entity.getGridCode())){
baseDao.deleteByCode(formDTO.getOldCode());
}
List<GridInfoPingyinEntity> orginList = baseDao.selectByGridCode(entity.getGridCode());
if (CollectionUtils.isNotEmpty(orginList)) {
@ -138,7 +158,7 @@ public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinD
@Override
public void exractGrid(ExractGridInfoPingYinFormDTO formDTO) {
// 1.查询网格基础信息
com.epmet.dto.org.form.GridBaseInfoFormDTO formDTO1 = ConvertUtils.sourceToTarget(formDTO, com.epmet.dto.org.form.GridBaseInfoFormDTO.class);
GridBaseInfoFormDTO formDTO1 = ConvertUtils.sourceToTarget(formDTO, GridBaseInfoFormDTO.class);
if (StringUtils.isBlank(formDTO.getType())||DataWorkerConstant.ALL.equals(formDTO.getType())) {
formDTO1.setDelFlag("0");
} else if (formDTO.getType().contains(DataWorkerConstant.CREATE)) {
@ -150,6 +170,7 @@ public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinD
}
Result<List<CustomerGridDTO>> result = dataStatisticalOpenFeignClient.getGridBaseInfo(formDTO1);
if (!result.success()) {
log.warn("根据网格Id 没有找到网格 等待再次调用");
throw new RenException(result.getInternalMsg());
}
if (null == result.getData() || result.getData().size() < NumConstant.ONE) {
@ -195,7 +216,9 @@ public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinD
} else if (formDTO.getType().contains(DataWorkerConstant.CHANGE)) {
// 修改组织时,先根据code查询,如果有数据,更新
for (GridInfoPingyinEntity entity : gridInfoList) {
//code 变更了
gridCodeChanged(formDTO, entity);
//根据修改后的网格code 获取网格信息
List<GridInfoPingyinEntity> orginList = baseDao.selectByGridCode(entity.getGridCode());
if (CollectionUtils.isNotEmpty(orginList)) {
@ -224,5 +247,51 @@ public class GridInfoPingyinServiceImpl extends BaseServiceImpl<GridInfoPingyinD
}
/**
* desc:判断是否需要网格Code 如果修改了则 同步修改其他的相关业务数据
* @param formDTO
* @param entity
*/
private void gridCodeChanged(ExractGridInfoPingYinFormDTO formDTO, GridInfoPingyinEntity entity) {
if (StringUtils.isNotBlank(formDTO.getOldCode()) && !formDTO.getOldCode().equals(entity.getGridCode())){
GridInfoPingyinEntity gridInfoEntity = new GridInfoPingyinEntity();
gridInfoEntity.setGridCode(entity.getGridCode());
gridInfoEntity.setUpdateTime(new Date());
LambdaUpdateWrapper<GridInfoPingyinEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(GridInfoPingyinEntity::getGridCode,formDTO.getOldCode());
int update = baseDao.update(gridInfoEntity, updateWrapper);
log.info("code changed gridinfo effect row:{}",update);
//更新完 网格code 去更新其他的业务【工作人员、例行工作、事件】数据对应的code
GridstaffInfoPingyinEntity staffInfo = new GridstaffInfoPingyinEntity();
staffInfo.setGridCode(entity.getGridCode());
staffInfo.setUpdateTime(new Date());
LambdaUpdateWrapper<GridstaffInfoPingyinEntity> staffInfoWrapper = new LambdaUpdateWrapper<>();
staffInfoWrapper.eq(GridstaffInfoPingyinEntity::getGridCode,formDTO.getOldCode());
update = gridstaffInfoPingyinDao.update(staffInfo, staffInfoWrapper);
log.info("code changed gridStaffInfo effect row:{}",update);
GridstaffWorkInfoPingyinEntity workInfo = new GridstaffWorkInfoPingyinEntity();
workInfo.setGridCode(entity.getGridCode());
workInfo.setUpdateTime(new Date());
LambdaUpdateWrapper<GridstaffWorkInfoPingyinEntity> workInfoWrapper = new LambdaUpdateWrapper<>();
workInfoWrapper.eq(GridstaffWorkInfoPingyinEntity::getGridCode,formDTO.getOldCode());
update = gridstaffWorkInfoPingyinDao.update(workInfo, workInfoWrapper);
log.info("code changed staffWorkInfo effect row:{}",update);
EventreportPingyinEntity eventEntity = new EventreportPingyinEntity();
eventEntity.setGridCode(entity.getGridCode());
eventEntity.setUpdateTime(new Date());
LambdaUpdateWrapper<EventreportPingyinEntity> eventWrapper = new LambdaUpdateWrapper<>();
eventWrapper.eq(EventreportPingyinEntity::getGridCode,formDTO.getOldCode());
update = eventreportPingyinDao.update(eventEntity, eventWrapper);
log.info("code changed eventreport effect row:{}",update);
}
}
}

71
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java

@ -0,0 +1,71 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2022/8/5 15:03
* @DESC
*/
@Data
public class PaCustomerDTO implements Serializable {
/**
* 客户id本主键和oper_crm.customer.id一致
*/
private String id;
/**
* 客户名称默认是根组织名称
*/
private String customerName;
/**
* 是否已经完成客户信息初始化 0未初始化1已初始化
*/
private Integer isInitialize;
/**
* 客户类型 mini 微信小程序客户 app 第三方app客户
*/
private String type;
/**
* 数据来源(dev:开发 test:体验 prod:生产)
*/
private String source;
/**
* 删除标识0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java

@ -23,4 +23,8 @@ public class GetByRealNamesFormDTO implements Serializable {
* 工作人员姓名集合
*/
private Set<String> realNames;
/**
* 手机号模糊查询
*/
private String mobile;
}

25
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/8/5 11:11
* @DESC
*/
@Data
public class IcUserMatchGridFormDTO implements Serializable {
private static final long serialVersionUID = -5252136149475817567L;
public interface IcUserMatchGridForm{}
@NotBlank(message = "idCard不能为空",groups = IcUserMatchGridForm.class)
private String idCard;
@NotBlank(message = "appId不能为空",groups = IcUserMatchGridForm.class)
private String appId;
}

22
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/8/5 11:14
* @DESC
*/
@Data
public class IcUserMatchGridResultDTO implements Serializable {
private static final long serialVersionUID = -3215965796907113918L;
private String gridId;
private String customerId;
private String gridName;
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -1293,5 +1293,17 @@ public class IcResiUserController implements ResultDataResolver {
return new Result<PageData<Map<String, Object>>>().ok(icResiUserService.listResiZhzl(pageFormDTO));
}
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param tokenDto
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
@PostMapping("icUserMatchGrid")
public Result<IcUserMatchGridResultDTO> icUserMatchGrid(@RequestBody IcUserMatchGridFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, IcUserMatchGridFormDTO.IcUserMatchGridForm.class);
return new Result<IcUserMatchGridResultDTO>().ok(icResiUserService.icUserMatchGrid(formDTO));
}
}

9
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -496,4 +496,13 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
* @return
*/
PageData<Map<String, Object>> listResiZhzl(IcResiUserPageFormDTO pageFormDTO);
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO);
}

52
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@ -3244,4 +3245,55 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
pageInfo.setList(list);
return new PageData<>(pageInfo.getList(), pageInfo.getTotal());
}
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
@Override
public IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO) {
PaCustomerDTO customerInfo = getCustomerInfo(formDTO.getAppId());
if (null == customerInfo){
throw new EpmetException("根据APPID查询客户信息失败:"+formDTO.getAppId());
}
LambdaQueryWrapper<IcResiUserEntity> qw = new LambdaQueryWrapper<>();
qw.eq(IcResiUserEntity::getCustomerId,customerInfo.getId())
.eq(IcResiUserEntity::getIdCard,formDTO.getIdCard());
IcResiUserEntity icResiUserEntity = baseDao.selectOne(qw);
if (null == icResiUserEntity){
throw new EpmetException(EpmetErrorCode.NOT_MATCH_IC_USER_ERROR.getCode());
}
IcUserMatchGridResultDTO result = new IcUserMatchGridResultDTO();
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(icResiUserEntity.getGridId());
if (null == gridInfo){
throw new EpmetException("查询网格信息失败:"+icResiUserEntity.getGridId());
}
result.setCustomerId(customerInfo.getId());
result.setGridId(icResiUserEntity.getGridId());
result.setGridName(gridInfo.getGridNamePath());
return result;
}
public PaCustomerDTO getCustomerInfo(String appId) {
JSONObject jsonObject = new JSONObject();
String data = HttpClientManager.getInstance().sendPostByJSON("https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/" + appId, JSON.toJSONString(jsonObject)).getData();
logger.info("ThirdLoginServiceImpl.getCustomerInfo:httpclient->url:https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/ ,结果->" + 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;
}
}

11
epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

@ -450,9 +450,14 @@
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="realNames" item="name" open="AND real_name IN (" separator="," close=")">
#{name}
</foreach>
<if test="realNames != null and realNames.size() > 0">
<foreach collection="realNames" item="name" open="AND real_name IN (" separator="," close=")">
#{name}
</foreach>
</if>
<if test="mobile != null and mobile != ''">
AND mobile LIKE concat('%', #{mobile}, '%')
</if>
</select>
<select id="gridStaffMobileList" resultType="com.epmet.dto.result.GridMobileListResultDTO"></select>

2
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -213,7 +213,7 @@
</foreach>
</if>
ORDER BY
IC_RESI_USER.GRID_ID ASC,
IC_RESI_USER.GRID_ID desc,
IC_RESI_USER.VILLAGE_ID ASC,
IC_RESI_USER.BUILD_ID ASC,
IC_RESI_USER.UNIT_ID ASC,

Loading…
Cancel
Save