Browse Source

Merge branch 'wxz_gateway_actuator' into pingyin_master

master
wangxianzhang 3 years ago
parent
commit
02699e09fb
  1. 79
      epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java
  2. 21
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  3. 2
      epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java
  4. 8
      epmet-auth/src/main/java/com/epmet/service/GovWebService.java
  5. 11
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  6. 27
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  7. 36
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  8. 35
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java
  9. 4
      epmet-gateway/src/main/resources/bootstrap.yml
  10. 71
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java
  11. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java
  12. 55
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java
  13. 78
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java
  14. 82
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java
  15. 4
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.14__add_ding_table.sql
  16. 23
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml
  17. 6
      epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java
  18. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml
  19. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java
  20. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectDetailResultDTO.java
  21. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatCompareRecordExcelData.java
  22. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java
  23. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java
  24. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java
  25. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcTripReportRecordServiceImpl.java
  26. 29
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccinePrarmeterServiceImpl.java
  27. BIN
      epmet-user/epmet-user-server/src/main/resources/excel/ic_nat_compare_record_template.xlsx
  28. 3
      epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml
  29. 3
      epmet-user/epmet-user-server/src/main/resources/mapper/IcTripReportRecordDao.xml

79
epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java

@ -0,0 +1,79 @@
package com.epmet.controller;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiSnsGetuserinfoBycodeRequest;
import com.dingtalk.api.request.OapiUserGetbyunionidRequest;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiSnsGetuserinfoBycodeResponse;
import com.dingtalk.api.response.OapiUserGetbyunionidResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.epmet.commons.tools.utils.Result;
import com.taobao.api.ApiException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 免登第三方网站
*
* @author openapi@dingtalk
*/
@RestController("dingtalk")
public class DingdingLoginController {
/**
* 获取授权用户的个人信息 openapi@dingtalk
*
* @return
* @throws Exception ServiceResult<Map<String,Object>> 2020-11-4
*/
@RequestMapping(value = "/auth", method = RequestMethod.GET)
public Result<String> getDdScan(@RequestParam("code") String code) throws Exception {
// 获取access_token,注意正式代码要有异常流处理
String access_token = this.getToken();
// 通过临时授权码获取授权用户的个人信息
DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
OapiSnsGetuserinfoBycodeRequest reqBycodeRequest = new OapiSnsGetuserinfoBycodeRequest();
reqBycodeRequest.setTmpAuthCode(code);
OapiSnsGetuserinfoBycodeResponse bycodeResponse = client2.execute(reqBycodeRequest, "yourAppId", "yourAppSecret");
// 根据unionid获取userid
String unionid = bycodeResponse.getUserInfo().getUnionid();
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest reqGetbyunionidRequest = new OapiUserGetbyunionidRequest();
reqGetbyunionidRequest.setUnionid(unionid);
OapiUserGetbyunionidResponse oapiUserGetbyunionidResponse = clientDingTalkClient.execute(reqGetbyunionidRequest, access_token);
// 根据userId获取用户信息
String userid = oapiUserGetbyunionidResponse.getResult().getUserid();
DingTalkClient clientDingTalkClient2 = new DefaultDingTalkClient(
"https://oapi.dingtalk.com/topapi/v2/user/get");
OapiV2UserGetRequest reqGetRequest = new OapiV2UserGetRequest();
reqGetRequest.setUserid(userid);
//reqGetRequest.setLang("zh_CN");
OapiV2UserGetResponse rspGetResponse = clientDingTalkClient2.execute(reqGetRequest, access_token);
System.out.println(rspGetResponse.getBody());
return new Result<String>().ok(rspGetResponse.getBody());
}
private String getToken() throws RuntimeException {
try {
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey("dingiopfbtn8mktfoaf0");
request.setAppsecret("RcmHIoP5KFLZSM5wzpYhvCKMMKEzLoWPtqu3OqOEBD6myg4IT8oVw4AwvRkKYKJz");
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
return response.getAccessToken();
} catch (ApiException e) {
throw new RuntimeException();
}
}
}

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

