wxz 3 years ago
parent
commit
1934237e79
  1. 7
      epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/LogOperationListFormDTO.java
  2. 2
      epmet-admin/epmet-admin-server/Dockerfile
  3. 2
      epmet-admin/epmet-admin-server/pom.xml
  4. 3
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/LogOperationDao.java
  5. 7
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/AuthOperationLogListener.java
  6. 4
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java
  7. 13
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/LogOperationServiceImpl.java
  8. 5
      epmet-admin/epmet-admin-server/src/main/resources/mapper/LogOperationDao.xml
  9. 2
      epmet-auth/Dockerfile
  10. 16
      epmet-auth/src/main/java/com/epmet/controller/LoginController.java
  11. 1
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  12. 7
      epmet-auth/src/main/java/com/epmet/service/CaptchaService.java
  13. 2
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  14. 17
      epmet-auth/src/main/java/com/epmet/service/impl/CaptchaServiceImpl.java
  15. 9
      epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java
  16. 13
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  17. 5
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java
  18. 23
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  19. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  20. 2
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java
  21. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java
  22. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/CustomerIdConstant.java
  23. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  24. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerStaffRedis.java
  25. 2
      epmet-gateway/Dockerfile
  26. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java
  27. 2
      epmet-module/data-aggregator/data-aggregator-server/Dockerfile
  28. 26
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  29. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java
  30. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  31. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml
  32. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml
  33. 2
      epmet-module/data-report/data-report-server/Dockerfile
  34. 2
      epmet-module/data-statistical/data-statistical-server/Dockerfile
  35. 2
      epmet-module/data-statistical/data-statistical-server/pom.xml
  36. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java
  37. 2
      epmet-module/epmet-activiti/epmet-activiti-server/Dockerfile
  38. 2
      epmet-module/epmet-common-service/common-service-server/Dockerfile
  39. 6
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java
  40. 2
      epmet-module/epmet-ext/epmet-ext-server/Dockerfile
  41. 25
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java
  42. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java
  43. 110
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPublicServiceOrgDTO.java
  44. 90
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPublicServiceOrgServiceMatterDTO.java
  45. 133
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/IcPublicServiceOrgFormDTO.java
  46. 28
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/IcPublicServiceOrgPageFormDTO.java
  47. 23
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java
  48. 22
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivitySignUpRecordFormDTO.java
  49. 7
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyUnitFormDTO.java
  50. 25
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/SignUpParyActFormDTO.java
  51. 87
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/IcPublicServiceOrgDetailResDTO.java
  52. 46
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivityResDTO.java
  53. 61
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivitySignUpRecordResDTO.java
  54. 4
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/ServiceItemResultDTO.java
  55. 1
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  56. 2
      epmet-module/epmet-heart/epmet-heart-server/Dockerfile
  57. 2
      epmet-module/epmet-heart/epmet-heart-server/pom.xml
  58. 263
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java
  59. 195
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java
  60. 101
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPublicServiceOrgController.java
  61. 12
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceItemDictController.java
  62. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java
  63. 27
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java
  64. 24
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivitySignUpRecordDao.java
  65. 21
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPublicServiceOrgDao.java
  66. 20
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPublicServiceOrgServiceMatterDao.java
  67. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java
  68. 14
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java
  69. 54
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivitySignUpRecordEntity.java
  70. 76
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPublicServiceOrgEntity.java
  71. 44
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPublicServiceOrgServiceMatterEntity.java
  72. 45
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java
  73. 80
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java
  74. 41
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitExcel.java
  75. 79
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java
  76. 20
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java
  77. 111
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java
  78. 139
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java
  79. 7
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java
  80. 73
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java
  81. 32
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java
  82. 34
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPublicServiceOrgService.java
  83. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java
  84. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java
  85. 11
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java
  86. 570
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java
  87. 395
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java
  88. 171
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPublicServiceOrgServiceImpl.java
  89. 32
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java
  90. 4
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  91. 38
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.29__public_service_org.sql
  92. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql
  93. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml
  94. 92
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml
  95. 40
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivitySignUpRecordDao.xml
  96. 81
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPublicServiceOrgDao.xml
  97. 30
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPublicServiceOrgServiceMatterDao.xml
  98. 15
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml
  99. BIN
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx
  100. BIN
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyunit_impoort_tem.xlsx

7
epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/LogOperationListFormDTO.java

@ -27,7 +27,12 @@ public class LogOperationListFormDTO {
*/
private String endTime;
/**
* 默认传data_tm
* 产品原本前端默认传data_tm
* 03.01烟台需求列表展示全部
* 项目流转project_changed
* 登录auth
* 积分point
* 查看脱敏信息data_tm
*/
private String category;
}

2
epmet-admin/epmet-admin-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2
epmet-admin/epmet-admin-server/pom.xml

@ -233,7 +233,7 @@
<!--rocketmq-->
<rocketmq.enable>true</rocketmq.enable>
<rocketmq.nameserver>192.168.10.165:9876</rocketmq.nameserver>
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
<!--线程池-->

3
epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/LogOperationDao.java

@ -41,8 +41,7 @@ public interface LogOperationDao extends BaseDao<LogOperationEntity> {
@Param("endTime")String endTime,
@Param("operatorName")String operatorName,
@Param("operatorMobile")String operatorMobile,
@Param("category")String category,
@Param("agencyId")String agencyId);
@Param("category")String category);
List<Map<String,String>> getStaffId();

7
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/AuthOperationLogListener.java

@ -1,6 +1,7 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationConstants;
import com.epmet.auth.constants.AuthOperationEnum;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
@ -77,7 +78,11 @@ public class AuthOperationLogListener implements MessageListenerConcurrently {
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatingTime(msgObj.getLoginTime());
logEntity.setContent("成功登录系统");
if(AuthOperationConstants.LOGIN.equals(logEntity.getType())){
logEntity.setContent("成功登录系统");
}else{
logEntity.setContent("成功退出系统");
}
DistributedLock distributedLock = null;
RLock lock = null;

4
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java

@ -1,10 +1,8 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationEnum;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
@ -69,7 +67,7 @@ public class CheckAndExportOperationLogListener implements MessageListenerConcur
logEntity.setIp(msgObj.getIp());
logEntity.setFromApp(msgObj.getFromApp());
logEntity.setFromClient(msgObj.getFromClient());
logEntity.setTargetId("");
logEntity.setTargetId(msgObj.getTargetId());
logEntity.setCustomerId(operatorInfo.getCustomerId());
logEntity.setOperatorId(msgObj.getUserId());
logEntity.setOperatorName(operatorInfo.getName());

13
epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/LogOperationServiceImpl.java

@ -8,7 +8,6 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
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.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -202,15 +201,15 @@ public class LogOperationServiceImpl implements LogOperationService, ResultDataR
@Override
public PageData<LogOperationResultDTO> page(String customerId, String startTime, String endTime, String operatorName, String operatorMobile,
Integer pageNo, Integer pageSize, String category, TokenDto tokenDto) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询工作人员信息:"+tokenDto.getUserId());
}
// CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
// if (null == staffInfo){
// throw new EpmetException("未查询工作人员信息:"+tokenDto.getUserId());
// }
// 列表/导出查询
PageHelper.startPage(pageNo, pageSize);
List<LogOperationResultDTO> list = logOperationDao.pageList(customerId, startTime, endTime, operatorName, operatorMobile,category,staffInfo.getAgencyId());
List<LogOperationResultDTO> list = logOperationDao.pageList(customerId, startTime, endTime, operatorName, operatorMobile,category);
PageInfo<LogOperationResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
return new PageData<>(list, pageInfo.getTotal(),pageSize);
}
/**

5
epmet-admin/epmet-admin-server/src/main/resources/mapper/LogOperationDao.xml

@ -64,7 +64,6 @@
WHERE
lo.del_flag = '0'
AND lo.CUSTOMER_ID = #{customerId}
AND lo.ORG_ID_PATH LIKE concat('%',#{agencyId},'%')
<if test="category != null and category != ''">
AND lo.CATEGORY = #{category}
</if>
@ -75,10 +74,10 @@
AND lo.OPERATOR_MOBILE LIKE concat('%',#{operatorMobile},'%')
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y%m%d' ) &gt;= #{startTime}
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y-%m-%d %H:%i' ) &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y%m%d' ) &lt;= #{endTime}
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y-%m-%d %H:%i' ) &lt;= #{endTime}
</if>
ORDER BY lo.OPERATING_TIME DESC
</select>

2
epmet-auth/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

16
epmet-auth/src/main/java/com/epmet/controller/LoginController.java

@ -29,6 +29,8 @@ import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @Description 通用登录接口
@ -73,6 +75,20 @@ public class LoginController {
}
}
/**
* 返回文字版的验证码
* 磐石大屏3.10号提出的需求
* @param uuid
* @throws IOException
*/
@PostMapping("captcha/{uuid}")
public Result captcha(@PathVariable(name = "uuid", required = true) String uuid) {
Map<String, String> map = new HashMap<>();
map.put("captcha", captchaService.getTextCaptcha(uuid));
return new Result().ok(map);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String>

1
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -198,6 +198,7 @@ public class ThirdLoginController {
*
* @param formDTO
* @return
* 目前烟台用的这个
*/
@PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {

7
epmet-auth/src/main/java/com/epmet/service/CaptchaService.java

@ -31,4 +31,11 @@ public interface CaptchaService {
*/
boolean validate(String uuid, String code);
/**
* 返回文字版的验证码
* 磐石大屏3.10号提出的需求
* @param uuid
* @return
*/
String getTextCaptcha(String uuid);
}

2
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -124,4 +124,6 @@ public interface ThirdLoginService {
* @return
*/
UserTokenResultDTO yanTaiSSOLogin(String authCode);
void sendLoginEvent(String userId, String appId, String fromApp, String fromClient,String messageType);
}

17
epmet-auth/src/main/java/com/epmet/service/impl/CaptchaServiceImpl.java

@ -52,4 +52,21 @@ public class CaptchaServiceImpl implements CaptchaService {
//验证码是否正确
return code.equalsIgnoreCase(captcha);
}
/**
* 返回文字版的验证码
* 磐石大屏3.10号提出的需求
*
* @param uuid
* @return
*/
@Override
public String getTextCaptcha(String uuid) {
// 生成验证码 //producer.createText();
String captcha = StringRandomUtils.getRandomStr(NumConstant.FIVE);
// logger.info("uuid:"+uuid+",生成的验证码:"+captcha);
// 保存验证码
captchaRedis.set(uuid, captcha);
return captcha;
}
}

9
epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java

@ -1,6 +1,7 @@
package com.epmet.service.impl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.epmet.auth.constants.AuthOperationConstants;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
@ -11,10 +12,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.validator.PhoneValidatorUtils;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.dto.CustomerAgencyDTO;
@ -31,6 +29,7 @@ import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis;
import com.epmet.service.GovLoginService;
import com.epmet.service.LoginService;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -326,6 +325,8 @@ public class GovLoginServiceImpl implements GovLoginService, ResultDataResolver
throw new RenException("当前用户信息获取失败");
}
cpUserDetailRedis.logout(tokenDto.getApp() , tokenDto.getClient() , tokenDto.getUserId());
SpringContextUtils.getBean(ThirdLoginService.class).sendLoginEvent(tokenDto.getUserId(), "小程序内退出登录",
tokenDto.getApp(), tokenDto.getClient(), AuthOperationConstants.LOGOUT);
}
@Override

13
epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java

@ -1,7 +1,9 @@
package com.epmet.service.impl;
import com.epmet.auth.constants.AuthOperationConstants;
import com.epmet.auth.dto.result.BlockChainStaffAuthResultDTO;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -14,6 +16,7 @@ import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dto.form.GovWebLoginFormDTO;
import com.epmet.dto.form.GovWebOperLoginFormDTO;
import com.epmet.dto.result.GovWebOperLoginResultDTO;
@ -23,6 +26,7 @@ import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.service.CaptchaService;
import com.epmet.service.GovWebService;
import com.epmet.service.ThirdLoginService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -103,6 +107,15 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver {
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setCustomerId(formDTO.getCustomerId());
userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId()));
// 6.发送登录事件
try {
SpringContextUtils.getBean(ThirdLoginService.class).sendLoginEvent(resultDTO.getUserId(), "数字社区登录",
AppClientConstant.APP_GOV,
AppClientConstant.CLIENT_WEB,
AuthOperationConstants.LOGIN);
} catch (Exception e) {
log.error("【数字社区web端登录】发送登录事件失败,程序继续执行。错误信息");
}
return userTokenResultDTO;
}

5
epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationConstants;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -15,6 +16,7 @@ import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.UserDTO;
import com.epmet.dto.UserWechatDTO;
@ -28,6 +30,7 @@ import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CustomerAppWxServiceUtil;
import com.epmet.service.CaptchaService;
import com.epmet.service.LoginService;
import com.epmet.service.ThirdLoginService;
import com.epmet.utils.WxMaServiceUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
@ -372,6 +375,8 @@ public class LoginServiceImpl implements LoginService {
if(AppClientConstant.APP_GOV.equals(tokenDto.getApp())){
CustomerStaffRedis.delStaffInfoFormCache(tokenDto.getCustomerId(),tokenDto.getUserId());
}
SpringContextUtils.getBean(ThirdLoginService.class).sendLoginEvent(tokenDto.getUserId(), "数字社区退出登录",
tokenDto.getApp(), tokenDto.getClient(), AuthOperationConstants.LOGOUT);
return new Result();
}

23
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -24,7 +24,6 @@ import com.epmet.commons.tools.redis.common.bean.DingMiniInfoCache;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.api.yt.YantaiApi;
import com.epmet.commons.tools.utils.api.yt.YantaiSSOUser;
@ -36,7 +35,9 @@ import com.epmet.dto.dingres.DingUserDetailDTO;
import com.epmet.dto.dingres.V2UserGetuserinfoResDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis;
@ -87,17 +88,11 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
@Autowired
private EpmetMessageOpenFeignClient messageOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private DingTalkClientToken dingTalkClientToken;
@Autowired
private DingTalkClientUser dingTalkClientUser;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private GovWebService govWebService;
@Autowired
private ThirdOpenFeignClient thirdOpenFeignClient;
/**
* @param formDTO
@ -224,7 +219,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
//7.发送登录事件
try {
sendLoginEvent(staffLatestAgencyResultDTO.getStaffId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP);
sendLoginEvent(staffLatestAgencyResultDTO.getStaffId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, AuthOperationConstants.LOGIN);
} catch (RenException e) {
log.error(e.getInternalMsg());
} catch (Exception e) {
@ -455,7 +450,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
//6.发送登录事件
try {
sendLoginEvent(customerStaff.getUserId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP);
sendLoginEvent(customerStaff.getUserId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, AuthOperationConstants.LOGIN);
} catch (RenException e) {
log.error(e.getInternalMsg());
} catch (Exception e) {
@ -517,7 +512,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
//6.发送登录事件
try {
sendLoginEvent(customerStaff.getUserId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP);
sendLoginEvent(customerStaff.getUserId(), formDTO.getAppId(), AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, AuthOperationConstants.LOGIN);
} catch (RenException e) {
log.error(e.getInternalMsg());
} catch (Exception e) {
@ -842,7 +837,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* @author wxz
* @date 2021.06.08 15:27
*/
private void sendLoginEvent(String userId, String appId, String fromApp, String fromClient) {
@Override
public void sendLoginEvent(String userId, String appId, String fromApp, String fromClient,String messageType) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
LoginMQMsg loginMQMsg = new LoginMQMsg();
@ -853,7 +849,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
loginMQMsg.setFromApp(fromApp);
loginMQMsg.setFromClient(fromClient);
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(AuthOperationConstants.LOGIN);
// form.setMessageType(AuthOperationConstants.LOGIN);
form.setMessageType(messageType);
form.setContent(loginMQMsg);
messageOpenFeignClient.sendSystemMsgByMQ(form);
//getResultDataOrThrowsException(result, ServiceConstant.EPMET_MESSAGE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "调用Message服务,发送登录事件到MQ失败");

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -36,6 +36,11 @@ public interface ConsomerGroupConstants {
*/
String AUTH_OPERATION_LOG_GROUP = "auth_operation_log_group";
/**
* 数字社区web端工作人员登录
*/
String STAFF_LOGIN_LOG_GROUP = "staff_login_log_group";
/**
* 项目操作日志消费组
*/

2
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java

@ -29,5 +29,5 @@ public class CheckMQMsg {
private String fromClient;
private String orgId;
private String orgIdPath;
private String targetId;
}

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import lombok.extern.slf4j.Slf4j;
@ -57,7 +58,8 @@ public class NoRepeatSubmitAop {
//因为getLock如果获取失败抛异常 所以不做锁状态的判断
}
} catch (Exception e) {
log.warn("noRepeatSubmit key:{},msg:{}", key, e.getMessage());
String error = ExceptionUtils.getErrorStackTrace(e);
log.warn("noRepeatSubmit key:{},msg:{}", key, error);
//"未获取到锁,重复提交了
throw new RenException(EpmetErrorCode.REPEAT_SUBMIT.getCode());
}

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/CustomerIdConstant.java

@ -12,4 +12,14 @@ public interface CustomerIdConstant {
* 市北生产-客户ID
*/
String SHI_BEI_CUSTOMER_ID = "b09527201c4409e19d1dbc5e3c3429a1";
/**
* 烟台生产客户id
*/
String YT_CUSTOMER_ID = "1535072605621841922";
/**
* 市北智慧社区,2月份去社区学习新开立的一个客户
*/
String SHIBEI_YANSHI="1623486671774978060";
}

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -101,7 +101,8 @@ public interface StrConstant {
String PY_ROOT_AGENCY = "53613e1c5de6ed473467f0159a10b135";
//磐石街道客户Id
String PS_CUSTOMER_ID = "1580460084738760705";
//小寨子客户id
String XIAOZHAIZI_CUSTOMER_ID="1536638904600752130";
/**
* 单位积分,积分上限积分说明积分事件
*/

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerStaffRedis.java

@ -88,11 +88,12 @@ public class CustomerStaffRedis {
private static CustomerStaffInfoCache reloadStaffCache(String staffId, String key) {
Result<CustomerStaffInfoCache> staffResult = customerStaffRedis.commonAggFeignClient.getStaffInfo(staffId);
if (staffResult == null || !staffResult.success()) {
log.error("/data/aggregator/epmetuser/getStaffInfo/{staffId} 异常 staffId: ",staffId);
throw new RenException("获取工作人员信息失败");
}
CustomerStaffInfoCache resultData = staffResult.getData();
if (resultData == null) {
log.warn("getStaffInfo staff is null,staffId:{}", staffId);
log.error("getStaffInfo staff is null,staffId:{}", staffId);
return null;
}

2
epmet-gateway/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/ListStaffFormDTO.java

@ -25,4 +25,9 @@ public class ListStaffFormDTO implements Serializable {
private String customerId;
public interface Staff extends CustomerClientShowGroup {}
/**
* 姓名或者手机号
* 可以不填
*/
private String keyWord;
}

2
epmet-module/data-aggregator/data-aggregator-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

26
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -245,11 +245,11 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.evaluationIndex1.url>
<datasource.druid..url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_evaluation_index?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.evaluationIndex1.url>
<datasource.druid.evaluationIndex1.username>root</datasource.druid.evaluationIndex1.username>
<datasource.druid.evaluationIndex1.password>root</datasource.druid.evaluationIndex1.password>
</datasource.druid..url>
<datasource.druid..username>root</datasource.druid..username>
<datasource.druid..password>root</datasource.druid..password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
@ -390,12 +390,6 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.evaluationIndex1.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_evaluation_index?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.evaluationIndex1.url>
<datasource.druid.evaluationIndex1.username>root</datasource.druid.evaluationIndex1.username>
<datasource.druid.evaluationIndex1.password>root</datasource.druid.evaluationIndex1.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
@ -534,12 +528,6 @@
<datasource.druid.evaluationIndex.username>epmet</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>elink@833066</datasource.druid.evaluationIndex.password>
<datasource.druid.evaluationIndex1.url>
<![CDATA[jdbc:mysql://rm-m5ef9t617j6o5eup7.mysql.rds.aliyuncs.com:3306/epmet_evaluation_index?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.evaluationIndex1.url>
<datasource.druid.evaluationIndex1.username>epmet</datasource.druid.evaluationIndex1.username>
<datasource.druid.evaluationIndex1.password>elink@833066</datasource.druid.evaluationIndex1.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://rm-m5ef9t617j6o5eup7.mysql.rds.aliyuncs.com:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>
@ -679,12 +667,6 @@
<datasource.druid.evaluationIndex.username>epmet_evaluation_index_user</datasource.druid.evaluationIndex.username>
<datasource.druid.evaluationIndex.password>EpmEt-db-UsEr</datasource.druid.evaluationIndex.password>
<datasource.druid.evaluationIndex1.url>
<![CDATA[jdbc:mysql://rm-m5e3vzs2637224wj9.mysql.rds.aliyuncs.com:3306/epmet_evaluation_index?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.evaluationIndex1.url>
<datasource.druid.evaluationIndex1.username>epmet_cloud_viewer</datasource.druid.evaluationIndex1.username>
<datasource.druid.evaluationIndex1.password>EpmEtclOUdvIEwEr@w</datasource.druid.evaluationIndex1.password>
<datasource.druid.opercustomize.url>
<![CDATA[jdbc:mysql://rm-m5e3vzs2637224wj9.mysql.rds.aliyuncs.com:3306/epmet_oper_customize?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.opercustomize.url>

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java

@ -53,7 +53,9 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
* @Description 模糊查询用户角色信息
* @author sun
*/
List<ListStaffResultDTO> selectByRealName(@Param("customerId") String customerId, @Param("realName") String realName);
List<ListStaffResultDTO> selectByRealName(@Param("customerId") String customerId,
@Param("realName") String realName,
@Param("keyWord") String keyWord);
/**
* @Description 分页查询排好序的工作人员Id列表

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

@ -9,7 +9,6 @@ import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IdAndNameDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
@ -56,9 +55,9 @@ import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.GetStaffExistRoleFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.result.DetailByTypeResultDTO;
import com.epmet.dto.form.GetStaffExistRoleFormDTO;
import com.epmet.dto.result.NewUserRoleResultDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
@ -538,7 +537,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
@Override
public List<ListStaffResultDTO> listStaff(ListStaffFormDTO formDTO) {
//1.模糊查询用户、角色信息
List<ListStaffResultDTO> resultList = customerStaffDao.selectByRealName(formDTO.getCustomerId(), formDTO.getRealName());
List<ListStaffResultDTO> resultList = customerStaffDao.selectByRealName(formDTO.getCustomerId(), formDTO.getRealName(),formDTO.getKeyWord());
if (null == resultList || resultList.size() < NumConstant.ONE) {
return new ArrayList<>();
}
@ -638,6 +637,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
.eq(CustomerStaffEntity::getDelFlag,NumConstant.ZERO_STR);
CustomerStaffEntity staffEntity = customerStaffDao.selectOne(queryWrapper);
if (null == staffEntity) {
log.error(String.format("customer_staff is null staffId:%s",staffId));
return null;
}
CustomerStaffResultDTO result = ConvertUtils.sourceToTarget(staffEntity, CustomerStaffResultDTO.class);
@ -1023,6 +1023,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setMobile(houseInfo.getOwnerPhone());
result.setIdCard(houseInfo.getOwnerIdCard());
msg.setContent("查看"+houseInfo.getAllName()+"房屋的敏感信息");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.CHECK_IC_RESI_USER)){
IcResiUserInfoCache icResiUserInfo = CustomerResiUserRedis.getIcResiUserInfo(formDTO.getId());
if (null == icResiUserInfo){
@ -1031,14 +1032,16 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(icResiUserInfo.getIdCard());
result.setMobile(icResiUserInfo.getMobile());
msg.setContent("查看"+icResiUserInfo.getName()+"的敏感信息");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.JMFYXX)){
IcResiUserInfoCache icResiUserInfo = CustomerResiUserRedis.getIcResiUserInfo(formDTO.getId());
if (null == icResiUserInfo){
throw new EpmetException("查询icResiUser失败:"+formDTO.getId());
throw new EpmetException("居民防疫信息查询icResiUser失败:"+formDTO.getId());
}
result.setIdCard(icResiUserInfo.getIdCard());
result.setMobile(icResiUserInfo.getMobile());
msg.setContent("查看"+icResiUserInfo.getName()+"的敏感信息(居民防疫信息)");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.ROUTE_FOLLOW)){
Map<String, String> info = icResiUserDao.getTripReportRecordInfo(formDTO.getId());
if (null == info){
@ -1047,6 +1050,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(行程随访)");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.VACCINATION_RECORD)){
Map<String, String> info = icResiUserDao.getVaccineRecordInfo(formDTO.getId());
if (null == info){
@ -1055,6 +1059,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(疫苗接种记录)");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.VACCINE_SPECIAL_ATTENTION)
|| formDTO.getType().equals(NeighborhoodConstant.FOCUS_GROUP_SPECIAL_ATTENTION_QUARANTINE)
|| formDTO.getType().equals(NeighborhoodConstant.FOCUS_GROUP_SPECIAL_ATTENTION_HISTORY)){
@ -1078,7 +1083,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
default:
}
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息("+cMsg+")");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.NO_NAT_COMPARE)){
Map<String, String> info = icResiUserDao.getNoNatCompareInfo(formDTO.getId());
if (null == info){
@ -1087,6 +1092,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(未做核酸比对)");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.NAT_RECORD)){
Map<String, String> info = icResiUserDao.getNatInfo(formDTO.getId());
if (null == info){
@ -1095,6 +1101,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(核酸检测信息)");
msg.setTargetId(formDTO.getId());
}else if (formDTO.getType().equals(NeighborhoodConstant.EMPLOYEE_EPIDEMIC_MANAGE_DETAIL)){
Map<String, String> info = govOrgService.getEmployeeRegisterMobileAndIdCard(formDTO.getId());
if (null == info){
@ -1103,6 +1110,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(员工登记信息)");
msg.setTargetId(formDTO.getId());
}
// 发送mq消息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

5
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml

@ -166,11 +166,6 @@ dynamic:
url: @datasource.druid.partymember.url@
username: @datasource.druid.partymember.username@
password: @datasource.druid.partymember.password@
evaluationIndexRead:
driver-class-name: com.mysql.cj.jdbc.Driver
url: @datasource.druid.evaluationIndex1.url@
username: @datasource.druid.evaluationIndex1.username@
password: @datasource.druid.evaluationIndex1.password@
feign:
hystrix:
enabled: true

9
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml

@ -49,7 +49,14 @@
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND real_name LIKE CONCAT('%', #{realName}, '%')
<if test='null != realName and "" !=realName'>
AND real_name LIKE CONCAT('%', #{realName}, '%')
</if>
<if test='null != keyWord and "" !=keyWord'>
AND (REAL_NAME LIKE CONCAT('%', #{keyWord}, '%')
or MOBILE LIKE CONCAT('%', #{keyWord}, '%')
)
</if>
</select>
<select id="selectOrderRole" resultType="java.lang.String">

2
epmet-module/data-report/data-report-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2
epmet-module/data-statistical/data-statistical-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -588,7 +588,7 @@
<!--rocketmq-->
<rocketmq.enable>true</rocketmq.enable>
<rocketmq.nameserver>192.168.10.165:9876</rocketmq.nameserver>
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
</properties>
</profile>
<profile>

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcoll/impl/ScreenPyHistoryScoreServiceImpl.java

@ -188,7 +188,7 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ
}
if (!CollectionUtils.isEmpty(result.getData())) {
GridLivelyResultDTO gridLively = result.getData().get(NumConstant.ZERO);
String score = (gridLively.getGridSumNum() <= 0) ? "0" : numberFormat.format(((float) gridLively.getGridLivelyNum() / (float) gridLively.getGridSumNum()) * 100 + (gridLively.getGridOrdinaryNum() / gridLively.getGridSumNum()) * 80);
String score = (gridLively.getGridSumNum() <= 0) ? "0" : numberFormat.format(((float) gridLively.getGridLivelyNum() / (float) gridLively.getGridSumNum()) * 100 + ((float)gridLively.getGridOrdinaryNum() / (float)gridLively.getGridSumNum()) * 80);
resultDTO.setScore(score);
}
} else if ("event".equals(formDTO.getType())) {
@ -202,7 +202,7 @@ public class ScreenPyHistoryScoreServiceImpl implements ScreenPyHistoryScoreServ
HistoryScoreSjffResultDTO dto2 = screenPyHistoryScoreDao.sumProjectScore(formDTO);
//查询街道下有效网格员数
HistoryScoreSjffResultDTO dto3 = screenPyHistoryScoreDao.sumGridNum(formDTO);
String score = numberFormat.format(((float) dto1.getEventScore() / (float) dto3.getGridStaffNum()) + (dto2.getProjectScore() / dto3.getGridStaffNum()));
String score = numberFormat.format(((float) dto1.getEventScore() / (float) dto3.getGridStaffNum()) + ((float)dto2.getProjectScore() / (float)dto3.getGridStaffNum()));
resultDTO.setScore(score);
}
return resultDTO;

2
epmet-module/epmet-activiti/epmet-activiti-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2
epmet-module/epmet-common-service/common-service-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ShowApiServiceImpl.java

@ -129,13 +129,11 @@ public class ShowApiServiceImpl implements ShowApiService {
try {
dayDetailResultDTO = ShowApiUtil.queryHolidayV2020(currentDate);
if (dayDetailResultDTO == null){
logger.error(String.format("workDayInitTask 获取(%s)工作日接口异常", currentDate));
// logger.warn("initWorkDay howApiUtil.queryHolidayV2020 return null");
logger.warn("initWorkDay howApiUtil.queryHolidayV2020 return null");
return;
}
} catch (Exception e) {
// logger.error("queryHolidayV2020 exception", e);
logger.error(String.format("workDayInitTask 获取(%s)工作日接口异常:%s", currentDate, e.getMessage()));
logger.error("queryHolidayV2020 exception", e);
return;
}
List<CalenderEntity> list = calenderDao.selectByDay(currentDate);

2
epmet-module/epmet-ext/epmet-ext-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

25
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java

@ -110,17 +110,30 @@ public class IcPartyActivityDTO implements Serializable {
private String content;
/**
* 服务人数
* 服务人数;烟台服务人数是活动限制名额如果是0代表不限制
*/
private Integer peopleCount;
/**
* 活动时间
* 活动时间;烟台此列作为活动开始时间
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date activityTime;
/**
* 烟台此列作为活动结束时间;必填
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date activityEndTime;
/**
* 烟台活动封面必填
*/
private String coverUrl;
/**
* 活动地址
*/
@ -179,5 +192,9 @@ public class IcPartyActivityDTO implements Serializable {
*/
@JsonIgnore
private Date updatedTime;
/**
* actId不为空小程序
* 为空管理平台
*/
private String originName;
}

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java

@ -86,6 +86,11 @@ public class IcPartyUnitDTO implements Serializable {
*/
private List<String> serviceMatterNameList;
/**
* 服务事项名称多个按照中文顿号隔开
*/
private String serviceMatterName;
/**
* 联系人
*/

110
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPublicServiceOrgDTO.java

@ -0,0 +1,110 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Data
public class IcPublicServiceOrgDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* AGENCY_ID的pids
*/
private String pids;
/**
* 名称
*/
private String name;
/**
* 1实有单位2社会服务组织3志愿团队
*/
private String type;
/**
* 联系人
*/
private String contact;
/**
* 联系电话
*/
private String contactMobile;
/**
* 地址
*/
private String address;
/**
* 中心位置经度
*/
private String longitude;
/**
* 中心位置纬度
*/
private String latitude;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
private List<IcPublicServiceOrgServiceMatterDTO> serviceMatterList;
}

90
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPublicServiceOrgServiceMatterDTO.java

@ -0,0 +1,90 @@
package com.epmet.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 公共服务组织服务事项(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Data
public class IcPublicServiceOrgServiceMatterDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@JsonIgnore
private String id;
/**
* 客户id
*/
@JsonIgnore
private String customerId;
/**
* ic_public_service_org.ID
*/
@JsonIgnore
private String orgId;
/**
* ic_service_item_dict.ID
*/
private String categoryId;
/**
* 服务事项编码ic_service_item_dict.CATEGORY_CODE
*/
private String categoryCode;
/**
* 删除标识 0未删除1已删除
*/
@JsonIgnore
private String delFlag;
/**
* 乐观锁
*/
@JsonIgnore
private Integer revision;
/**
* 创建人
*/
@JsonIgnore
private String createdBy;
/**
* 创建时间
*/
@JsonIgnore
private Date createdTime;
/**
* 更新人
*/
@JsonIgnore
private String updatedBy;
/**
* 更新时间
*/
@JsonIgnore
private Date updatedTime;
/**
* 详情页面显示
*/
private String categoryName;
}

133
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/IcPublicServiceOrgFormDTO.java

@ -0,0 +1,133 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.epmet.dto.IcPublicServiceOrgServiceMatterDTO;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2023/2/3 15:04
*/
@Data
public class IcPublicServiceOrgFormDTO {
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
public interface UpdateUserInternalGroup {
}
public interface UpdateUserShowGroup extends CustomerClientShowGroup {
}
/**
* 主键
*/
@NotBlank(message = "id为空", groups = UpdateUserInternalGroup.class)
private String id;
/**
* 客户id
*/
@NotBlank(message = "customerId不能为空", groups = {AddUserInternalGroup.class, UpdateUserInternalGroup.class})
private String customerId;
/**
* 组织ID
*/
@NotBlank(message = "agencyId不能为空",groups =UpdateUserInternalGroup.class )
private String agencyId;
/**
* AGENCY_ID的pids
*/
private String pids;
/**
* 名称
*/
@Length(max = 100, groups = AddUserShowGroup.class, message = "最多输入100字")
@NotBlank(message = "名称不能为空", groups = {UpdateUserShowGroup.class, AddUserShowGroup.class})
private String name;
/**
* 1实有单位2社会服务组织3志愿团队
*/
@NotBlank(message = "类别不能为空", groups = {UpdateUserShowGroup.class, AddUserShowGroup.class})
private String type;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空", groups = {UpdateUserShowGroup.class, AddUserShowGroup.class})
private String contact;
/**
* 联系电话
*/
@NotBlank(message = "联系电话不能为空", groups = {UpdateUserShowGroup.class, AddUserShowGroup.class})
private String contactMobile;
/**
* 地址
*/
@NotBlank(message = "地址不能为空", groups = {UpdateUserShowGroup.class, AddUserShowGroup.class})
private String address;
/**
* 中心位置经度
*/
private String longitude;
/**
* 中心位置纬度
*/
private String latitude;
/**
* 备注
*/
@Length(max = 500,message = "最多输入500字",groups ={UpdateUserShowGroup.class,AddUserShowGroup.class} )
private String remark;
/**
* 删除标识 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
private List<IcPublicServiceOrgServiceMatterDTO> serviceMatterList;
}

28
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/IcPublicServiceOrgPageFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2023/2/3 16:02
*/
@Data
public class IcPublicServiceOrgPageFormDTO extends PageFormDTO {
private String customerId;
private String agencyId;
private String name;
private List<String> categoryIds;
private String type;
private String contact;
private String contactMobile;
/**
* 工作端当前登录人员
*/
private String currentStaffId;
}

23
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@ -15,10 +16,18 @@ import java.util.Date;
*/
@NoArgsConstructor
@Data
public class PartyActivityFormDTO implements Serializable {
public class PartyActivityFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -2510068555703677L;
@NotBlank(message = "组织Id不能为空" )
public interface ResiDingQueryInternalGroup {
}
@NotBlank(message = "组织Id不能为空",groups = {ResiDingQueryInternalGroup.class})
private String agencyId;
@NotBlank(message = "gridId不能为空",groups = {ResiDingQueryInternalGroup.class})
private String gridId;
private String unitId;
private String title;
@ -27,7 +36,13 @@ public class PartyActivityFormDTO implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime;
private String serviceMatter;
private Integer pageNo;
private Integer pageSize;
// private Integer pageNo;
// private Integer pageSize;
private String customerId;
/**
* 居民端钉钉传userId
*/
@NotBlank(message = "userId不能为空",groups = {ResiDingQueryInternalGroup.class})
private String userId;
}

22
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivitySignUpRecordFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 人员名单
* @Author yzm
* @Date 2023/3/29 13:42
*/
@Data
public class PartyActivitySignUpRecordFormDTO extends PageFormDTO implements Serializable {
/**
* 联建活动ID
*/
@NotBlank(message = "activityId不能为空", groups = AddUserInternalGroup.class)
private String activityId;
}

7
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyUnitFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -12,7 +13,7 @@ import java.io.Serializable;
*/
@NoArgsConstructor
@Data
public class PartyUnitFormDTO implements Serializable {
public class PartyUnitFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 1256798619648265622L;
private String customerId;
@ -22,8 +23,8 @@ public class PartyUnitFormDTO implements Serializable {
private String type;
private String contact;
private String contactMobile;
private Integer pageNo;
private Integer pageSize;
// private Integer pageNo;
// private Integer pageSize;
/**
* 工作端当前登录人员

25
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/SignUpParyActFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.QueryGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description
* @Author yzm
* @Date 2023/3/29 15:27
*/
@Data
public class SignUpParyActFormDTO {
/**
*
*/
@NotBlank(message = "userId不能为空", groups = QueryGroup.class)
private String userId;
@NotBlank(message = "activityId不能为空", groups = QueryGroup.class)
private String activityId;
@NotBlank(message = "gridId不能为空", groups = QueryGroup.class)
private String gridId;
}

87
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/IcPublicServiceOrgDetailResDTO.java

@ -0,0 +1,87 @@
package com.epmet.dto.result;
import com.epmet.dto.IcPublicServiceOrgServiceMatterDTO;
import lombok.Data;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2023/2/3 15:52
*/
@Data
public class IcPublicServiceOrgDetailResDTO {
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
private String agencyName;
/**
* AGENCY_ID的pids
*/
private String pids;
/**
* 名称
*/
private String name;
/**
* 1实有单位2社会服务组织3志愿团队
*/
private String type;
private String typeName;
/**
* 联系人
*/
private String contact;
/**
* 联系电话
*/
private String contactMobile;
/**
* 地址
*/
private String address;
/**
* 中心位置经度
*/
private String longitude;
/**
* 中心位置纬度
*/
private String latitude;
/**
* 备注
*/
private String remark;
/**
* 服务事项名称
* 多个按照英文逗号隔开
*/
private String serviceMatterName;
private List<IcPublicServiceOrgServiceMatterDTO> serviceMatterList;
}

46
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivityResDTO.java

@ -0,0 +1,46 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Description 居民端钉钉查看联建活动详情
* @Author yzm
* @Date 2023/3/29 15:59
*/
@Data
public class PartyActivityResDTO {
private String activityId;
private String agencyName;
private String agencyId;
private List<String> unitNameList;
private List<String> serviceMatterNameList;
private String title;
private String target;
private String content;
private Integer peopleCount;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date activityTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date activityEndTime;
private String coverUrl;
private String address;
private String result;
/**
* 报名记录id
*/
private String signUpId;
/**
* 已报名总人数
*/
private Integer signUpCount;
/**
* 是否报名:true已报名false未报名
*/
private Boolean signUpFlag;
}

61
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivitySignUpRecordResDTO.java

@ -0,0 +1,61 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 联建活动报名记录表(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-03-29
*/
@Data
public class PartyActivitySignUpRecordResDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 联建活动ID
*/
private String activityId;
/**
* 居民端用户id
*/
private String userId;
/**
* 姓名
*/
private String userName;
private String mobile;
/**
* 报名时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signUpTime;
/**
* 用户报名时所在的网格
*/
private String gridId;
/**
* 网格名称XXX社区-xxx网格
*/
private String gridName;
}

4
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/ServiceItemResultDTO.java

@ -13,6 +13,10 @@ import java.io.Serializable;
public class ServiceItemResultDTO implements Serializable {
private static final long serialVersionUID = -590440160577071133L;
private String categoryId;
/**
* 分类编码
*/
private String categoryCode;
private String categoryName;
private Integer awardPoint;
private Boolean usableFlag;

1
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -119,6 +119,7 @@ public interface EpmetHeartOpenFeignClient {
/**
* Desc: 获取联建单位名字
* 查询项目处理进展时调用
* @param formDTO
* @author zxc
* @date 2022/5/17 17:53

2
epmet-module/epmet-heart/epmet-heart-server/Dockerfile

@ -1,4 +1,4 @@
FROM java:8
FROM openjdk:8-jre
RUN export LANG="zh_CN.UTF-8"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2
epmet-module/epmet-heart/epmet-heart-server/pom.xml

@ -308,7 +308,7 @@
<!--rocketmq-->
<rocketmq.enable>true</rocketmq.enable>
<rocketmq.nameserver>192.168.10.165:9876</rocketmq.nameserver>
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
<!--线程池-->
<thread.threadPool.enable-customize>true</thread.threadPool.enable-customize>

263
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java

@ -17,42 +17,57 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.PageFormDTO;
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.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
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.*;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
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.QueryGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcPartyActivityDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.PartyActivityFormDTO;
import com.epmet.dto.form.PartyActivitySignUpRecordFormDTO;
import com.epmet.dto.form.SignUpParyActFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.PartyActivityResDTO;
import com.epmet.dto.result.PartyActivitySignUpRecordResDTO;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.excel.IcPartyActivityExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.IcPartyActivityService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.*;
/**
@ -64,7 +79,7 @@ import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping("icpartyactivity")
public class IcPartyActivityController {
public class IcPartyActivityController implements ResultDataResolver {
@Autowired
private IcPartyActivityService icPartyActivityService;
@ -78,7 +93,7 @@ public class IcPartyActivityController {
*/
@PostMapping("search")
public Result<PageData<IcPartyActivityDTO>> page(@LoginUser TokenDto tokenDto,@RequestBody PartyActivityFormDTO formDTO){
formDTO.setCustomerId(formDTO.getCustomerId());
formDTO.setCustomerId(tokenDto.getCustomerId());
PageData<IcPartyActivityDTO> page = icPartyActivityService.search(formDTO);
return new Result<PageData<IcPartyActivityDTO>>().ok(page);
}
@ -111,23 +126,36 @@ public class IcPartyActivityController {
}
@PostMapping("export")
public void export(@RequestBody PartyActivityFormDTO formDTO, HttpServletResponse response) throws Exception {
List<IcPartyActivityDTO> list = icPartyActivityService.list(formDTO);
List<IcPartyActivityExcel> excelList = new ArrayList<>();
AtomicInteger i = new AtomicInteger(1);
if (CollectionUtils.isNotEmpty(list)) {
excelList = list.stream().map(item -> {
IcPartyActivityExcel excel = new IcPartyActivityExcel();
excel.setIndex(i.getAndIncrement());
excel.setUnitName(item.getUnitName());
excel.setTitle(item.getTitle());
excel.setAddress(item.getAddress());
excel.setPeopleCount(item.getPeopleCount());
excel.setActivityTime(DateUtils.format(item.getActivityTime(), DateUtils.DATE_TIME_PATTERN));
return excel;
}).collect(Collectors.toList());
public void export(@LoginUser TokenDto tokenDto, @RequestBody PartyActivityFormDTO formDTO, HttpServletResponse response) throws Exception {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setIsPage(false);
ExcelWriter excelWriter = null;
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
int pageNo = formDTO.getPageNo();
try {
// 这里 需要指定写用哪个class去写
String today= DateUtils.format(new Date(),DateUtils.DATE_PATTERN_MMDD);
String fileName = "联建活动".concat(today);
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcPartyActivityExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcPartyActivityDTO> data = null;
List<IcPartyActivityExcel> list = null;
do {
data = icPartyActivityService.search(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), IcPartyActivityExcel.class);
formDTO.setPageNo(++pageNo);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize());
} catch (Exception e) {
log.error("export exception", e);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
ExcelUtils.exportExcelToTarget(response, null, excelList, IcPartyActivityExcel.class);
}
/**
@ -141,58 +169,49 @@ public class IcPartyActivityController {
*/
@PostMapping("import")
public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
throw new RenException("请上传文件");
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_activity", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建活动导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
String originalFilename = file.getOriginalFilename();
// 校验文件类型
String extension = FilenameUtils.getExtension(originalFilename);
if (!"xls".equals(extension) && !"xlsx".equals(extension)) {
throw new RenException("文件类型不匹配");
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("method exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
//1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入
// 2.生成导入任务记录
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOriginFileName(file.getOriginalFilename());
importTaskForm.setOperatorId(tokenDto.getUserId());
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT);
Result<ImportTaskCommonResultDTO> result = commonServiceOpenFeignClient.createImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
// 异步执行导入
CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
log.error("method exception", e);
}
submitResiImportTask(tokenDto, response, file, result.getData().getTaskId());
});
return new Result();
}
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY);
importTaskForm.setOriginFileName(originalFilename);
private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) {
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"联建活动导入错误",
"联建活动导入失败");
try {
icPartyActivityService.importData(tokenDto, response, file, importTaskId);
} catch (Throwable e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【导入联建活动信息失败】导入失败:{}", errorMsg);
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOperatorId(tokenDto.getUserId());
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY);
importTaskForm.setTaskId(importTaskId);
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importTaskForm.setResultDesc("联建活动信息导入失败,请查看系统日志");
Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
}
// 3.执行导入
icPartyActivityService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId());
return new Result();
}
/**
@ -214,4 +233,104 @@ public class IcPartyActivityController {
PageData<IcPartyActivityDTO> page = icPartyActivityService.getActivityList(tokenDto, formDTO);
return new Result<PageData<IcPartyActivityDTO>>().ok(page);
}
/**
* 下载联建活动导入模板
* @param response
* @throws IOException
*/
@RequestMapping(value = "import-template-download", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadTemplate(HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition");
//response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("联建活动导入模板", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("templates/icpartyactivity_import_tem.xlsx");
try {
ServletOutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
} finally {
if (is != null) {
is.close();
}
}
}
/**
* 人员名单
*
* @param formDTO
* @return
*/
@PostMapping("querySignUpRecord")
public Result<PageData<PartyActivitySignUpRecordResDTO>> querySignUpRecord(@RequestBody PartyActivitySignUpRecordFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserShowGroup.class,PageFormDTO.AddUserInternalGroup.class);
return new Result<PageData<PartyActivitySignUpRecordResDTO>>().ok(icPartyActivityService.querySignUpRecord(formDTO.getActivityId(),formDTO.getPageNo(),formDTO.getPageSize()));
}
/**
* 居民端钉钉报名联建活动
*
* @param formDTO
* @return
*/
@PostMapping("signUp")
public Result signUp(@RequestBody SignUpParyActFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, QueryGroup.class);
String signUpId = icPartyActivityService.signUp(formDTO.getActivityId(), formDTO.getUserId(), formDTO.getGridId());
Map resultMap = new HashMap<>();
resultMap.put("signUpId", signUpId);
return new Result().ok(resultMap);
}
/**
* 居民端钉钉查看联建活动详情
*
* @param tokenDto
* @param activityId
* @return
*/
@PostMapping("act-detail-resi/{activityId}")
public Result<PartyActivityResDTO> queryActDetailForResi(@LoginUser TokenDto tokenDto, @PathVariable("activityId") String activityId) {
if (StringUtils.isBlank(activityId)) {
return new Result();
}
return new Result<PartyActivityResDTO>().ok(icPartyActivityService.queryActDetailForResi(tokenDto.getCustomerId(),tokenDto.getUserId(),activityId));
}
/**
* 居民端钉钉分页查询联建活动
*
* @param formDTO
* @return
*/
@PostMapping("page-all-act")
public Result<PageData<PartyActivityResDTO>> pageAllAct(@RequestBody PartyActivityFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PartyActivityFormDTO.ResiDingQueryInternalGroup.class);
return new Result<PageData<PartyActivityResDTO>>().ok(
icPartyActivityService.pageAllAct(formDTO.getPageNo(),
formDTO.getPageSize(),
formDTO.getGridId(),
formDTO.getAgencyId(),
formDTO.getUserId()));
}
/**
* 居民端钉钉已报名列表
* @param formDTO
* @return
*/
@PostMapping("applied-act")
public Result<PageData<PartyActivityResDTO>> appliedAct(@RequestBody PartyActivityFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, PartyActivityFormDTO.ResiDingQueryInternalGroup.class);
return new Result<PageData<PartyActivityResDTO>>().ok(
icPartyActivityService.appliedAct(formDTO.getPageNo(),
formDTO.getPageSize(),
formDTO.getGridId(),
formDTO.getAgencyId(),
formDTO.getUserId()));
}
}

195
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java

@ -1,16 +1,24 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
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.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
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;
@ -26,20 +34,25 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.IcPartyUnitService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.UUID;
import java.util.stream.Collectors;
@ -52,18 +65,13 @@ import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping("icpartyunit")
public class IcPartyUnitController {
public class IcPartyUnitController implements ResultDataResolver {
@Autowired
private IcPartyUnitService icPartyUnitService;
@Resource
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
/**
* 联建单位上传临时目录
*/
private Path IC_PARTY_UNIT_UPLOAD_DIR;
/**
* 联建单位-列表查询
@ -117,25 +125,38 @@ public class IcPartyUnitController {
@PostMapping("export")
public void export(@LoginUser TokenDto tokenDto, @RequestBody PartyUnitFormDTO formDTO, HttpServletResponse response) throws Exception {
formDTO.setCustomerId(tokenDto.getCustomerId());
List<IcPartyUnitDTO> list = icPartyUnitService.list(formDTO);
List<IcPartyUnitExcel> excelList = new ArrayList<>();
AtomicInteger i = new AtomicInteger(1);
if (CollectionUtils.isNotEmpty(list)) {
excelList = list.stream().map(item -> {
IcPartyUnitExcel excel = new IcPartyUnitExcel();
excel.setIndex(i.getAndIncrement());
excel.setUnitName(item.getUnitName());
excel.setContact(item.getContact());
excel.setContactMobile(item.getContactMobile());
excel.setType(item.getType());
excel.setMemberCount(item.getMemberCount());
excel.setRemark(item.getRemark());
excel.setSatisfaction(item.getSatisfaction());
excel.setServiceMatter(String.join(String.valueOf((char) 10), item.getServiceMatterList()));
return excel;
}).collect(Collectors.toList());
formDTO.setIsPage(false);
formDTO.setCurrentStaffId(tokenDto.getUserId());
ExcelWriter excelWriter = null;
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
int pageNo = formDTO.getPageNo();
try {
// 这里 需要指定写用哪个class去写
String today= DateUtils.format(new Date(),DateUtils.DATE_PATTERN_MMDD);
String fileName = "联建单位".concat(today);
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcPartyUnitExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<IcPartyUnitDTO> data = null;
List<IcPartyUnitExcel> list = null;
do {
data = icPartyUnitService.search(formDTO);
data.getList().stream().map(item -> {
item.setServiceMatterName(StringUtils.join(item.getServiceMatterList(), StrConstant.COMMA_ZH));
return item;
}).collect(Collectors.toList());
list = ConvertUtils.sourceToTarget(data.getList(), IcPartyUnitExcel.class);
formDTO.setPageNo(++pageNo);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize());
} catch (Exception e) {
log.error("export exception", e);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
ExcelUtils.exportExcelToTarget(response, null, excelList, IcPartyUnitExcel.class);
}
/**
@ -172,42 +193,53 @@ public class IcPartyUnitController {
*/
@PostMapping("import")
public Result importData(@LoginUser TokenDto tokenDto, HttpServletRequest multipartRequest, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException {
// 1.暂存文件
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
if (file.isEmpty()) {
throw new RenException("请上传文件");
Path fileSavePath;
try {
Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_unit", "import");
fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName));
} catch (IOException e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建单位导入】创建临时存储文件失败:{}", errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败");
}
String originalFilename = file.getOriginalFilename();
// 校验文件类型
String extension = FilenameUtils.getExtension(originalFilename);
if (!"xls".equals(extension) && !"xlsx".equals(extension)) {
throw new RenException("文件类型不匹配");
InputStream is = null;
FileOutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(fileSavePath.toString());
IOUtils.copy(is, os);
} catch (Exception e) {
log.error("method exception", e);
} finally {
org.apache.poi.util.IOUtils.closeQuietly(is);
org.apache.poi.util.IOUtils.closeQuietly(os);
}
//1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入
// 2.生成导入任务记录
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOriginFileName(file.getOriginalFilename());
importTaskForm.setOperatorId(tokenDto.getUserId());
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT);
Result<ImportTaskCommonResultDTO> result = commonServiceOpenFeignClient.createImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
importTaskForm.setOriginFileName(originalFilename);
// 异步执行导入
CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
log.error("method exception", e);
}
submitResiImportTask(tokenDto, response, file, result.getData().getTaskId());
});
ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm),
ServiceConstant.EPMET_COMMON_SERVICE,
EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
"联建单位导入错误",
"联建单位导入失败");
// 3.执行导入
icPartyUnitService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),tokenDto.getCustomerId(),tokenDto.getUserId());
return new Result();
}
/**
* @Description 按类型统计单位数量
* @Description 按类型统计单位数量可视化平台-社区党建-联建单位分析-饼图展示分类下的联建单位数量
* @Param dto
* @Return {@link Result< List< OptionDataResultDTO>>}
* @Author zhaoqifeng
@ -216,7 +248,7 @@ public class IcPartyUnitController {
@PostMapping("typestatistics")
public Result<List<OptionDataResultDTO>> typeStatistics(@RequestBody PartyActivityFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<OptionDataResultDTO>>().ok(icPartyUnitService.typeStatistics(formDTO));
return new Result<List<OptionDataResultDTO>>().ok(icPartyUnitService.typeStatistics(formDTO.getAgencyId()));
}
/**
@ -233,7 +265,8 @@ public class IcPartyUnitController {
}
/**
* 联建单位-简要信息列表
* 可视化平台-社区党建-联建单位分析
* 联建单位-简要信息列表展示单位名称单位类型
*
* @param form
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData>
@ -266,7 +299,7 @@ public class IcPartyUnitController {
/**
* 计算区域化党建单位的群众满意度
*
* 服务完成后会发mq
* @param formDTO
* @return
*/
@ -277,29 +310,9 @@ public class IcPartyUnitController {
return new Result();
}
private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) {
try {
icPartyUnitService.importData(tokenDto, response, file, importTaskId);
} catch (Throwable e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【导入联建单位信息失败】导入失败:{}", errorMsg);
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOperatorId(tokenDto.getUserId());
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT);
importTaskForm.setTaskId(importTaskId);
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importTaskForm.setResultDesc("联建单位信息导入失败,请查看系统日志");
Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
}
}
/**
* Desc: 获取联建单位名字
* 查询项目处理进展时调用
* @param formDTO
* @author zxc
* @date 2022/5/17 17:53
@ -310,7 +323,8 @@ public class IcPartyUnitController {
}
/**
* Desc: 协办单位列表
* Desc: 协办单位列表本来是前端调用后面需求升级联建单位+社区自组织同步到了部门中
* 此接口已弃用
* @param tokenDto
* @author zxc
* @date 2022/5/18 13:37
@ -330,4 +344,27 @@ public class IcPartyUnitController {
return new Result();
}
/**
* 下载联建单位导入模板
* @param response
* @throws IOException
*/
@RequestMapping(value = "import-template-download", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadTemplate(HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition");
//response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel");
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("联建单位导入模板", "UTF-8") + ".xlsx");
InputStream is = this.getClass().getClassLoader().getResourceAsStream("templates/icpartyunit_impoort_tem.xlsx");
try {
ServletOutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
} finally {
if (is != null) {
is.close();
}
}
}
}