@ -9,7 +9,10 @@ import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ -174,7 +177,7 @@ public class ThirdLoginController {
* @return
*/
@PostMapping("resilogin-ding-md")
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody ResiDingAppLoginMdFormDTO formDTO) {
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDingMd(formDTO));
}
@ -200,8 +203,20 @@ public class ThirdLoginController {
* @return
*/
@PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody ResiDingAppLoginMdFormDTO formDTO) {
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginInternalDing(formDTO));
}
/**
* 根据免登授权码, 获取登录用户身份
*
* @param formDTO 免登授权码
* @return
*/
@PostMapping("govlogin-internalding")
public Result<UserTokenResultDTO> login(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.govLoginInternalDing(formDTO));
}
}

2
epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java → epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java

@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
* @Date 2022/9/22 10:42
*/
@Data
public class ResiDingAppLoginMdFormDTO {
public class DingAppLoginMdFormDTO {
@NotBlank(message = "authCode不能为空")
private String authCode;
/**

8
epmet-auth/src/main/java/com/epmet/service/GovWebService.java

@ -18,6 +18,14 @@ public interface GovWebService {
**/
UserTokenResultDTO login(GovWebLoginFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description PC工作端-工作人员 通过第三方系统登录
**/
UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO);
/**
* 区块链系统通过用户密码认证身份
* @param mobile

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

@ -102,12 +102,19 @@ public interface ThirdLoginService {
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO);
ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO);
/**
* 企业内部应用免登 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO);
ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO);
/**
* desc:企业内部应用 工作端登录
* @param formDTO
* @return
*/
UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO);
}

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

@ -100,6 +100,33 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver {
}
@Override
public UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO) {
formDTO.setApp(LoginConstant.APP_GOV);
formDTO.setClient(LoginConstant.CLIENT_WEB);
// //1.参数校验
// if (!(LoginConstant.APP_GOV.equals(formDTO.getApp()) && LoginConstant.CLIENT_WEB.equals(formDTO.getClient()))) {
// logger.error("当前接口只适用于PC工作端运营管理后台");
// throw new RenException("当前接口只适用于PC工作端运营管理后台");
// }
//3.校验登陆账号是否存在
//根据客户Id和手机号查询登陆用户信息(此处不需要判断登陆人是否是有效客户以及是否是客户的根管理员,前一接口获取登陆手机号对应客户列表已经判断了)
GovWebOperLoginFormDTO form = new GovWebOperLoginFormDTO();
form.setCustomerId(formDTO.getCustomerId());
form.setMobile(formDTO.getPhone());
Result<GovWebOperLoginResultDTO> result = epmetUserFeignClient.getStaffIdAndPwd(form);
if (!result.success() || null == result.getData() || null == result.getData().getUserId()) {
logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在");
throw new RenException(EpmetErrorCode.ERR10003.getCode());
}
GovWebOperLoginResultDTO resultDTO = result.getData();
//5.生成token存到redis并返回
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId()));
return userTokenResultDTO;
}
/**
* 生成PC工作端token
* @author sun

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

@ -36,11 +36,13 @@ import com.epmet.dto.dingres.V2UserGetuserinfoResDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
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;
import com.epmet.service.GovWebService;
import com.epmet.service.ThirdLoginService;
import com.taobao.api.ApiException;
import com.taobao.dingtalk.client.DingTalkClientToken;
@ -94,6 +96,10 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
private DingTalkClientToken dingTalkClientToken;
@Autowired
private DingTalkClientUser dingTalkClientUser;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private GovWebService govWebService;
/**
* @param formDTO
@ -978,7 +984,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
}
@Override
public ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO) {
public ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
@ -1078,7 +1084,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* @return
*/
@Override
public ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO) {
public ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
@ -1110,6 +1116,26 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return resDTO;
}
@Override
public UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
// 1、获取用户手机号
DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO();
loginGovParam.setCustomerId(dingLoginResiFormDTO.getCustomerId());
loginGovParam.setPhone(dingLoginResiFormDTO.getMobile());
return govWebService.loginByThirdPlatform(loginGovParam);
}
/**
* 最原始的企业内部应用开发不授权给产品服务商
* @param miniAppId
@ -1118,12 +1144,14 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
*/
private DingLoginResiFormDTO getDingLoginResiFormDTOInternal(String miniAppId, String authCode) {
DingMiniInfoCache dingMiniInfo = CustomerDingDingRedis.getDingMiniInfo(miniAppId);
if (dingMiniInfo == null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取钉钉应用配置异常", "获取钉钉应用配置异常");
}
// 1、获取企业内部应用的accessToken文档地址:https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-an-internal-app
String accessToken = "";
DingTalkResult<String> dingTalkResult = dingTalkClientToken.getAppAccessTokenToken(dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret());
if (!dingTalkResult.success() || StringUtils.isBlank(dingTalkResult.getData())) {
log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteSecret(), dingMiniInfo.getSuiteSecret()));
log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取企业内部应用的accessToken异常", "获取企业内部应用的accessToken");
}
accessToken = dingTalkResult.getData();