101
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPublicServiceOrgController.java

@ -0,0 +1,101 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.IcPublicServiceOrgFormDTO;
import com.epmet.dto.form.IcPublicServiceOrgPageFormDTO;
import com.epmet.dto.result.IcPublicServiceOrgDetailResDTO;
import com.epmet.service.IcPublicServiceOrgService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@RestController
@RequestMapping("icPublicServiceOrg")
public class IcPublicServiceOrgController {
@Autowired
private IcPublicServiceOrgService icPublicServiceOrgService;
/**
*
* @param tokenDto
* @param formDTO
* @return
*/
@RequestMapping("page")
public Result<PageData<IcPublicServiceOrgDetailResDTO>> page(@LoginUser TokenDto tokenDto, @RequestBody IcPublicServiceOrgPageFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
//工作端调用的话,赋值当前登录用户id
if(AppClientConstant.APP_GOV.equals(tokenDto.getApp())){
formDTO.setCurrentStaffId(tokenDto.getUserId());
}
PageData<IcPublicServiceOrgDetailResDTO> page = icPublicServiceOrgService.page(formDTO);
return new Result<PageData<IcPublicServiceOrgDetailResDTO>>().ok(page);
}
@PostMapping("detail/{id}")
public Result<IcPublicServiceOrgDetailResDTO> get(@PathVariable("id") String id){
IcPublicServiceOrgDetailResDTO data = icPublicServiceOrgService.get(id);
return new Result<IcPublicServiceOrgDetailResDTO>().ok(data);
}
/**
* 新增名称组织下唯一
* @param formDTO
* @return
*/
@NoRepeatSubmit
@PostMapping("save")
public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcPublicServiceOrgFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCreatedBy(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO, IcPublicServiceOrgFormDTO.AddUserShowGroup.class, IcPublicServiceOrgFormDTO.AddUserInternalGroup.class);
icPublicServiceOrgService.save(formDTO);
return new Result();
}
/**
*
* @param tokenDto
* @param formDTO
* @return
*/
@NoRepeatSubmit
@PostMapping("update")
public Result update(@LoginUser TokenDto tokenDto,@RequestBody IcPublicServiceOrgFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCreatedBy(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO, IcPublicServiceOrgFormDTO.UpdateUserShowGroup.class, IcPublicServiceOrgFormDTO.UpdateUserInternalGroup.class);
icPublicServiceOrgService.update(formDTO);
return new Result();
}
/**
* 同时删除服务事项表
* @param ids
* @return
*/
@PostMapping("delete")
public Result delete(@RequestBody List<String> ids){
if(CollectionUtils.isNotEmpty(ids)){
icPublicServiceOrgService.delete(ids);
}
return new Result();
}
}

12
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceItemDictController.java

@ -87,6 +87,18 @@ public class IcServiceItemDictController {
return new Result<List<OptionDTO>>().ok(icServiceItemDictService.queryDictListForSelect(formDTO));
}
/**
* 烟台的公共服务组织服务事项列表
*
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("dict-options")
public Result<List<ServiceItemResultDTO>> queryDictOption(@LoginUser TokenDto tokenDto, @RequestBody ServiceItemSelectFormDTO formDTO) {
return new Result<List<ServiceItemResultDTO>>().ok(icServiceItemDictService.queryDictOption(formDTO.getType(), tokenDto.getCustomerId()));
}
/**
* 客户初始化数据
* @Param customerId

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java

@ -5,6 +5,8 @@ import com.epmet.entity.IcActivityUnitRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 联建活动与单位关联表
*
@ -22,4 +24,11 @@ public interface IcActivityUnitRelationDao extends BaseDao<IcActivityUnitRelatio
* @Date 2022/2/21 16:19
*/
void deleteByActivity(@Param("activityId") String activityId);
/**
* 查询联建活动关联的联建单位名称列表
* @param activityId
* @return
*/
List<String> selectActivityUntiNames(String activityId);
}

27
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java

@ -20,8 +20,10 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.PartyActivityFormDTO;
import com.epmet.dto.result.ActivityStatisticsDTO;
import com.epmet.dto.result.PartyActivityResDTO;
import com.epmet.entity.IcPartyActivityEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -54,4 +56,29 @@ public interface IcPartyActivityDao extends BaseDao<IcPartyActivityEntity> {
List<IcPartyActivityEntity> getActivityList(PartyActivityFormDTO formDTO);
/**
*
* @param gridId 当前用户所在网格id
* @param agencyId 当前用户所在网格所属组织id
* @param userId 居民端用户id,校验当前用户是否报名
* @return 居民端钉钉-分页查询全部联建活动
*/
List<PartyActivityResDTO> pageAllAct(@Param("customerId")String customerId,
@Param("gridId") String gridId,
@Param("agencyId")String agencyId,
@Param("userId")String userId);
/**
* 居民端钉钉已报名列表
* @param customerId
* @param gridId
* @param agencyId
* @param userId
* @return
*/
List<PartyActivityResDTO> selectAppliedAct(@Param("customerId")String customerId,
@Param("gridId") String gridId,
@Param("agencyId")String agencyId,
@Param("userId")String userId);
}

24
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivitySignUpRecordDao.java

@ -0,0 +1,24 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.PartyActivitySignUpRecordResDTO;
import com.epmet.entity.IcPartyActivitySignUpRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 联建活动报名记录表(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-03-29
*/
@Mapper
public interface IcPartyActivitySignUpRecordDao extends BaseDao<IcPartyActivitySignUpRecordEntity> {
/**
* 人员名单
* @param activityId
* @return
*/
List<PartyActivitySignUpRecordResDTO> querySignUpRecord(String activityId);
}

21
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPublicServiceOrgDao.java

@ -0,0 +1,21 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.IcPublicServiceOrgPageFormDTO;
import com.epmet.dto.result.IcPublicServiceOrgDetailResDTO;
import com.epmet.entity.IcPublicServiceOrgEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Mapper
public interface IcPublicServiceOrgDao extends BaseDao<IcPublicServiceOrgEntity> {
List<IcPublicServiceOrgDetailResDTO> pageList(IcPublicServiceOrgPageFormDTO formDTO);
}

20
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPublicServiceOrgServiceMatterDao.java

@ -0,0 +1,20 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IcPublicServiceOrgServiceMatterDTO;
import com.epmet.entity.IcPublicServiceOrgServiceMatterEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 公共服务组织服务事项(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Mapper
public interface IcPublicServiceOrgServiceMatterDao extends BaseDao<IcPublicServiceOrgServiceMatterEntity> {
List<IcPublicServiceOrgServiceMatterDTO> selectServiceMatter(String orgId);
}

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java

@ -39,4 +39,13 @@ public interface IcServiceItemDictDao extends BaseDao<IcServiceItemDictEntity> {
IcServiceItemDictEntity selectMax(String customerId);
String selectName(@Param("customerId") String customerId, @Param("categoryCode") String categoryCode);
/**
* 查询联建活动的服务事项名称
* @param activityId
* @param customerId
* @return
*/
List<String> selectActivityServiceItemName(@Param("activityId") String activityId,
@Param("customerId") String customerId);
}

14
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java

@ -83,14 +83,24 @@ public class IcPartyActivityEntity extends BaseEpmetEntity {
private String content;
/**
* 服务人数
* 服务人数;烟台服务人数是活动限制名额如果是0代表不限制
*/
private Integer peopleCount;
/**
* 活动时间
* 活动时间;烟台此列作为活动开始时间
*/
private Date activityTime;
/**
* 烟台此列作为活动结束时间;必填
*/
private Date activityEndTime;
/**
* 烟台活动封面必填
*/
private String coverUrl;
/**
* 活动地址

54
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivitySignUpRecordEntity.java

@ -0,0 +1,54 @@
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 2023-03-29
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_party_activity_sign_up_record")
public class IcPartyActivitySignUpRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 联建活动ID
*/
private String activityId;
/**
* 居民端用户id
*/
private String userId;
/**
* 姓名
*/
private String userName;
private String mobile;
/**
* 报名时间
*/
private Date signUpTime;
/**
* 用户报名时所在的网格
*/
private String gridId;
private String gridName;
}

76
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPublicServiceOrgEntity.java

@ -0,0 +1,76 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_public_service_org")
public class IcPublicServiceOrgEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* AGENCY_ID的pids
*/
private String pids;
/**
* 名称
*/
private String name;
/**
* 1实有单位2社会服务组织3志愿团队
*/
private String type;
/**
* 联系人
*/
private String contact;
/**
* 联系电话
*/
private String contactMobile;
/**
* 地址
*/
private String address;
/**
* 中心位置经度
*/
private String longitude;
/**
* 中心位置纬度
*/
private String latitude;
/**
* 备注
*/
private String remark;
}

44
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPublicServiceOrgServiceMatterEntity.java

@ -0,0 +1,44 @@
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 2023-02-03
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_public_service_org_service_matter")
public class IcPublicServiceOrgServiceMatterEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* ic_public_service_org.ID
*/
private String orgId;
/**
* ic_service_item_dict.ID
*/
private String categoryId;
/**
* 服务事项编码ic_service_item_dict.CATEGORY_CODE
*/
private String categoryCode;
}

45
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java

@ -17,9 +17,13 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 联建活动
*
@ -28,23 +32,42 @@ import lombok.Data;
*/
@Data
public class IcPartyActivityExcel {
@Excel(name = "序号")
private Integer index;
@Excel(name = "单位名称")
@ColumnWidth(20)
@ExcelProperty(value = "单位名称")
private String unitName;
@Excel(name = "活动标题")
@ColumnWidth(25)
@ExcelProperty(value = "活动标题")
private String title;
@Excel(name = "活动地址")
@ColumnWidth(35)
@ExcelProperty(value = "活动地址")
private String address;
@Excel(name = "服务人数")
@ColumnWidth(15)
@ExcelProperty(value = "服务人数")
private Integer peopleCount;
@Excel(name = "活动时间")
private String activityTime;
@ColumnWidth(20)
@ExcelProperty(value = "活动开始时间")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date activityTime;
/**
* 烟台此列作为活动结束时间;必填
*/
@ColumnWidth(20)
@ExcelProperty(value = "活动结束时间")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date activityEndTime;
/**
* actId不为空小程序
* 为空管理平台
*/
@ColumnWidth(20)
@ExcelProperty(value = "来源")
private String originName;
}

80
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java

@ -17,9 +17,16 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.epmet.commons.tools.utils.ExcelVerifyInfo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 联建活动
@ -28,39 +35,66 @@ import lombok.Data;
* @since v1.0.0 2021-11-19
*/
@Data
public class IcPartyActivityImportExcel extends ExcelVerifyInfo {
@Excel(name = "单位名称")
private String unitName;
@Excel(name = "服务事项")
private String serviceMatter;
public class IcPartyActivityImportExcel extends ExcelVerifyInfo {
@Excel(name = "活动标题")
@NotBlank(message = "活动标题必填")
@Length(max = 50, message = "活动标题最多输入50字")
@ExcelProperty(value = "活动标题*")
private String title;
@Excel(name = "活动目标")
@NotBlank(message = "活动目标必填")
@Length(max = 100, message = "活动目标最多输入100字")
@ExcelProperty(value = "活动目标*")
private String target;
@Excel(name = "活动内容")
private String content;
@NotNull(message = "服务人数必填")
@ExcelProperty(value = "服务人数*")
private Integer peopleCount;
@NotNull(message = "活动开始时间不能为空")
@ExcelProperty("活动开始时间*")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date activityTime;
@Excel(name = "活动地址")
/**
* 烟台此列作为活动结束时间;必填
*/
@NotNull(message = "活动结束时间不能为空")
@ExcelProperty("活动结束时间*")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date activityEndTime;
@NotBlank(message = "详细地址")
@Length(max = 250, message = "详细地址最多输入250字")
@ExcelProperty(value = "详细地址*")
private String address;
@Excel(name = "活动地址经度")
private String longitude;
@Excel(name = "活动地址纬度")
private String latitude;
@Data
public static class ErrorRow {
@ColumnWidth(38)
@ExcelProperty(value = "活动标题*")
private String title;
@Excel(name = "服务人数")
private Integer peopleCount;
@ColumnWidth(40)
@ExcelProperty(value = "活动目标*")
private String target;
@ColumnWidth(10)
@ExcelProperty(value = "服务人数*")
private Integer peopleCount;
@Excel(name = "活动时间")
private String activityTime;
@ColumnWidth(25)
@ExcelProperty("活动时间*")
private Date activityTime;
@Excel(name = "活动结果")
private String result;
@ColumnWidth(40)
@ExcelProperty(value = "详细地址*")
private String address;
@ColumnWidth(60)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

41
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitExcel.java

@ -17,7 +17,8 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
@ -29,30 +30,42 @@ import lombok.Data;
@Data
public class IcPartyUnitExcel {
@Excel(name = "序号")
private Integer index;
@Excel(name = "单位名称")
@ColumnWidth(30)
@ExcelProperty(value = "单位名称")
private String unitName;
@Excel(name = "分类")
private String type;
@ColumnWidth(25)
@ExcelProperty(value = "所属组织")
private String agencyName;
@ColumnWidth(25)
@ExcelProperty(value = "分类")
private String typeName;
@Excel(name = "服务事项")
private String serviceMatter;
/**
* 服务事项名称多个按照中文顿号隔开
*/
@ColumnWidth(100)
@ExcelProperty(value = "服务事项")
private String serviceMatterName;
@Excel(name = "联系人")
@ColumnWidth(16)
@ExcelProperty(value = "联系人")
private String contact;
@Excel(name = "联系电话")
@ColumnWidth(16)
@ExcelProperty(value = "联系电话")
private String contactMobile;
@Excel(name = "在职党员")
@ColumnWidth(18)
@ExcelProperty(value = "在职党员数")
private Integer memberCount;
@Excel(name = "群众满意度")
@ColumnWidth(18)
@ExcelProperty(value = "群众满意度")
private String satisfaction;
@Excel(name = "备注")
@ColumnWidth(100)
@ExcelProperty(value = "备注")
private String remark;
}

79
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportExcel.java

@ -17,9 +17,14 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.epmet.commons.tools.utils.ExcelVerifyInfo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 联建单位
@ -30,33 +35,73 @@ import lombok.Data;
@Data
public class IcPartyUnitImportExcel extends ExcelVerifyInfo {
@Excel(name = "单位名称")
@NotBlank(message = "单位名称必填")
@Length(max = 50,message = "单位名称最多输入50字")
@ExcelProperty(value = "单位名称*")
private String unitName;
@Excel(name = "分类")
private String type;
@Excel(name = "服务事项")
private String serviceMatter;
@NotBlank(message = "分类必填")
@ExcelProperty(value = "分类*")
private String typeName;
@Excel(name = "联系人")
@Length(max = 30,message = "联系人最多输入30字")
@NotBlank(message = "联系人必填")
@ExcelProperty(value = "联系人*")
private String contact;
@Excel(name = "联系电话")
@Length(max = 30,message = "联系电话最多输入30字")
@NotBlank(message = "联系电话必填")
@ExcelProperty(value = "联系电话*")
private String contactMobile;
@Excel(name = "在职党员")
@NotNull(message = "在职党员必填")
@ExcelProperty(value = "在职党员*")
private Integer memberCount;
@Excel(name = "地址")
@Length(max = 500,message = "备注最多输入50字")
@ExcelProperty(value = "备注")
private String remark;
@Length(max = 250,message = "详细地址最多输入250字")
@NotBlank(message = "详细地址必填")
@ExcelProperty(value = "详细地址*")
private String address;
@Excel(name = "中心位置经度")
private String longitude;
@Data
public static class ErrorRow {
@ColumnWidth(40)
@ExcelProperty("单位名称*")
private String unitName;
@Excel(name = "中心位置纬度")
private String latitude;
@ColumnWidth(20)
@ExcelProperty("分类*")
private String type;
@Excel(name = "备注")
private String remark;
@ColumnWidth(20)
@ExcelProperty("联系人*")
private String contact;
@ColumnWidth(20)
@ExcelProperty("联系电话*")
private String contactMobile;
@ColumnWidth(10)
@ExcelProperty("在职党员*")
private Integer memberCount;
@ColumnWidth(30)
@ExcelProperty("备注")
private String remark;
@ColumnWidth(50)
@ExcelProperty("详细地址*")
private String address;
@ColumnWidth(50)
@ExcelProperty("错误信息")
private String errorInfo;
}
}

20
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java

@ -30,9 +30,27 @@ import lombok.Data;
@Data
public class IcPartyUnitImportFailedExcel extends ExcelVerifyInfo {
@Excel(name = "单位名称", width = 40)
@Excel(name = "单位名称*", width = 40)
private String unitName;
@Excel(name = "分类*",width = 20)
private String type;
@Excel(name = "联系人*",width = 20)
private String contact;
@Excel(name = "联系电话*",width = 20)
private String contactMobile;
@Excel(name = "在职党员*",width = 10)
private Integer memberCount;
@Excel(name = "备注",width = 30)
private String remark;
@Excel(name = "详细地址*",width = 50)
private String address;
@Excel(name = "错误信息", width = 50)
private String errorInfo;
}

111
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyActivityImportListener.java

@ -0,0 +1,111 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.entity.IcPartyActivityEntity;
import com.epmet.excel.IcPartyActivityImportExcel;
import com.epmet.service.impl.IcPartyActivityServiceImpl;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2023/2/20 15:36
*/
@Slf4j
public class IcPartyActivityImportListener implements ReadListener<IcPartyActivityImportExcel> {
/**
* 最大条数阈值
*/
public static final int MAX_THRESHOLD = 200;
/**
* 当前操作用户
*/
private CustomerStaffInfoCacheResult staffInfo;
private String customerId;
/**
* 数据
*/
private List<IcPartyActivityEntity> datas = new ArrayList<>();
/**
* 错误项列表
*/
private List<IcPartyActivityImportExcel.ErrorRow> errorRows = new ArrayList<>();
private IcPartyActivityServiceImpl icPartyActivityService;
public IcPartyActivityImportListener(String customerId, CustomerStaffInfoCacheResult staffInfo, IcPartyActivityServiceImpl icPartyActivityService) {
this.customerId=customerId;
this.staffInfo = staffInfo;
this.icPartyActivityService = icPartyActivityService;
}
@Override
public void invoke(IcPartyActivityImportExcel data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
IcPartyActivityEntity e = ConvertUtils.sourceToTarget(data, IcPartyActivityEntity.class);
e.setCustomerId(customerId);
e.setAgencyId(staffInfo.getAgencyId());
e.setPids(staffInfo.getAgencyPIds());
e.setContent(StrConstant.EPMETY_STR);
datas.add(e);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【联建活动导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcPartyActivityImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyActivityImportExcel.ErrorRow.class);
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
if (datas != null && datas.size() > 0) {
icPartyActivityService.batchPersist(datas);
}
} finally {
datas.clear();
}
}
/**
* 获取错误行
* @return
*/
public List<IcPartyActivityImportExcel.ErrorRow> getErrorRows() {
return errorRows;
}
}

139
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/handler/IcPartyUnitExcelImportListener.java

@ -0,0 +1,139 @@
package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.entity.IcPartyUnitEntity;
import com.epmet.excel.IcPartyUnitImportExcel;
import com.epmet.service.impl.IcPartyUnitServiceImpl;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* @Description
* @Author yzm
* @Date 2023/2/20 15:36
*/
@Slf4j
public class IcPartyUnitExcelImportListener implements ReadListener<IcPartyUnitImportExcel> {
/**
* 最大条数阈值
*/
public static final int MAX_THRESHOLD = 200;
/**
* 当前操作用户
*/
private CustomerStaffInfoCacheResult staffInfo;
private String customerId;
/**
* 数据
*/
private List<IcPartyUnitEntity> datas = new ArrayList<>();
/**
* 错误项列表
*/
private List<IcPartyUnitImportExcel.ErrorRow> errorRows = new ArrayList<>();
private IcPartyUnitServiceImpl icPartyUnitService;
//字典表数据
private Map<String, String> partyUnitTypeMap;
public IcPartyUnitExcelImportListener(String customerId, CustomerStaffInfoCacheResult staffInfo, IcPartyUnitServiceImpl icPartyUnitService,Map<String, String> partyUnitTypeMap) {
this.customerId=customerId;
this.staffInfo = staffInfo;
this.icPartyUnitService = icPartyUnitService;
this.partyUnitTypeMap=partyUnitTypeMap;
}
@Override
public void invoke(IcPartyUnitImportExcel data, AnalysisContext context) {
try {
// 先校验数据
ValidatorUtils.validateEntity(data);
AtomicBoolean bl = new AtomicBoolean(false);
StringBuffer errMsg = new StringBuffer("");
//先对一下字段值填写是否正确做判断
if (!partyUnitTypeMap.containsKey(data.getTypeName())) {
errMsg.append("‘返回方式’值填写错误;");
bl.set(true);
}
//错误数据记录到错误文件
if (bl.get()) {
IcPartyUnitImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyUnitImportExcel.ErrorRow.class);
errorRow.setErrorInfo(errMsg.toString());
errorRows.add(errorRow);
return;
}
// 判断名称是否已存在
if(icPartyUnitService.checkUnitName(data.getUnitName(),staffInfo.getAgencyId(),null)){
IcPartyUnitImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyUnitImportExcel.ErrorRow.class);
errorRow.setErrorInfo("联建单位名称已存在");
errorRows.add(errorRow);
return;
}
IcPartyUnitEntity e = ConvertUtils.sourceToTarget(data, IcPartyUnitEntity.class);
if (partyUnitTypeMap.containsKey(data.getTypeName())) {
e.setType(partyUnitTypeMap.get(data.getTypeName()));
}
e.setCustomerId(customerId);
e.setAgencyId(staffInfo.getAgencyId());
e.setPids(staffInfo.getAgencyPIds());
datas.add(e);
if (datas.size() == MAX_THRESHOLD) {
execPersist();
}
} catch (Exception e) {
String errorMsg = null;
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
log.error("【联建单位导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}
IcPartyUnitImportExcel.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,IcPartyUnitImportExcel.ErrorRow.class);
errorRow.setErrorInfo(errorMsg);
errorRows.add(errorRow);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 最后几条达不到阈值,这里必须再调用一次
execPersist();
}
/**
* 执行持久化
*/
private void execPersist() {
try {
if (datas != null && datas.size() > 0) {
icPartyUnitService.batchPersist(datas);
}
} finally {
datas.clear();
}
}
/**
* 获取错误行
* @return
*/
public List<IcPartyUnitImportExcel.ErrorRow> getErrorRows() {
return errorRows;
}
}