35
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java

@ -2,11 +2,11 @@ package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.dto.result.YtHsjcResDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @Description
@ -15,8 +15,12 @@ import java.util.ArrayList;
*/
@Slf4j
public class YtHsResUtils {
static String url = "https://10.2.2.60:8191/sjzt/server/hsjcxx?appkey=DR4jF5Be7sCsqDmCamq2tmYCl";
private static String URL = "http://10.2.2.60:8191/sjzt/server/hsjcxx";
private static final String APP_KEY_VALUE = "DR4jF5Be7sCsqDmCamq2tmYCl";
private static final String APP_KEY = "appkey";
private static final String CARD_NO = "card_no";
private static final String ROW_NUM = "ROWNUM";
private static final String PAGE_SIZE = "PAGESIZE";
/**
* desc:图片同步扫描
*
@ -24,19 +28,26 @@ public class YtHsResUtils {
*/
public static YtHsjcResDTO hsjc(String cardNo, Integer rowNum, Integer pageSize) {
try {
String param = String.format("&card_no=%s&ROWNUM=%s&PAGESIZE=%s", cardNo, rowNum, pageSize);
String apiUrl = url.concat(param);
Result<String> result = HttpClientManager.getInstance().sendPostByJSON(apiUrl, null);
//String param = String.format("&card_no=%s&ROWNUM=%s&PAGESIZE=%s", cardNo, rowNum, pageSize);
//String apiUrl = url.concat(param);
Map<String,Object> param = new HashMap<>();
param.put(APP_KEY,APP_KEY_VALUE);
param.put(CARD_NO,cardNo);
param.put(ROW_NUM,rowNum);
param.put(PAGE_SIZE,pageSize);
log.info("hsjc api param:{}",param);
Result<String> result = HttpClientManager.getInstance().sendGet(URL, param);
log.info("hsjc api result:{}",JSON.toJSONString(result));
if (result.success()) {
return JSON.parseObject(result.getData(), YtHsjcResDTO.class);
}
YtHsjcResDTO resultResult = new YtHsjcResDTO();
resultResult.setData(new ArrayList<>());
return resultResult;
} catch (Exception e) {
log.error(String.format("烟台核算检测结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取核算检测结果api异常"+e.getMessage());
e.printStackTrace();
log.warn(String.format("烟台核酸检测结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
}
YtHsjcResDTO resultResult = new YtHsjcResDTO();
resultResult.setData(new ArrayList<>());
return resultResult;
}
}

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

@ -426,7 +426,11 @@ management:
web:
exposure:
include: "*"
# enabled-by-default: false
endpoint:
gateway:
enabled: false
health:
show-details: ALWAYS

71
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java

@ -0,0 +1,71 @@
package com.epmet.controller;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.service.DingMiniInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@RestController
@RequestMapping("dingMiniInfo")
public class DingMiniInfoController {
@Autowired
private DingMiniInfoService dingMiniInfoService;
@RequestMapping("page")
public Result<PageData<DingMiniInfoDTO>> page(@RequestParam Map<String, Object> params){
PageData<DingMiniInfoDTO> page = dingMiniInfoService.page(params);
return new Result<PageData<DingMiniInfoDTO>>().ok(page);
}
@RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET})
public Result<DingMiniInfoDTO> get(@PathVariable("id") String id){
DingMiniInfoDTO data = dingMiniInfoService.get(id);
return new Result<DingMiniInfoDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dingMiniInfoService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dingMiniInfoService.update(dto);
return new Result();
}
@PostMapping("delete")
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
dingMiniInfoService.delete(ids);
return new Result();
}
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.DingMiniInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Mapper
public interface DingMiniInfoDao extends BaseDao<DingMiniInfoEntity> {
}

55
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java

@ -0,0 +1,55 @@
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 2022-09-14
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ding_mini_info")
public class DingMiniInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private String suiteId;
/**
*
*/
private String appId;
/**
*
*/
private String miniAppId;
/**
*
*/
private String suiteName;
/**
*
*/
private String suiteKey;
/**
*
*/
private String suiteSecret;
private String token;
private String aesKey;
}