7
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java

@ -22,6 +22,13 @@ public interface IcActivityUnitRelationService extends BaseService<IcActivityUni
*/
List<String> getUnitList(String activityId);
/**
* 获取联建活动关联的联建单位名称
* @param activityId
* @return
*/
List<String> getActivityUntiNames(String activityId);
/**
* 物理删除删除活动所属单位
*

73
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java

@ -22,12 +22,12 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcPartyActivityDTO;
import com.epmet.dto.form.PartyActivityFormDTO;
import com.epmet.dto.result.PartyActivityResDTO;
import com.epmet.dto.result.PartyActivitySignUpRecordResDTO;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.entity.IcPartyActivityEntity;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
/**
@ -88,17 +88,6 @@ public interface IcPartyActivityService extends BaseService<IcPartyActivityEntit
*/
void delete(String id);
/**
* 导入数据
* @Param tokenDto
* @Param response
* @Param file
* @Return
* @Author zhaoqifeng
* @Date 2021/11/29 11:01
*/
void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException;
/**
* 联建活动统计
* @Param formDTO
@ -134,4 +123,60 @@ public interface IcPartyActivityService extends BaseService<IcPartyActivityEntit
* @Date 2021/12/23 16:13
*/
void deleteByActId(String actId);
/**
* 执行Excel导入
* @param filePath
*/
void execAsyncExcelImport(Path filePath, String importTaskId,String customerId,String userId);
/**
* 人员名单
* @param activityId
* @return
*/
PageData<PartyActivitySignUpRecordResDTO> querySignUpRecord(String activityId,Integer pageNo,Integer pageSize);
/**
* 居民端钉钉报名联建活动
* @param activityId
* @param userId
* @param gridId
*/
String signUp(String activityId, String userId, String gridId);
/**
* 居民端钉钉查看联建活动详情
* @param customerId
* @param userId
* @param activityId
* @return
*/
PartyActivityResDTO queryActDetailForResi(String customerId, String userId, String activityId);
/**
* 居民端钉钉-分页查询全部联建活动
*
* @param pageNo
* @param pageSize
* @param gridId
* @param userId
* @return
*/
PageData<PartyActivityResDTO> pageAllAct(Integer pageNo, Integer pageSize, String gridId, String agencyId,String userId);
/**
* 居民端钉钉已报名列表
* @param pageNo
* @param pageSize
* @param gridId
* @param agencyId
* @param userId
* @return
*/
PageData<PartyActivityResDTO> appliedAct(Integer pageNo,
Integer pageSize,
String gridId,
String agencyId,
String userId);
}

32
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java

@ -14,10 +14,8 @@ import com.epmet.dto.result.PartyUnitDistributionResultDTO;
import com.epmet.dto.result.PartyUnitListResultDTO;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.entity.IcPartyUnitEntity;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
/**
@ -108,25 +106,13 @@ public interface IcPartyUnitService extends BaseService<IcPartyUnitEntity> {
List<OptionDTO> options(IcPartyUnitDTO dto);
/**
* 导入数据
*
* @Param tokenDto
* @Param response
* @Param file
* @Return
* @Author zhaoqifeng
* @Date 2021/11/29 11:01
*/
void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException;
/**
* @Description 按类型统计单位数量
* @Param formDTO
* @Description 按类型统计单位数量可视化平台-社区党建-联建单位分析-饼图展示分类下的联建单位数量
* @Param agencyId
* @Return {@link List< OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/8 14:56
*/
List<OptionDataResultDTO> typeStatistics(PartyActivityFormDTO formDTO);
List<OptionDataResultDTO> typeStatistics(String agencyId);
/**
* 联建单位分布
@ -149,6 +135,7 @@ public interface IcPartyUnitService extends BaseService<IcPartyUnitEntity> {
/**
* Desc: 获取联建单位名字
* 查询项目处理进展时调用
* @param formDTO
* @author zxc
* @date 2022/5/17 17:53
@ -165,7 +152,8 @@ public interface IcPartyUnitService extends BaseService<IcPartyUnitEntity> {
/**
* 联建单位-简要信息列表
* 可视化平台-社区党建-联建单位分析
* 联建单位-简要信息列表展示单位名称单位类型
*
* @param form
*/
@ -187,4 +175,10 @@ public interface IcPartyUnitService extends BaseService<IcPartyUnitEntity> {
* @return
*/
List<String> getUnitNames(List<String> unitIds);
/**
* 执行Excel导入
* @param filePath
*/
void execAsyncExcelImport(Path filePath, String importTaskId,String customerId,String userId);
}

34
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPublicServiceOrgService.java

@ -0,0 +1,34 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.IcPublicServiceOrgFormDTO;
import com.epmet.dto.form.IcPublicServiceOrgPageFormDTO;
import com.epmet.dto.result.IcPublicServiceOrgDetailResDTO;
import com.epmet.entity.IcPublicServiceOrgEntity;
import java.util.List;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
public interface IcPublicServiceOrgService extends BaseService<IcPublicServiceOrgEntity> {
/**
* 公共服务组织
* @param dto
* @return
*/
String save(IcPublicServiceOrgFormDTO dto);
String update(IcPublicServiceOrgFormDTO formDTO);
void delete(List<String> orgIds);
IcPublicServiceOrgDetailResDTO get(String id);
PageData<IcPublicServiceOrgDetailResDTO> page(IcPublicServiceOrgPageFormDTO formDTO);
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java

@ -81,4 +81,14 @@ public interface IcServiceItemDictService extends BaseService<IcServiceItemDictE
void customerInit(String customerId);
String getCategoryName(String customerId, String id);
List<ServiceItemResultDTO> queryDictOption(String type, String customerId);
/**
* 查询联建活动的服务事项名称列表
* @param activityId
* @param customerId
* @return
*/
List<String> getByActivityId(String activityId, String customerId);
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java

@ -30,6 +30,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.constant.ActConstant;
import com.epmet.dao.ActInfoDao;
import com.epmet.dao.ActUserRelationDao;
@ -66,16 +67,13 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
private Logger logger = LogManager.getLogger(ActInfoServiceImpl.class);
@Autowired
private ActUserRelationService relationService;
@Autowired
private ActUserRelationDao actUserRelationDao;
@Autowired
private HeartUserInfoDao heartUserInfoDao;
@Resource
private IcPartyUnitService icPartyUnitService;
// @Resource
// private IcPartyUnitService icPartyUnitService;
@Resource
private IcServiceItemDictService icServiceItemDictService;
@Resource
@ -276,7 +274,7 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
//获取联建单位
IcPartyUnitDTO unitDTO = new IcPartyUnitDTO();
unitDTO.setAgencyId(dto.getAgencyId());
Map<String, String> option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
Map<String, String> option = SpringContextUtils.getBean(IcPartyUnitService.class).option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
List<String> unitIds = icActivityUnitRelationService.getUnitList(dto.getId());
List<String> unitNames = unitIds.stream().map(option::get).collect(Collectors.toList());
detailResultDTO.setUnitIdList(unitIds);

11
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java

@ -43,6 +43,17 @@ public class IcActivityUnitRelationServiceImpl extends BaseServiceImpl<IcActivit
return list.stream().map(IcActivityUnitRelationEntity::getUnitId).collect(Collectors.toList());
}
/**
* 获取联建活动关联的联建单位名称
*
* @param activityId
* @return
*/
@Override
public List<String> getActivityUntiNames(String activityId) {
return baseDao.selectActivityUntiNames(activityId);
}
/**
* 删除活动所属单位
*

570
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java

@ -17,40 +17,40 @@
package com.epmet.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelPoiUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcPartyActivityDao;
import com.epmet.dao.IcPartyActivitySignUpRecordDao;
import com.epmet.dto.IcPartyActivityDTO;
import com.epmet.dto.IcPartyUnitDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.PartyActivityFormDTO;
import com.epmet.dto.result.ActivityStatisticsDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.dto.result.*;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.entity.IcActivityServiceRelationEntity;
import com.epmet.entity.IcActivityUnitRelationEntity;
import com.epmet.entity.IcPartyActivityEntity;
import com.epmet.entity.IcPartyActivitySignUpRecordEntity;
import com.epmet.excel.IcPartyActivityImportExcel;
import com.epmet.excel.IcPartyActivityImportFailedExcel;
import com.epmet.excel.handler.IcPartyActivityImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.*;
import com.github.pagehelper.PageHelper;
@ -62,16 +62,17 @@ import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -88,8 +89,8 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
@Resource
private IcPartyUnitService icPartyUnitService;
@Resource
private IcServiceItemDictService icServiceItemDictService;
// @Resource
// private IcServiceItemDictService icServiceItemDictService;
@Resource
private IcActivityUnitRelationService icActivityUnitRelationService;
@Resource
@ -98,6 +99,10 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
private OssFeignClient ossFeignClient;
@Resource
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
private IcPartyActivitySignUpRecordDao partyActivitySignUpRecordDao;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Override
@ -121,15 +126,17 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
unitDTO.setAgencyId(formDTO.getAgencyId());
// Map<String, String> option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
dtoList.forEach(dto -> {
//联建单位ID与单位名匹配
List<String> unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA));
// List<String> unitNames = unitIds.stream().map(option::get).collect(Collectors.toList());
// if(CollectionUtils.isEmpty(unitNames)){
List<String> unitNames=icPartyUnitService.getUnitNames(unitIds);
// }
dto.setUnitIdList(unitIds);
dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA));
dto.setUnitNameList(unitNames);
if(StringUtils.isNotBlank(dto.getUnitId())){
//联建单位ID与单位名匹配
List<String> unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA));
// List<String> unitNames = unitIds.stream().map(option::get).collect(Collectors.toList());
// if(CollectionUtils.isEmpty(unitNames)){
List<String> unitNames=icPartyUnitService.getUnitNames(unitIds);
// }
dto.setUnitIdList(unitIds);
dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA));
dto.setUnitNameList(unitNames);
}
if (StringUtils.isNotEmpty(dto.getGridId())) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId());
if (null != gridInfo) {
@ -142,7 +149,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
List<String> serviceMatterid = Arrays.asList(dto.getServiceMatter().split(StrConstant.COMMA));
List<String> serviceMatterNameList=new ArrayList<>();
for(String id:serviceMatterid){
String categoryName=icServiceItemDictService.getCategoryName(dto.getCustomerId(),id);
String categoryName=SpringContextUtils.getBean(IcServiceItemDictService.class).getCategoryName(dto.getCustomerId(),id);
if(StringUtils.isNotBlank(categoryName)){
serviceMatterNameList.add(categoryName);
}
@ -151,10 +158,15 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
dto.setServiceMatterNameList(serviceMatterNameList);
dto.setServiceMatterName(StringUtils.join(serviceMatterNameList, StrConstant.COMMA));
}
if(StringUtils.isNotBlank(dto.getActId())){
dto.setOriginName("小程序");
}else{
dto.setOriginName("管理平台");
}
});
}
return new PageData<>(dtoList, pageInfo.getTotal());
return new PageData<>(dtoList, pageInfo.getTotal(),formDTO.getPageSize());
}
@Override
@ -199,7 +211,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
IcPartyActivityDTO dto = ConvertUtils.sourceToTarget(entity, IcPartyActivityDTO.class);
//获取服务事项
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(entity.getCustomerId());
List<OptionDTO> serviceItemList = SpringContextUtils.getBean(IcServiceItemDictService.class).queryDictList(entity.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
List<String> services = icActivityServiceRelationService.getServiceList(id);
List<String> serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList());
@ -278,248 +290,6 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
icActivityServiceRelationService.delete(id);
}
/**
* 导入数据
*
* @param tokenDto
* @param response
* @param file
* @Param tokenDto
* @Param response
* @Param file
* @Return
* @Author zhaoqifeng
* @Date 2021/11/29 11:01
*/
@Override
public void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException {
List<IcPartyActivityImportFailedExcel> fileList = new ArrayList<>();
ExcelImportResult<IcPartyActivityImportExcel> importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyActivityImportExcel.class);
List<IcPartyActivityImportExcel> failList = importResult.getFailList();
//存放错误数据行号
if (!org.springframework.util.CollectionUtils.isEmpty(failList)) {
for (IcPartyActivityImportExcel entity : failList) {
//打印失败的行 和失败的信息
log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg());
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo(entity.getErrorMsg());
fileList.add(failed);
}
}
List<IcPartyActivityImportExcel> result = importResult.getList();
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
//获取服务事项
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//获取联建单位
IcPartyUnitDTO unitDTO = new IcPartyUnitDTO();
unitDTO.setAgencyId(staffInfoCache.getAgencyId());
Map<String, String> option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getLabel, OptionDTO::getValue));
//1.数据校验
Iterator<IcPartyActivityImportExcel> iterator = result.iterator();
while (iterator.hasNext()) {
IcPartyActivityImportExcel obj = iterator.next();
//单位名称校验
if (StringUtils.isBlank(obj.getUnitName())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("单位名称为空");
fileList.add(failed);
log.warn(String.format("单位名称为空,行号->%s", obj.getRowNum()));
iterator.remove();
} else {
List<String> unitList = Arrays.asList(obj.getUnitName().split(StrConstant.COMMA));
unitList.forEach(unit -> {
if (null == option.get(unit)) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("单位名称不存在");
fileList.add(failed);
log.warn(String.format("单位名称不存在,行号->%s", obj.getRowNum()));
iterator.remove();
}
});
}
//服务事项校验
if (StringUtils.isBlank(obj.getServiceMatter())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("服务事项为空");
fileList.add(failed);
log.warn(String.format("服务事项为空,行号->%s", obj.getRowNum()));
iterator.remove();
} else {
List<String> serviceList = Arrays.asList(obj.getServiceMatter().split(StrConstant.SEMICOLON));
serviceList.forEach(service -> {
if (null == categoryMap.get(service)) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("服务事项不存在");
fileList.add(failed);
log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum()));
iterator.remove();
}
});
}
//活动标题 活动目标 活动内容 活动时间 活动地址 活动地址经度 活动地址纬度 活动结果
if (StringUtils.isBlank(obj.getTitle())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动标题为空");
fileList.add(failed);
log.warn(String.format("活动标题为空,行号->%s", obj.getRowNum()));
iterator.remove();
} else if (StringUtils.isBlank(obj.getTarget())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动目标为空");
fileList.add(failed);
log.warn(String.format("活动目标为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getContent())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动内容为空");
fileList.add(failed);
log.warn(String.format("活动内容为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getActivityTime())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动时间为空");
fileList.add(failed);
log.warn(String.format("活动时间为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getAddress())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动地址为空");
fileList.add(failed);
log.warn(String.format("活动地址为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getLatitude())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动地址纬度为空");
fileList.add(failed);
log.warn(String.format("活动地址纬度为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getLongitude())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动地址经度为空");
fileList.add(failed);
log.warn(String.format("活动地址经度为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getResult())) {
IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class);
failed.setErrorInfo("活动结果为空");
fileList.add(failed);
log.warn(String.format("活动结果为空,行号->%s", obj.getRowNum()));
}
}
if (CollectionUtils.isNotEmpty(result)) {
result.forEach(item -> {
IcPartyActivityEntity entity = new IcPartyActivityEntity();
entity.setCustomerId(tokenDto.getCustomerId());
entity.setAgencyId(staffInfoCache.getAgencyId());
entity.setPids(staffInfoCache.getAgencyPIds());
entity.setTitle(item.getTitle());
entity.setTarget(item.getTarget());
entity.setContent(item.getContent());
entity.setPeopleCount(item.getPeopleCount());
entity.setActivityTime(DateUtils.parse(item.getActivityTime(), DateUtils.DATE_TIME_PATTERN));
entity.setAddress(item.getAddress());
entity.setLatitude(item.getLatitude());
entity.setLongitude(item.getLongitude());
entity.setResult(item.getResult());
insert(entity);
//保存活动与单位关系
icActivityUnitRelationService.deleteByActivity(entity.getId());
AtomicInteger i = new AtomicInteger(NumConstant.ONE);
List<IcActivityUnitRelationEntity> unitRelationList = Arrays.stream(item.getUnitName().split(StrConstant.COMMA)).map(unit -> {
IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity();
relation.setCustomerId(entity.getCustomerId());
relation.setAgencyId(entity.getAgencyId());
relation.setPids(entity.getPids());
relation.setActivityId(entity.getId());
relation.setUnitId(option.get(unit));
relation.setSort(i.getAndIncrement());
return relation;
}).collect(Collectors.toList());
icActivityUnitRelationService.insertBatch(unitRelationList);
//保存活动与服务关系
icActivityServiceRelationService.deleteByActivity(entity.getId());
AtomicInteger j = new AtomicInteger(NumConstant.ONE);
List<IcActivityServiceRelationEntity> serviceRelationList = Arrays.stream(item.getServiceMatter().split(StrConstant.SEMICOLON)).map(service -> {
IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity();
relation.setCustomerId(entity.getCustomerId());
relation.setAgencyId(entity.getAgencyId());
relation.setPids(entity.getPids());
relation.setActivityId(entity.getId());
relation.setServiceMatter(categoryMap.get(service));
relation.setSort(j.getAndIncrement());
return relation;
}).collect(Collectors.toList());
icActivityServiceRelationService.insertBatch(serviceRelationList);
});
}
String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size());
if (fileList.size() > NumConstant.ZERO) {
List<Integer> numList = fileList.stream().map(IcPartyActivityImportFailedExcel::getRowNum).sorted().collect(Collectors.toList());
String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、"));
log.warn(str + "第" + subList + "行未成功!");
}
//错误数据生成文件,修改导入任务状态
erroeImport(fileList, taskId, tokenDto.getUserId());
}
private void erroeImport(List<IcPartyActivityImportFailedExcel> fileList, String importTaskId, String staffId) throws IOException {
String url = "";
//1.有错误数据则生成错误数据存放文件传到阿里云服务
if (CollectionUtils.isNotEmpty(fileList)) {
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"),
IcPartyActivityImportFailedExcel.class, fileList);
// 文件名
String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx");
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName);
OutputStream os = fileItem.getOutputStream();
Result<UploadImgResultDTO> uploadResult = null;
try {
workbook.write(os);
uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建活动信息导入】上传错误描述文件:{}", errormsg);
} finally {
try {
os.close();
} catch (IOException e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建活动信息导入】上传错误描述文件关闭输出流:{}", errormsg);
}
try {
fileItem.delete();
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建活动信息导入】上传错误描述文件删除临时文件:{}", errormsg);
}
}
if (uploadResult == null || !uploadResult.success()) {
log.error("【联建活动信息导入】调用OSS上传结果描述文件失败");
} else {
url = uploadResult.getData().getUrl();
}
}
//2.更新导入任务数据
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOperatorId(staffId);
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY);
importTaskForm.setTaskId(importTaskId);
importTaskForm.setResultDescFilePath(url);
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
if (CollectionUtils.isNotEmpty(fileList)) {
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importTaskForm.setResultDesc("联建活动导入存在错误数据");
}
Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
}
/**
* 联建活动统计
*
@ -575,7 +345,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
//获取联建单位
Map<String, String> option = icPartyUnitService.options(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//获取服务事项字典
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId());
List<OptionDTO> serviceItemList = SpringContextUtils.getBean(IcServiceItemDictService.class).queryDictList(tokenDto.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//数据组装
dtoList.forEach(dto -> {
@ -651,4 +421,262 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
formDTO.setEndTime(DateUtils.parse(end.concat(" 23:59:59"), DateUtils.DATE_TIME_PATTERN));
}
/**
* 执行Excel导入
*
* @param filePath
* @param importTaskId
* @param customerId
* @param userId
*/
@Async
@Override
public void execAsyncExcelImport(Path filePath, String importTaskId, String customerId, String userId) {
try {
//获取当前登录用户所属组织id
CustomerStaffInfoCacheResult staffInfo= SpringContextUtils.getBean(IcPartyUnitServiceImpl.class).queryCurrentStaff(customerId,userId);
IcPartyActivityImportListener listener = new IcPartyActivityImportListener(customerId,staffInfo, this);
EasyExcel.read(filePath.toFile(), IcPartyActivityImportExcel.class, listener).headRowNumber(1).sheet(0).doRead();
Path errorDescFile = null;
String errorDesFileUrl = null;
List<IcPartyActivityImportExcel.ErrorRow> errorRows = listener.getErrorRows();
boolean failed = errorRows.size() > 0;
if (failed) {
// 生成并上传错误文件
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_activity", "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
errorDescFile = errorDescDir.resolve(fileName);
FileItemFactory factory = new DiskFileItemFactory(16, errorDescDir.toFile());
FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName);
OutputStream os = fileItem.getOutputStream();
EasyExcel.write(os, IcPartyActivityImportExcel.ErrorRow.class).sheet("导入失败列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
if (Files.exists(errorDescFile)) {
Files.delete(errorDescFile);
}
}
}
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("");
importFinishTaskForm.setResultDescFilePath(errorDesFileUrl);
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【联建活动导入】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建活动导入】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("导入失败");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【联建活动导入】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
log.error("method exception", e);
}
}
}
}
/**
* 批量持久化
* @param entities
*/
public void batchPersist(List<IcPartyActivityEntity> entities) {
entities.forEach(e -> {
String id = IdWorker.getIdStr(e);
e.setId(id);
baseDao.insert(e);
});
}
/**
* 人员名单
*
* @param activityId
* @return
*/
@Override
public PageData<PartyActivitySignUpRecordResDTO> querySignUpRecord(String activityId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
List<PartyActivitySignUpRecordResDTO> list = partyActivitySignUpRecordDao.querySignUpRecord(activityId);
PageInfo<PartyActivitySignUpRecordResDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
/**
* 居民端钉钉报名联建活动
*
* @param activityId
* @param userId
* @param gridId
*/
@Override
public String signUp(String activityId, String userId, String gridId) {
LambdaQueryWrapper<IcPartyActivitySignUpRecordEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId)
.eq(IcPartyActivitySignUpRecordEntity::getUserId, userId)
.select(IcPartyActivitySignUpRecordEntity::getId);
IcPartyActivitySignUpRecordEntity entity = partyActivitySignUpRecordDao.selectOne(queryWrapper);
if (null != entity) {
return entity.getId();
}
// 查询网格名称
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(gridId);
if (null == gridInfoCache) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "网格信息查询异常gridId:" + gridId, "网格信息查询异常");
}
// 查询用户姓名和手机号
List<String> userIdList=new ArrayList<>();
userIdList.add(userId);
Result<List<UserBaseInfoResultDTO>> userRes = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList);
if (!userRes.success() || CollectionUtils.isEmpty(userRes.getData())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "网格信息查询异常gridId:" + gridId, "查询用户信息异常");
}
UserBaseInfoResultDTO userBaseInfoResultDTO=userRes.getData().get(NumConstant.ZERO);
IcPartyActivitySignUpRecordEntity insert = new IcPartyActivitySignUpRecordEntity();
insert.setActivityId(activityId);
insert.setCustomerId(EpmetRequestHolder.getLoginUserCustomerId());
insert.setGridId(gridId);
insert.setGridName(gridInfoCache.getGridNamePath());
insert.setUserId(userId);
insert.setUserName(userBaseInfoResultDTO.getRealName());
insert.setMobile(userBaseInfoResultDTO.getMobile());
insert.setSignUpTime(new Date());
partyActivitySignUpRecordDao.insert(insert);
return insert.getId();
}
/**
* 居民端钉钉查看联建活动详情
*
* @param customerId
* @param userId
* @param activityId
* @return
*/
@Override
public PartyActivityResDTO queryActDetailForResi(String customerId, String userId, String activityId) {
IcPartyActivityEntity activityEntity = baseDao.selectById(activityId);
if (null == activityEntity) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "联建活动不存在,activityId:" + activityId, "联建活动不存在");
}
PartyActivityResDTO resDTO = ConvertUtils.sourceToTarget(activityEntity, PartyActivityResDTO.class);
resDTO.setSignUpFlag(false);
resDTO.setActivityId(activityId);
// 当前用户是否报名
LambdaQueryWrapper<IcPartyActivitySignUpRecordEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId)
.eq(IcPartyActivitySignUpRecordEntity::getUserId, userId)
.select(IcPartyActivitySignUpRecordEntity::getId);
IcPartyActivitySignUpRecordEntity signUpRecordEntity = partyActivitySignUpRecordDao.selectOne(queryWrapper);
if (null != signUpRecordEntity) {
resDTO.setSignUpId(signUpRecordEntity.getId());
resDTO.setSignUpFlag(true);
}
// 主办方:组织名称
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId());
if (null != agencyInfoCache) {
resDTO.setAgencyName(agencyInfoCache.getOrganizationName());
}
// 联建单位:
resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(activityId));
// 服务事项
resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(activityId,activityEntity.getCustomerId()));
// 报名总人数
LambdaQueryWrapper<IcPartyActivitySignUpRecordEntity> countWrapper = new LambdaQueryWrapper<>();
countWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId);
resDTO.setSignUpCount(partyActivitySignUpRecordDao.selectCount(countWrapper));
return resDTO;
}
/**
* 居民端钉钉-分页查询全部联建活动
*
* @param pageNo
* @param pageSize
* @param gridId
* @param userId
* @return
*/
@Override
public PageData<PartyActivityResDTO> pageAllAct(Integer pageNo, Integer pageSize, String gridId,String agencyId, String userId) {
PageHelper.startPage(pageNo,pageSize);
List<PartyActivityResDTO> list=baseDao.pageAllAct(EpmetRequestHolder.getLoginUserCustomerId(),gridId,agencyId,userId);
list.forEach(resDTO->{
// 主办方:组织名称
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId());
if (null != agencyInfoCache) {
resDTO.setAgencyName(agencyInfoCache.getOrganizationName());
}
// 联建单位:
resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(resDTO.getActivityId()));
// 服务事项
resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(resDTO.getActivityId(),EpmetRequestHolder.getLoginUserCustomerId()));
});
PageInfo<PartyActivityResDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(),pageSize);
}
/**
* 居民端钉钉已报名列表
*
* @param pageNo
* @param pageSize
* @param gridId
* @param agencyId
* @param userId
* @return
*/
@Override
public PageData<PartyActivityResDTO> appliedAct(Integer pageNo, Integer pageSize, String gridId, String agencyId, String userId) {
PageHelper.startPage(pageNo, pageSize);
List<PartyActivityResDTO> list = baseDao.selectAppliedAct(EpmetRequestHolder.getLoginUserCustomerId(), gridId, agencyId, userId);
list.forEach(resDTO -> {
// 主办方:组织名称
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId());
if (null != agencyInfoCache) {
resDTO.setAgencyName(agencyInfoCache.getOrganizationName());
}
// 联建单位:
resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(resDTO.getActivityId()));
// 服务事项
resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(resDTO.getActivityId(), EpmetRequestHolder.getLoginUserCustomerId()));
});
PageInfo<PartyActivityResDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
}

395
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java