78
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java

@ -0,0 +1,78 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
public interface DingMiniInfoService extends BaseService<DingMiniInfoEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
PageData<DingMiniInfoDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
List<DingMiniInfoDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DingMiniInfoDTO
* @author generator
* @date 2022-09-14
*/
DingMiniInfoDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void save(DingMiniInfoDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void update(DingMiniInfoDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-09-14
*/
void delete(String[] ids);
}

82
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java

@ -0,0 +1,82 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.DingMiniInfoDao;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import com.epmet.service.DingMiniInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Service
public class DingMiniInfoServiceImpl extends BaseServiceImpl<DingMiniInfoDao, DingMiniInfoEntity> implements DingMiniInfoService {
@Override
public PageData<DingMiniInfoDTO> page(Map<String, Object> params) {
IPage<DingMiniInfoEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DingMiniInfoDTO.class);
}
@Override
public List<DingMiniInfoDTO> list(Map<String, Object> params) {
List<DingMiniInfoEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DingMiniInfoDTO.class);
}
private QueryWrapper<DingMiniInfoEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DingMiniInfoEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DingMiniInfoDTO get(String id) {
DingMiniInfoEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, DingMiniInfoDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

4
epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.14__add_ding_table.sql

@ -33,7 +33,7 @@ INSERT INTO `epmet_third`.`ding_mini_info` (`ID`, `SUITE_ID`, `APP_ID`, `MINI_AP
CREATE TABLE `open_sync_biz_data`
(
`ID` varchar(255) NOT NULL,
`ID` varchar(64) NOT NULL,
`SUITE_KEY` varchar(255) DEFAULT NULL,
`SUBSCRIBE_ID` varchar(255) NOT NULL COMMENT '第三方企业应用的suiteid加下划线0',
`CORP_ID` varchar(255) NOT NULL COMMENT '第三方企业应用的corpid',
@ -48,4 +48,4 @@ CREATE TABLE `open_sync_biz_data`
`UPDATED_BY` varchar(255) NOT NULL,
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
DEFAULT CHARSET = utf8mb4;

23
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml

@ -0,0 +1,23 @@
<?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.DingMiniInfoDao">
<resultMap type="com.epmet.entity.DingMiniInfoEntity" id="dingMiniInfoMap">
<result property="id" column="ID"/>
<result property="suiteId" column="SUITE_ID"/>
<result property="appId" column="APP_ID"/>
<result property="miniAppId" column="MINI_APP_ID"/>
<result property="suiteName" column="SUITE_NAME"/>
<result property="suiteKey" column="SUITE_KEY"/>
<result property="suiteSecret" column="SUITE_SECRET"/>
<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>
</mapper>

6
epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java

@ -1,7 +1,5 @@
package com.epmet;
import com.alibaba.fastjson.JSON;
import com.aliyun.dingtalk.module.DingTalkResult;
import com.taobao.dingtalk.client.DingTalkClientToken;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@ -24,7 +22,7 @@ public class ThirdPlatformTest {
@Test
public void sendText(){
DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken();
System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken));
/* DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken();
System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken));*/
}
}

1
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml

@ -57,6 +57,7 @@
</choose>
<where>
e.CUSTOMER_ID = #{customerId}
AND e.DEL_FLAG = '0'
and e.HAPPEN_TIME >= #{queryStartTime}
and e.HAPPEN_TIME <![CDATA[<=]]> #{queryEndTime}
<if test="orgType == 'agency'">

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java

@ -60,7 +60,7 @@ public class IcNatCompareRecordDTO implements Serializable {
* 真实手机号
*/
@ColumnWidth(20)
@ExcelProperty("手机号")
@ExcelProperty("联系方式")
private String realMobile;
/**

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectDetailResultDTO.java

@ -73,4 +73,6 @@ public class CollectDetailResultDTO implements Serializable {
private String checkReason;
private List<IcResiCollectMemDetailDTO> memberList;
private String orgIdPath;
}

6
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatCompareRecordExcelData.java

@ -21,8 +21,8 @@ public class IcNatCompareRecordExcelData {
@ExcelProperty("身份证号")
private String idCard;
@NotBlank(message = "手机号为必填项")
@ExcelProperty("手机号")
@NotBlank(message = "联系方式为必填项")
@ExcelProperty("联系方式")
private String mobile;
@Data
@ -36,7 +36,7 @@ public class IcNatCompareRecordExcelData {
@ExcelProperty("身份证号")
private String idCard;
@ExcelProperty("手机号")
@ExcelProperty("联系方式")
@ColumnWidth(20)
private String mobile;

9
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java

@ -89,12 +89,17 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
if (null != hsjcResDTO && CollectionUtils.isNotEmpty(hsjcResDTO.getData()) && null != hsjcResDTO.getData().get(0)) {
YtHsjcResDetailDTO ytHsjcResDetailDTO = hsjcResDTO.getData().get(0);
String testTime = ytHsjcResDetailDTO.getTest_time();
compareRecordEntity.setLatestNatTime(DateUtils.parse(testTime, DateUtils.DATE_PATTERN));
compareRecordEntity.setNatAddress(StringUtils.isNotBlank(ytHsjcResDetailDTO.getSampling_org_pcr()) ? ytHsjcResDetailDTO.getSample_result_pcr() : StrConstant.EPMETY_STR);
if (StringUtils.isNotBlank(testTime)) {
// 赋值最近一次核酸时间
compareRecordEntity.setLatestNatTime(DateUtils.parse(testTime, DateUtils.DATE_TIME_PATTERN));
}
// 赋值检测地点
compareRecordEntity.setNatAddress(StringUtils.isNotBlank(ytHsjcResDetailDTO.getSampling_org_pcr()) ? ytHsjcResDetailDTO.getSampling_org_pcr() : StrConstant.EPMETY_STR);
// "sample_result_pcr":"2",// 核酸检测结果 1:阳性,2:阴性
String sample_result_pcr = ytHsjcResDetailDTO.getSample_result_pcr();
if (NumConstant.ONE_STR.equals(sample_result_pcr)) {
// 检测结果(0:阴性 1:阳性):接口填入
compareRecordEntity.setNatResult(NumConstant.ONE_STR);
} else if (NumConstant.TWO_STR.equals(sample_result_pcr)) {
compareRecordEntity.setNatResult(NumConstant.ZERO_STR);

17
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java

@ -32,6 +32,7 @@ import com.epmet.service.IcNatService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -223,14 +224,16 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
e.setIsResiUser(StringUtils.isBlank(idCard.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR);
e.setUserId(idCard.getUserId());
e.setUserType("sync");
e.setName(natInfo.getName());
e.setMobile(natInfo.getTelephone());
e.setIdCard(natInfo.getCard_no());
e.setName(StringUtils.isNotBlank(natInfo.getName()) ? natInfo.getName() : "");
e.setMobile(StringUtils.isNotBlank(natInfo.getTelephone()) ? natInfo.getTelephone() : "");
e.setIdCard(StringUtils.isNotBlank(natInfo.getCard_no()) ? natInfo.getCard_no() : "");
e.setNatTime(DateUtils.parseDate(natInfo.getTest_time(),DateUtils.DATE_TIME_PATTERN));
e.setNatResult(natInfo.getSample_result_pcr());
e.setNatAddress(natInfo.getSampling_org_pcr());
e.setAgencyId(idCard.getAgencyId());
e.setPids(idCard.getPids());
e.setAttachmentType("");
e.setAttachmentUrl("");
entities.add(e);
});
}
@ -240,7 +243,9 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
entities.forEach(e -> existNatInfos.stream().filter(i -> i.getUserId().equals(e.getUserId()) && i.getIdCard().equals(e.getIdCard())).forEach(i -> e.setExistStatus(true)));
Map<Boolean, List<IcNatEntity>> groupByStatus = entities.stream().collect(Collectors.groupingBy(IcNatEntity::getExistStatus));
if (CollectionUtils.isNotEmpty(groupByStatus.get(false))){
icNatService.insertBatch(groupByStatus.get(false));
for (List<IcNatEntity> icNatEntities : ListUtils.partition(groupByStatus.get(false), 500)) {
icNatService.insertBatch(icNatEntities);
}
}
//组织关系表
List<IcNatRelationEntity> relationEntities = new ArrayList<>();
@ -257,7 +262,9 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
}
});
if (CollectionUtils.isNotEmpty(relationEntities)){
icNatRelationService.insertBatch(relationEntities);
for (List<IcNatRelationEntity> icNatRelationEntities : ListUtils.partition(relationEntities, 500)) {
icNatRelationService.insertBatch(icNatRelationEntities);
}
}
}
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java

@ -224,6 +224,7 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl<IcResiCollectDao,
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "暂无查询到信息","暂无查询到信息");
}
CollectDetailResultDTO result = ConvertUtils.sourceToTarget(entity, CollectDetailResultDTO.class);
result.setOrgIdPath(StringUtils.isBlank(entity.getPids()) ? entity.getAgencyId() : entity.getPids()+":"+entity.getAgencyId());
//查询成员信息
List<IcResiCollectMemDetailDTO> memberList = icResiMemberDao.selectListByCollectId(dto.getId());
result.setMemberList(memberList);

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcTripReportRecordServiceImpl.java

@ -264,7 +264,10 @@ public class IcTripReportRecordServiceImpl extends BaseServiceImpl<IcTripReportR
@Transactional(rollbackFor = Exception.class)
public void delete(String customerId, String userId, String[] ids) {
CustomerStaffInfoCacheResult staffInfo=queryCurrentStaff(customerId,userId);
baseDao.batchDel(userId,staffInfo.getAgencyId(),ids);
int delTotal=baseDao.batchDel(userId,staffInfo.getAgencyId(),ids);
if (0 == delTotal) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"行程上报删除失败,请确认组织id是否一致","记录删除失败");
}
}
/**

29
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccinePrarmeterServiceImpl.java

@ -324,23 +324,7 @@ public class IcVaccinePrarmeterServiceImpl extends BaseServiceImpl<IcVaccinePrar
list.get(i).setAddStatus(true);
continue;
}
if("0".equals(list.get(i).getIsVaccination())){
// 未接种 判断是否填写原因
if (StringUtils.isBlank(list.get(i).getReason()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "选择未接种时,原因不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
if("其他原因".equals(list.get(i).getReason())){
// 未接种原因选择其他,判断是否填写备注
if (StringUtils.isBlank(list.get(i).getNote()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "选择其他原因时,备注不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
}
}else{
if("1".equals(list.get(i).getIsVaccination())){
// 已接种 判断是否填写接种时间地点
if (StringUtils.isBlank(list.get(i).getFirstVacTime()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "第一次接种时间不能为空",i+1));
@ -372,6 +356,17 @@ public class IcVaccinePrarmeterServiceImpl extends BaseServiceImpl<IcVaccinePrar
// list.get(i).setAddStatus(true);
// continue;
// }
}
if("其他原因".equals(list.get(i).getReason())){
// 未接种原因选择其他,判断是否填写备注
if (StringUtils.isBlank(list.get(i).getNote()) && !list.get(i).getAddStatus()){
errorInfo.add(getErrorInfo(list.get(i), "选择其他原因时,备注不能为空",i+1));
list.get(i).setAddStatus(true);
continue;
}
}
// 校验所属网格通过名称能否匹配到ID

BIN
epmet-user/epmet-user-server/src/main/resources/excel/ic_nat_compare_record_template.xlsx

Binary file not shown.

3
epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml

@ -37,7 +37,8 @@
DATA_NAME AS dataName,
switch_status AS switchStatus,
sort AS sort,
data_code AS dataCode
data_code AS dataCode,
customer_id as customerId
FROM data_sync_config
WHERE DEL_FLAG = 0
<if test='null != customerId and customerId != "" '>

3
epmet-user/epmet-user-server/src/main/resources/mapper/IcTripReportRecordDao.xml

@ -68,8 +68,7 @@
<update id="batchDel" parameterType="map">
update ic_trip_report_record set del_flag='1',UPDATED_BY=#{userId},UPDATED_TIME=NOW()
WHERE USER_TYPE !='resi'
AND AGENCY_ID=#{agencyId}
WHERE AGENCY_ID=#{agencyId}
AND (
<foreach collection="ids" item="id" separator=" OR ">
id=#{id}

Loading…
Cancel
Save