@ -17,12 +17,11 @@
package com.epmet.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO;
import com.epmet.commons.tools.constant.FieldConstant;
@ -33,11 +32,9 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.DictListResultDTO;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.enums.DictTypeEnum;
import com.epmet.commons.tools.enums.PartyUnitTypeEnum;
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.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -45,8 +42,9 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelPoiUtils;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.constant.UserDemandConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcPartyUnitDao;
@ -59,7 +57,7 @@ import com.epmet.dto.result.demand.ServiceStatDTO;
import com.epmet.entity.IcCommunitySelfOrganizationEntity;
import com.epmet.entity.IcPartyUnitEntity;
import com.epmet.excel.IcPartyUnitImportExcel;
import com.epmet.excel.IcPartyUnitImportFailedExcel;
import com.epmet.excel.handler.IcPartyUnitExcelImportListener;
import com.epmet.feign.*;
import com.epmet.service.IcCommunitySelfOrganizationService;
import com.epmet.service.IcPartyUnitService;
@ -75,18 +73,18 @@ import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.stream.Collectors;
@ -102,16 +100,16 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
@Resource
private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient;
@Resource
private IcUserDemandRecService icUserDemandRecService;
// @Resource
// private IcUserDemandRecService icUserDemandRecService;
@Resource
private IcServiceItemDictService icServiceItemDictService;
@Resource
private OssFeignClient ossFeignClient;
@Resource
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Resource
private EpmetHeartOpenFeignClient heartOpenFeignClient;
// @Resource
// private EpmetHeartOpenFeignClient heartOpenFeignClient;
@Resource
private IcCommunitySelfOrganizationService icCommunitySelfOrganizationService;
@Resource
@ -143,8 +141,10 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(formDTO.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//获取单位积分
Map<String, Integer> pointMap = icUserDemandRecService.getServicePoint(formDTO.getCustomerId(), UserDemandConstant.PARTY_UNIT);
Map<String, Integer> pointMap = SpringContextUtils.getBean(IcUserDemandRecService.class).getServicePoint(formDTO.getCustomerId(), UserDemandConstant.PARTY_UNIT);
dtoList.forEach(item -> {
item.setTypeName(unitTypeMap.getData().get(item.getType()));
//这是错误的,应该是赋值type,遗留bug, 先不改了....
item.setType(unitTypeMap.getData().get(item.getType()));
if (StringUtils.isNotBlank(item.getServiceMatter())) {
List<String> matters = Arrays.asList(item.getServiceMatter().split(StrConstant.COMMA));
@ -181,8 +181,10 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(formDTO.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//获取单位积分
Map<String, Integer> pointMap = icUserDemandRecService.getServicePoint(formDTO.getCustomerId(), UserDemandConstant.PARTY_UNIT);
Map<String, Integer> pointMap = SpringContextUtils.getBean(IcUserDemandRecService.class).getServicePoint(formDTO.getCustomerId(), UserDemandConstant.PARTY_UNIT);
dtoList.forEach(item -> {
item.setTypeName(unitTypeMap.getData().get(item.getType()));
//这是错误的,应该是赋值type,遗留bug, 先不改了....
item.setType(unitTypeMap.getData().get(item.getType()));
if (StringUtils.isNotBlank(item.getServiceMatter())) {
List<String> matters = Arrays.asList(item.getServiceMatter().split(StrConstant.COMMA));
@ -210,13 +212,15 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
IcPartyUnitDTO dto = ConvertUtils.sourceToTarget(entity, IcPartyUnitDTO.class);
if (StringUtils.isNotBlank(dto.getServiceMatter())) {
//获取单位积分
Map<String, Integer> pointMap = icUserDemandRecService.getServicePoint(entity.getCustomerId(), UserDemandConstant.PARTY_UNIT);
Map<String, Integer> pointMap = SpringContextUtils.getBean(IcUserDemandRecService.class).getServicePoint(entity.getCustomerId(), UserDemandConstant.PARTY_UNIT);
dto.setServiceMatterList(Arrays.asList(dto.getServiceMatter().split(StrConstant.COMMA)));
dto.setScore(null == pointMap.get(id) ? NumConstant.ZERO : pointMap.get(id));
// 分类名称
//获取分类名称字典
Result<Map<String, String>> typeDictMapRes=epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
Map<String, String> typeDictMap = typeDictMapRes.success() && MapUtils.isNotEmpty(typeDictMapRes.getData()) ? typeDictMapRes.getData() : new HashMap<>();
dto.setTypeName(MapUtils.isNotEmpty(typeDictMap) && typeDictMap.containsKey(dto.getType()) ? typeDictMap.get(dto.getType()) : StrConstant.EPMETY_STR);
//这是错误的,应该是赋值type,遗留bug, 先不改了....
dto.setType(MapUtils.isNotEmpty(typeDictMap) && typeDictMap.containsKey(dto.getType()) ? typeDictMap.get(dto.getType()) : StrConstant.EPMETY_STR);
// 服务事项
if(CollectionUtils.isNotEmpty(dto.getServiceMatterList())){
@ -268,7 +272,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
@Transactional(rollbackFor = Exception.class)
public void delete(String id) {
//存在未完成的需求,不能删除
if (icUserDemandRecService.selectCountByServerId(id) > NumConstant.ZERO) {
if (SpringContextUtils.getBean(IcUserDemandRecService.class).selectCountByServerId(id) > NumConstant.ZERO) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "存在未完成的服务", "存在未完成的服务,不能删除");
}
//校验是否有同步到通讯录,是否存在工作人员下有未处理项目数据【联建单位被同步到通讯录部门的,如果部门下人员存在未办结项目则不允许删除】
@ -375,223 +379,15 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
}
/**
* 导入数据
*
* @param tokenDto
* @param response
* @param file
* @Param tokenDto
* @Param response
* @Param file
* @Return
* @Author zhaoqifeng
* @Date 2021/11/29 11:01
*/
@Override
public void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException {
List<IcPartyUnitImportFailedExcel> fileList = new ArrayList<>();
ExcelImportResult<IcPartyUnitImportExcel> importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyUnitImportExcel.class);
List<IcPartyUnitImportExcel> failList = importResult.getFailList();
//存放错误数据行号
if (!org.springframework.util.CollectionUtils.isEmpty(failList)) {
for (IcPartyUnitImportExcel entity : failList) {
//打印失败的行 和失败的信息
log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg());
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo(entity.getErrorMsg());
fileList.add(failed);
}
}
List<IcPartyUnitImportExcel> result = importResult.getList();
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfoCache) {
throw new EpmetException(8000, "获取用户缓存失败");
}
List<OptionDTO> serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId());
Map<String, String> categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//1.数据校验
Iterator<IcPartyUnitImportExcel> iterator = result.iterator();
while (iterator.hasNext()) {
IcPartyUnitImportExcel obj = iterator.next();
//单位名称不能为空,不可重复
if (StringUtils.isBlank(obj.getUnitName())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("单位名称为空");
fileList.add(failed);
log.warn(String.format("单位名称为空,行号->%s", obj.getRowNum()));
iterator.remove();
} else {
LambdaQueryWrapper<IcPartyUnitEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcPartyUnitEntity::getAgencyId, staffInfoCache.getAgencyId());
wrapper.eq(IcPartyUnitEntity::getUnitName, obj.getUnitName());
List<IcPartyUnitEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isNotEmpty(list)) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("单位名称已存在");
fileList.add(failed);
log.warn(String.format("单位名称已存在,行号->%s", obj.getRowNum()));
iterator.remove();
}
}
//分类校验
if (StringUtils.isBlank(obj.getType()) || null == PartyUnitTypeEnum.getCode(obj.getType())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("分类名不存在");
fileList.add(failed);
log.warn(String.format("分类名不存在,行号->%s", obj.getRowNum()));
iterator.remove();
}
//服务事项校验
if (StringUtils.isNotBlank(obj.getServiceMatter())) {
List<String> matters = Arrays.asList(obj.getServiceMatter().split(StrConstant.COLON));
matters.forEach(item -> {
if (null == categoryMap.get(item)) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("服务事项不存在");
fileList.add(failed);
log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum()));
iterator.remove();
}
});
}
//联系人 联系电话 在职党员 地址 中心位置经度 中心位置纬度 校验
if (StringUtils.isBlank(obj.getContact())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("联系人为空");
fileList.add(failed);
log.warn(String.format("联系人为空,行号->%s", obj.getRowNum()));
iterator.remove();
} else if (StringUtils.isBlank(obj.getContactMobile())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("联系电话为空");
fileList.add(failed);
log.warn(String.format("联系电话为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getAddress())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("地址为空");
fileList.add(failed);
log.warn(String.format("地址为空,行号->%s", obj.getRowNum()));
} else if (null == obj.getMemberCount()) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("在职党员为空");
fileList.add(failed);
log.warn(String.format("在职党员为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getLatitude())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("中心位置纬度为空");
fileList.add(failed);
log.warn(String.format("中心位置纬度为空,行号->%s", obj.getRowNum()));
} else if (StringUtils.isBlank(obj.getLongitude())) {
IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class);
failed.setErrorInfo("中心位置经度为空");
fileList.add(failed);
log.warn(String.format("中心位置经度为空,行号->%s", obj.getRowNum()));
}
}
if (CollectionUtils.isNotEmpty(result)) {
List<IcPartyUnitEntity> list = result.stream().map(item -> {
IcPartyUnitEntity entity = new IcPartyUnitEntity();
entity.setCustomerId(tokenDto.getCustomerId());
entity.setAgencyId(staffInfoCache.getAgencyId());
entity.setPids(staffInfoCache.getAgencyPIds());
entity.setUnitName(item.getUnitName());
entity.setType(PartyUnitTypeEnum.getCode(item.getType()));
if (StringUtils.isNotBlank(item.getServiceMatter())) {
entity.setServiceMatter(getServiceMatter(categoryMap, item.getServiceMatter()));
}
entity.setContact(item.getContact());
entity.setContactMobile(item.getContactMobile());
entity.setAddress(item.getAddress());
entity.setLatitude(item.getLatitude());
entity.setLongitude(item.getLongitude());
entity.setMemberCount(item.getMemberCount());
entity.setRemark(item.getRemark());
return entity;
}).collect(Collectors.toList());
insertBatch(list);
}
String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size());
if (fileList.size() > NumConstant.ZERO) {
List<Integer> numList = fileList.stream().map(IcPartyUnitImportFailedExcel::getRowNum).sorted().collect(Collectors.toList());
String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、"));
log.warn(str + "第" + subList + "行未成功!");
}
//错误数据生成文件,修改导入任务状态
erroeImport(fileList, taskId, tokenDto.getUserId());
}
private void erroeImport(List<IcPartyUnitImportFailedExcel> fileList, String importTaskId, String staffId) throws IOException {
String url = "";
//1.有错误数据则生成错误数据存放文件传到阿里云服务
if (CollectionUtils.isNotEmpty(fileList)) {
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"),
IcPartyUnitImportFailedExcel.class, fileList);
// 文件名
String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx");
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName);
OutputStream os = fileItem.getOutputStream();
Result<UploadImgResultDTO> uploadResult = null;
try {
workbook.write(os);
uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建单位信息导入】上传错误描述文件:{}", errormsg);
} finally {
try {
os.close();
} catch (IOException e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建单位信息导入】上传错误描述文件关闭输出流:{}", errormsg);
}
try {
fileItem.delete();
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建单位信息导入】上传错误描述文件删除临时文件:{}", errormsg);
}
}
if (uploadResult == null || !uploadResult.success()) {
log.error("【联建单位信息导入】调用OSS上传结果描述文件失败");
} else {
url = uploadResult.getData().getUrl();
}
}
//2.更新导入任务数据
ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO();
importTaskForm.setOperatorId(staffId);
importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT);
importTaskForm.setTaskId(importTaskId);
importTaskForm.setResultDescFilePath(url);
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
if (CollectionUtils.isNotEmpty(fileList)) {
importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importTaskForm.setResultDesc("联建单位导入存在错误数据");
}
Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm);
if (!result.success()) {
throw new RenException(result.getInternalMsg());
}
}
/**
* @param formDTO
* @Description 按类型统计单位数量
* @param agencyId
* @Description 按类型统计单位数量可视化平台-社区党建-联建单位分析-饼图展示分类下的联建单位数量
* @Param formDTO
* @Return {@link List<OptionDataResultDTO>}
* @Author zhaoqifeng
* @Date 2021/12/8 14:56
*/
@Override
public List<OptionDataResultDTO> typeStatistics(PartyActivityFormDTO formDTO) {
public List<OptionDataResultDTO> typeStatistics(String agencyId) {
DictListFormDTO dictFromDTO = new DictListFormDTO();
dictFromDTO.setDictType(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
Result<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFromDTO);
@ -599,7 +395,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
throw new EpmetException(dictResult.getCode());
}
List<OptionDataResultDTO> list = baseDao.getTypeStatistics(formDTO.getAgencyId());
List<OptionDataResultDTO> list = baseDao.getTypeStatistics(agencyId);
Map<String, String> map = list.stream().collect(Collectors.toMap(OptionDataResultDTO::getCode, OptionDataResultDTO::getValue));
return dictResult.getData().stream().map(item -> {
@ -643,7 +439,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
@Override
public void calPartyUnitSatisfation(ServerSatisfactionCalFormDTO formDTO) {
log.info("收到消息内容啦...." + JSON.toJSONString(formDTO));
List<ServiceStatDTO> list = icUserDemandRecService.groupByServer(formDTO.getCustomerId(), formDTO.getServerId(), formDTO.getServiceType());
List<ServiceStatDTO> list = SpringContextUtils.getBean(IcUserDemandRecService.class).groupByServer(formDTO.getCustomerId(), formDTO.getServerId(), formDTO.getServiceType());
for (ServiceStatDTO serviceStatDTO : list) {
if (0 != serviceStatDTO.getDemandCount()) {
BigDecimal result = serviceStatDTO.getTotalScore().divide(new BigDecimal(serviceStatDTO.getDemandCount()), 4, BigDecimal.ROUND_HALF_UP);
@ -662,6 +458,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
/**
* Desc: 获取联建单位名字
* 查询项目处理进展时调用
* @param formDTO
* @author zxc
* @date 2022/5/17 17:53
@ -697,6 +494,12 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
return baseDao.getAssistanceUnitList(staffInfo.getAgencyId(),agencyInfo.getPid());
}
/**
* 可视化平台-社区党建-联建单位分析
* 联建单位-简要信息列表展示单位名称单位类型
*
* @param form
*/
@Override
public PageData getListbrief(PartyUnitListbriefFormDTO form) {
Result<Map<String, String>> unitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
@ -792,4 +595,134 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
}
return baseDao.getUnitNames(unitIds);
}
/**
* 执行Excel导入
*
* @param filePath
* @param importTaskId
* @param customerId
* @param userId
*/
@Async
@Override
public void execAsyncExcelImport(Path filePath, String importTaskId, String customerId, String userId) {
try {
//获取当前登录用户所属组织id
CustomerStaffInfoCacheResult staffInfo= queryCurrentStaff(customerId,userId);
//联建单位分类:楼宇党建、两新组织、区域单位党建、机关直属部门、社会团体、民办非企业单位、基金会、其他
Result<Map<String, String>> partyUnitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
Map<String, String> tMap = partyUnitTypeMap.getData().entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getKey()));
IcPartyUnitExcelImportListener listener = new IcPartyUnitExcelImportListener(customerId,staffInfo, this,tMap);
EasyExcel.read(filePath.toFile(), IcPartyUnitImportExcel.class, listener).headRowNumber(1).sheet(0).doRead();
Path errorDescFile = null;
String errorDesFileUrl = null;
List<IcPartyUnitImportExcel.ErrorRow> errorRows = listener.getErrorRows();
boolean failed = errorRows.size() > 0;
if (failed) {
// 生成并上传错误文件
try {
// 文件生成
Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_party_unit", "import", "error_des");
String fileName = UUID.randomUUID().toString().concat(".xlsx");
errorDescFile = errorDescDir.resolve(fileName);
FileItemFactory factory = new DiskFileItemFactory(16, errorDescDir.toFile());
FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName);
OutputStream os = fileItem.getOutputStream();
EasyExcel.write(os, IcPartyUnitImportExcel.ErrorRow.class).sheet("导入失败列表").doWrite(errorRows);
// 文件上传oss
Result<UploadImgResultDTO> errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
if (errorDesFileUploadResult.success()) {
errorDesFileUrl = errorDesFileUploadResult.getData().getUrl();
}
} finally {
if (Files.exists(errorDescFile)) {
Files.delete(errorDescFile);
}
}
}
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("");
importFinishTaskForm.setResultDescFilePath(errorDesFileUrl);
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【联建单位导入】finishImportTask失败");
}
} catch (Exception e) {
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("【联建单位导入】出错:{}", errorMsg);
ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
importFinishTaskForm.setTaskId(importTaskId);
importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
importFinishTaskForm.setOperatorId(userId);
importFinishTaskForm.setResultDesc("导入失败");
Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm);
if (!result.success()) {
log.error("【联建单位导入】导入记录状态修改为'完成'失败");
}
} finally {
// 删除临时文件
if (Files.exists(filePath)) {
try {
Files.delete(filePath);
} catch (IOException e) {
log.error("method exception", e);
}
}
}
}
public CustomerStaffInfoCacheResult queryCurrentStaff(String customerId, String userId) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询工作人员缓存信息异常", EpmetErrorCode.SERVER_ERROR.getMsg());
}
return staffInfo;
}
/**
* 批量持久化
* @param entities
*/
public void batchPersist(List<IcPartyUnitEntity> entities) {
entities.forEach(e -> {
String id = IdWorker.getIdStr(e);
e.setId(id);
baseDao.insert(e);
});
}
/**
*
* @param unitName
* @param agencyId
* @param id
* @return true 已存在
* false 不存在
*/
public Boolean checkUnitName(String unitName,String agencyId,String id){
LambdaQueryWrapper<IcPartyUnitEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcPartyUnitEntity::getAgencyId, agencyId)
.eq(IcPartyUnitEntity::getUnitName, unitName)
.ne(StringUtils.isNotBlank(id),IcPartyUnitEntity::getId,id);
List<IcPartyUnitEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isNotEmpty(list)) {
return true;
}
return false;
}
}

171
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPublicServiceOrgServiceImpl.java

@ -0,0 +1,171 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.IcPublicServiceOrgDao;
import com.epmet.dao.IcPublicServiceOrgServiceMatterDao;
import com.epmet.dto.form.IcPublicServiceOrgFormDTO;
import com.epmet.dto.form.IcPublicServiceOrgPageFormDTO;
import com.epmet.dto.result.IcPublicServiceOrgDetailResDTO;
import com.epmet.entity.IcPublicServiceOrgEntity;
import com.epmet.entity.IcPublicServiceOrgServiceMatterEntity;
import com.epmet.service.IcPublicServiceOrgService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
* 公共服务组织管理(烟台需求)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-02-03
*/
@Service
public class IcPublicServiceOrgServiceImpl extends BaseServiceImpl<IcPublicServiceOrgDao, IcPublicServiceOrgEntity> implements IcPublicServiceOrgService {
@Autowired
private IcPublicServiceOrgServiceMatterDao icPublicServiceOrgServiceMatterDao;
@Transactional(rollbackFor = EpmetException.class)
@Override
public String save(IcPublicServiceOrgFormDTO formDto) {
CustomerStaffInfoCacheResult staffInfo= CustomerStaffRedis.getStaffInfo(formDto.getCustomerId(),formDto.getCreatedBy());
if(null==staffInfo|| StringUtils.isBlank(staffInfo.getAgencyId())){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode());
}
checkUnqiueName(formDto.getName(),staffInfo.getAgencyId(),null);
formDto.setAgencyId(staffInfo.getAgencyId());
formDto.setPids(staffInfo.getAgencyPIds());
IcPublicServiceOrgEntity entity=ConvertUtils.sourceToTarget(formDto,IcPublicServiceOrgEntity.class);
baseDao.insert(entity);
if(CollectionUtils.isNotEmpty(formDto.getServiceMatterList())){
formDto.getServiceMatterList().forEach(dto->{
IcPublicServiceOrgServiceMatterEntity serviceOrgServiceMatterEntity=ConvertUtils.sourceToTarget(dto,IcPublicServiceOrgServiceMatterEntity.class);
serviceOrgServiceMatterEntity.setOrgId(entity.getId());
serviceOrgServiceMatterEntity.setCustomerId(formDto.getCustomerId());
icPublicServiceOrgServiceMatterDao.insert(serviceOrgServiceMatterEntity);
});
}
return entity.getId();
}
/**
*
* @param name
* @param agencyId
* @param id
*/
private void checkUnqiueName(String name, String agencyId, String id) {
LambdaQueryWrapper<IcPublicServiceOrgEntity> queryWrapper=new LambdaQueryWrapper<>();
queryWrapper.eq(IcPublicServiceOrgEntity::getName,name)
.eq(IcPublicServiceOrgEntity::getAgencyId,agencyId)
.ne(StringUtils.isNotBlank(id),IcPublicServiceOrgEntity::getId,id);
int count=baseDao.selectCount(queryWrapper);
if(count>0){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"名称已存在","名称已存在");
}
}
@Transactional(rollbackFor = EpmetException.class)
@Override
public String update(IcPublicServiceOrgFormDTO formDTO) {
checkUnqiueName(formDTO.getName(),formDTO.getAgencyId(),formDTO.getId());
IcPublicServiceOrgEntity entity=ConvertUtils.sourceToTarget(formDTO,IcPublicServiceOrgEntity.class);
baseDao.updateById(entity);
//先删除
LambdaQueryWrapper<IcPublicServiceOrgServiceMatterEntity> deleteWrapper=new LambdaQueryWrapper<>();
deleteWrapper.eq(IcPublicServiceOrgServiceMatterEntity::getOrgId,formDTO.getId());
icPublicServiceOrgServiceMatterDao.delete(deleteWrapper);
if(CollectionUtils.isNotEmpty(formDTO.getServiceMatterList())){
formDTO.getServiceMatterList().forEach(dto->{
IcPublicServiceOrgServiceMatterEntity serviceOrgServiceMatterEntity=ConvertUtils.sourceToTarget(dto,IcPublicServiceOrgServiceMatterEntity.class);
serviceOrgServiceMatterEntity.setOrgId(entity.getId());
serviceOrgServiceMatterEntity.setCustomerId(formDTO.getCustomerId());
icPublicServiceOrgServiceMatterDao.insert(serviceOrgServiceMatterEntity);
});
}
return entity.getId();
}
@Transactional(rollbackFor = EpmetException.class)
@Override
public void delete(List<String> orgIds) {
orgIds.forEach(orgId->{
baseDao.deleteById(orgId);
//先删除
LambdaQueryWrapper<IcPublicServiceOrgServiceMatterEntity> deleteWrapper=new LambdaQueryWrapper<>();
deleteWrapper.eq(IcPublicServiceOrgServiceMatterEntity::getOrgId,orgId);
icPublicServiceOrgServiceMatterDao.delete(deleteWrapper);
});
}
@Override
public IcPublicServiceOrgDetailResDTO get(String id) {
IcPublicServiceOrgEntity entity = baseDao.selectById(id);
if (null == entity) {
return null;
}
IcPublicServiceOrgDetailResDTO result = ConvertUtils.sourceToTarget(entity, IcPublicServiceOrgDetailResDTO.class);
// 1:实有单位;2:社会服务组织3:志愿团队
if(NumConstant.ONE_STR.equals(result.getType())){
result.setTypeName("实有单位");
}else if(NumConstant.TWO_STR.equals(result.getType())){
result.setTypeName("社会服务组织");
}else if(NumConstant.THREE_STR.equals(result.getType())){
result.setTypeName("志愿团队");
}
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(result.getAgencyId());
if (null != agencyInfoCache) {
result.setAgencyName(agencyInfoCache.getOrganizationName());
}
result.setServiceMatterList(icPublicServiceOrgServiceMatterDao.selectServiceMatter(id));
List<String> nameList=result.getServiceMatterList().stream().map(m->m.getCategoryName()).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(nameList)){
result.setServiceMatterName(StringUtils.joinWith(StrConstant.SEMICOLON,nameList.toArray()));
}
return result;
}
@Override
public PageData<IcPublicServiceOrgDetailResDTO> page(IcPublicServiceOrgPageFormDTO formDTO) {
if (StringUtils.isNotBlank(formDTO.getCurrentStaffId()) && StringUtils.isBlank(formDTO.getAgencyId())) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getCurrentStaffId());
formDTO.setAgencyId(staffInfo.getAgencyId());
}
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<IcPublicServiceOrgDetailResDTO> list = baseDao.pageList(formDTO);
PageInfo<IcPublicServiceOrgDetailResDTO> pageInfo = new PageInfo<>(list);
list.forEach(item -> {
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(item.getAgencyId());
item.setAgencyName(null != agencyInfoCache ? agencyInfoCache.getOrganizationName() : StrConstant.EPMETY_STR);
List<String> nameList=item.getServiceMatterList().stream().map(m->m.getCategoryName()).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(nameList)){
item.setServiceMatterName(StringUtils.joinWith(StrConstant.SEMICOLON,nameList.toArray()));
}
});
return new PageData<>(list, pageInfo.getTotal());
}
}

32
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java

@ -205,4 +205,36 @@ public class IcServiceItemDictServiceImpl extends BaseServiceImpl<IcServiceItemD
public String getCategoryName(String customerId, String categoryCode) {
return baseDao.selectName(customerId,categoryCode);
}
@Override
public List<ServiceItemResultDTO> queryDictOption(String type, String customerId) {
List<ServiceItemResultDTO> resultList = new ArrayList<>();
LambdaQueryWrapper<IcServiceItemDictEntity> query = new LambdaQueryWrapper<>();
query.eq(IcServiceItemDictEntity::getCustomerId, customerId)
.eq(StringUtils.isNotBlank(type) && "usable".equals(type), IcServiceItemDictEntity::getUsableFlag, true)
.orderByAsc(IcServiceItemDictEntity::getSort);
List<IcServiceItemDictEntity> list = baseDao.selectList(query);
for (IcServiceItemDictEntity entity : list) {
ServiceItemResultDTO dto = new ServiceItemResultDTO();
dto.setCategoryName(entity.getCategoryName());
dto.setCategoryId(entity.getId());
dto.setCategoryCode(entity.getCategoryCode());
dto.setUsableFlag(entity.getUsableFlag());
dto.setAwardPoint(entity.getAwardPoint());
resultList.add(dto);
}
return resultList;
}
/**
* 查询联建活动的服务事项名称列表
*
* @param activityId
* @param customerId
* @return
*/
@Override
public List<String> getByActivityId(String activityId, String customerId) {
return baseDao.selectActivityServiceItemName(activityId,customerId);
}
}

4
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java

@ -497,7 +497,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
//爱心互助的志愿者
Result<List<UserBaseInfoResultDTO>> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(Arrays.asList(serverId));
if (!userInfoRes.success() || CollectionUtils.isEmpty(userInfoRes.getData())) {
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询爱心互助志愿者信息异常","志愿者信息查询异常");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询爱心互助志愿者信息异常","志愿者信息查询异常");
}
serviceName=userInfoRes.getData().get(NumConstant.ZERO).getRealName();
mobile = userInfoRes.getData().get(NumConstant.ZERO).getMobile();
@ -506,7 +506,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
//居民信息的志愿者 ic_resi_user
Result<IcResiUserDTO> icUserInfoRes = epmetUserOpenFeignClient.getIcResiUserDTO(serverId);
if (!icUserInfoRes.success() || null==icUserInfoRes.getData()) {
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询居民信息志愿者信息异常","查询居民信息志愿者信息异常");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询居民信息志愿者信息异常","查询居民信息志愿者信息异常");
}
serviceName=icUserInfoRes.getData().getName();
mobile = icUserInfoRes.getData().getMobile();

38
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.29__public_service_org.sql

@ -0,0 +1,38 @@
CREATE TABLE `ic_public_service_org` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`AGENCY_ID` varchar(64) NOT NULL COMMENT '组织ID',
`PIDS` varchar(255) NOT NULL COMMENT 'AGENCY_ID的pids',
`NAME` varchar(128) NOT NULL COMMENT '名称',
`TYPE` varchar(64) NOT NULL COMMENT '1:实有单位;2:社会服务组织3:志愿团队',
`CONTACT` varchar(32) NOT NULL COMMENT '联系人',
`CONTACT_MOBILE` varchar(32) NOT NULL COMMENT '联系电话',
`ADDRESS` varchar(255) NOT NULL COMMENT '地址',
`LONGITUDE` varchar(32) DEFAULT NULL COMMENT '中心位置经度',
`LATITUDE` varchar(32) DEFAULT NULL COMMENT '中心位置纬度',
`REMARK` varchar(512) DEFAULT NULL COMMENT '备注',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' 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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公共服务组织管理(烟台需求)';
CREATE TABLE `ic_public_service_org_service_matter` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`ORG_ID` varchar(64) NOT NULL COMMENT 'ic_public_service_org.ID',
`CATEGORY_ID` varchar(64) NOT NULL COMMENT 'ic_service_item_dict.ID',
`CATEGORY_CODE` varchar(255) NOT NULL COMMENT '服务事项编码ic_service_item_dict.CATEGORY_CODE',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' 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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公共服务组织服务事项(烟台需求)';

1
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.30__icpartyunit.sql

@ -0,0 +1 @@
alter table ic_party_unit MODIFY COLUMN `TYPE` varchar(32) NULL COMMENT '分类 【字典表】:02.20因烟台导入需求改为不必填';

9
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml

@ -22,5 +22,14 @@
DELETE FROM ic_activity_unit_relation WHERE ACTIVITY_ID = #{activityId}
</delete>
<!-- 查询联建活动关联的联建单位名称列表 -->
<select id="selectActivityUntiNames" parameterType="java.lang.String" resultType="java.lang.String">
select u.UNIT_NAME from ic_party_unit u
where u.id in(
select r.UNIT_ID from ic_activity_unit_relation r
where r.ACTIVITY_ID=#{activityId}
and r.DEL_FLAG='0'
)
</select>
</mapper>

92
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml

@ -52,7 +52,7 @@
a.ACT_ID,
a.GRID_ID,
ur.UNIT_ID,
GROUP_CONCAT( sr.SERVICE_MATTER ) AS serviceMatter,
GROUP_CONCAT( distinct sr.SERVICE_MATTER ) AS serviceMatter,
a.TITLE,
a.TARGET,
a.CONTENT,
@ -63,7 +63,9 @@
a.LATITUDE,
a.RESULT,
a.AGENCY_ID,
a.CUSTOMER_ID
a.CUSTOMER_ID,
a.COVER_URL,
a.ACTIVITY_END_TIME
FROM
ic_party_activity a
left join ic_activity_unit_relation ur
@ -89,8 +91,11 @@
<if test='null != serviceMatter and "" != serviceMatter'>
AND sr.SERVICE_MATTER = #{serviceMatter}
</if>
<if test=" null != startTime and null != endTime">
AND a.ACTIVITY_TIME BETWEEN #{startTime} AND #{endTime}
<if test=" null != startTime">
AND a.ACTIVITY_TIME &gt;= #{startTime}
</if>
<if test=" null != endTime">
AND a.ACTIVITY_TIME &lt;= #{endTime}
</if>
GROUP BY a.id
ORDER BY a.ACTIVITY_TIME DESC
@ -159,4 +164,83 @@
</select>
<!-- 居民端钉钉-分页查询全部联建活动 -->
<select id="pageAllAct" parameterType="map" resultType="com.epmet.dto.result.PartyActivityResDTO">
select
a.ID as activityId,
a.AGENCY_ID,
'' as agencyName,
a.TITLE,
a.TARGET,
a.CONTENT,
a.PEOPLE_COUNT,
a.ACTIVITY_TIME,
a.ACTIVITY_END_TIME,
a.COVER_URL,
a.ADDRESS,
a.RESULT,
su.id as signUpId,
(
case when su.id is null then 0
else 1
end
)as signUpFlag,
(
select count(s.id)
from ic_party_activity_sign_up_record s
where s.ACTIVITY_ID=a.id
and s.DEL_FLAG='0'
)as signUpCount
from ic_party_activity a
left join ic_party_activity_sign_up_record su
on(a.id=su.ACTIVITY_ID
and su.USER_ID=#{userId}
and su.DEL_FLAG='0')
where a.DEL_FLAG='0'
and a.CUSTOMER_ID = #{customerId}
and (a.GRID_ID = #{gridId}
or a.AGENCY_ID = #{agencyId}
or a.PIDS like concat('%',#{agencyId},'%')
)
order by a.ACTIVITY_END_TIME desc,a.CREATED_TIME desc
</select>
<!-- 居民端钉钉,已报名列表 -->
<select id="selectAppliedAct" parameterType="map" resultType="com.epmet.dto.result.PartyActivityResDTO">
select
a.ID as activityId,
a.AGENCY_ID,
'' as agencyName,
a.TITLE,
a.TARGET,
a.CONTENT,
a.PEOPLE_COUNT,
a.ACTIVITY_TIME,
a.ACTIVITY_END_TIME,
a.COVER_URL,
a.ADDRESS,
a.RESULT,
su.id as signUpId,
1 as signUpFlag,
(
select count(s.id)
from ic_party_activity_sign_up_record s
where s.ACTIVITY_ID=a.id
and s.DEL_FLAG='0'
)as signUpCount
from ic_party_activity_sign_up_record su
inner join ic_party_activity a
on(su.ACTIVITY_ID=a.ID)
where su.DEL_FLAG='0'
and a.DEL_FLAG='0'
and su.CUSTOMER_ID = #{customerId}
and su.USER_ID = #{userId}
and (a.GRID_ID = #{gridId}
or a.AGENCY_ID = #{agencyId}
or a.PIDS like concat('%',#{agencyId},'%')
)
order by a.ACTIVITY_END_TIME desc,a.CREATED_TIME desc
</select>
</mapper>

40
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivitySignUpRecordDao.xml

@ -0,0 +1,40 @@
<?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.IcPartyActivitySignUpRecordDao">
<resultMap type="com.epmet.entity.IcPartyActivitySignUpRecordEntity" id="icPartyActivitySignUpRecordMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="activityId" column="ACTIVITY_ID"/>
<result property="userId" column="USER_ID"/>
<result property="userName" column="USER_NAME"/>
<result property="signUpTime" column="SIGN_UP_TIME"/>
<result property="gridId" column="GRID_ID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="querySignUpRecord" parameterType="java.lang.String" resultType="com.epmet.dto.result.PartyActivitySignUpRecordResDTO">
SELECT
m.ID,
m.CUSTOMER_ID,
m.ACTIVITY_ID,
m.USER_ID,
m.USER_NAME,
m.MOBILE,
m.GRID_ID,
m.GRID_NAME,
m.SIGN_UP_TIME
FROM
ic_party_activity_sign_up_record m
WHERE
m.ACTIVITY_ID = #{activityId}
ORDER BY
m.SIGN_UP_TIME DESC
</select>
</mapper>

81
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPublicServiceOrgDao.xml

@ -0,0 +1,81 @@
<?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.IcPublicServiceOrgDao">
<resultMap type="com.epmet.entity.IcPublicServiceOrgEntity" id="icPublicServiceOrgMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="pids" column="PIDS"/>
<result property="name" column="NAME"/>
<result property="type" column="TYPE"/>
<result property="contact" column="CONTACT"/>
<result property="contactMobile" column="CONTACT_MOBILE"/>
<result property="address" column="ADDRESS"/>
<result property="longitude" column="LONGITUDE"/>
<result property="latitude" column="LATITUDE"/>
<result property="remark" column="REMARK"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<resultMap id="IcPublicServiceOrgDetailResDTOMap" type="com.epmet.dto.result.IcPublicServiceOrgDetailResDTO">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="type" column="TYPE"/>
<result property="typeName" column="typeName"/>
<result property="contact" column="CONTACT"/>
<result property="contactMobile" column="CONTACT_MOBILE"/>
<result property="remark" column="REMARK"/>
<collection property="serviceMatterList" ofType="com.epmet.dto.IcPublicServiceOrgServiceMatterDTO"
select="com.epmet.dao.IcPublicServiceOrgServiceMatterDao.selectServiceMatter" column="ID">
</collection>
</resultMap>
<select id="pageList" parameterType="com.epmet.dto.form.IcPublicServiceOrgPageFormDTO" resultMap="IcPublicServiceOrgDetailResDTOMap">
SELECT
distinct o.ID,
o.`NAME`,
o.AGENCY_ID,
o.TYPE,
( CASE WHEN o.type = '1' THEN '实有单位' WHEN o.type = '2' THEN '社会服务组织' WHEN o.type = '3' THEN '志愿团队' end) AS typeName,
o.CONTACT,
o.CONTACT_MOBILE,
o.REMARK
FROM
ic_public_service_org o
LEFT JOIN ic_public_service_org_service_matter m ON ( o.id = m.ORG_ID and m.del_flag='0')
LEFT JOIN ic_service_item_dict d ON ( m.CATEGORY_ID = d.ID and m.CUSTOMER_ID=d.CUSTOMER_ID)
WHERE
o.DEL_FLAG = '0'
and o.CUSTOMER_ID=#{customerId}
<if test='null != agencyId and "" != agencyId'>
AND ( o.AGENCY_ID = #{agencyId} OR o.PIDS LIKE concat( '%', #{agencyId}, '%' ))
</if>
<if test='null != name and "" != name'>
AND o.`NAME` LIKE concat( '%', #{name}, '%' )
</if>
<if test="null != categoryIds and categoryIds.size() > 0">
<foreach collection="categoryIds" item="categoryId" open="AND (" separator="or" close=")">
m.CATEGORY_ID = #{categoryId}
</foreach>
</if>
<if test='null != type and "" != type'>
AND o.TYPE = #{type}
</if>
<if test='null != contact and "" != contact'>
AND o.CONTACT LIKE concat( '%', #{contact}, '%' )
</if>
<if test='null != contactMobile and "" != contactMobile'>
AND o.CONTACT_MOBILE like concat( '%', #{contactMobile}, '%' )
</if>
ORDER BY
o.CREATED_TIME DESC
</select>
</mapper>

30
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPublicServiceOrgServiceMatterDao.xml

@ -0,0 +1,30 @@
<?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.IcPublicServiceOrgServiceMatterDao">
<resultMap type="com.epmet.entity.IcPublicServiceOrgServiceMatterEntity" id="icPublicServiceOrgServiceMatterMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="orgId" column="ORG_ID"/>
<result property="categoryId" column="CATEGORY_ID"/>
<result property="categoryCode" column="CATEGORY_CODE"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectServiceMatter" parameterType="java.lang.String" resultType="com.epmet.dto.IcPublicServiceOrgServiceMatterDTO">
SELECT
m.*,
i.CATEGORY_NAME
FROM
ic_public_service_org_service_matter m
LEFT JOIN ic_service_item_dict i ON ( m.CATEGORY_ID = i.ID )
WHERE m.del_flag='0'
and m.ORG_ID = #{orgId}
</select>
</mapper>

15
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml

@ -41,4 +41,19 @@
d.CUSTOMER_ID = #{customerId}
AND d.CATEGORY_CODE = #{categoryCode}
</select>
<!-- 查询联建活动的服务事项名称 -->
<select id="selectActivityServiceItemName" parameterType="map" resultType="java.lang.String">
select
distinct d.CATEGORY_NAME
from ic_service_item_dict d
where d.CUSTOMER_ID = #{customerId}
and d.DEL_FLAG='0'
and d.CATEGORY_CODE in(
select r.SERVICE_MATTER
from ic_activity_service_relation r
where r.ACTIVITY_ID = #{activityId}
and r.DEL_FLAG='0'
)order by d.SORT asc
</select>
</mapper>

BIN
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx

Binary file not shown.

BIN
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyunit_impoort_tem.xlsx

Binary file not shown.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save