From 43c094c3f019beb1b9efce0a04a38797f1c12f50 Mon Sep 17 00:00:00 2001 From: PoffyZhang <99775271@qq.com> Date: Thu, 14 Sep 2023 16:50:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A0=B8=E5=BF=83=E4=B8=9A=E5=8A=A1=20?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=8C=89=E5=8D=95=E4=BD=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/task/SynProjectCoreBizTask.java | 81 ++++++++++++++++++++-- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/SynProjectCoreBizTask.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/SynProjectCoreBizTask.java index daea910..13701a3 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/SynProjectCoreBizTask.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/SynProjectCoreBizTask.java @@ -29,7 +29,9 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; /** * @author ZPF @@ -58,9 +60,11 @@ public class SynProjectCoreBizTask { @Autowired private ProjectIrsManage projectIrsManage; + private final Integer MAX_PAGE_SIZE = 1000; + /** * 前置机每天晚上10点自动清空,第二天早上6点获取数据 - * 定时同步前置机数据 每天1点开始执行一次 + * 定时同步前置机数据 每天1点开始执行一次 不按照单位 * */ @Scheduled(cron = "0 0 2 * * ?") @@ -75,12 +79,7 @@ public class SynProjectCoreBizTask { StopWatch stopWatch = new StopWatch(); stopWatch.start(); - List orgs = organizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getTypeCode, Lists.newArrayList(DingOrganizationContant.UNIT_TYPE - , DingOrganizationContant.GOV_TEMPORARY))); - log.info("总共需要同步 orgs size :{}",orgs.size()); - - syncCoreBiz(orgs); + syncCoreBiz(); stopWatch.stop(); log.info("同步项目核心业务结束====={}s",stopWatch.getTotalTimeSeconds()); } @@ -158,6 +157,74 @@ public class SynProjectCoreBizTask { } } + private void syncCoreBiz() { + Map map = organizationService.list().stream().distinct().collect(Collectors.toMap(DingOrganization::getOrganizationCode, o -> o)); + + Integer currentSize = MAX_PAGE_SIZE; + Integer page = 1; + while (currentSize.equals(MAX_PAGE_SIZE)) { + //去请求IRS接口 + JSONObject jsonObject = projectIrsManage.searchCoreBiz(null, null, MAX_PAGE_SIZE, page); + + JSONArray jsonArray = jsonObject.getJSONArray(BizConst.RESPONSE_KEY_DATA); + currentSize = jsonArray.size(); + if (CollUtil.isNotEmpty(jsonArray)) { + if (currentSize.equals(MAX_PAGE_SIZE)) { + page++; + } + jsonArray.forEach(j -> { + JSONObject jsonData = JSON.parseObject(JSON.toJSONString(j)); + ProjectCoreBiz coreBiz = new ProjectCoreBiz(); + // + Long irsId = jsonData.getLong(BizConst.RESPONSE_KEY_ID); + String dingCode = jsonData.getString(BizConst.RESPONSE_KEY_DING_CODE); + String matterName = jsonData.getString(BizConst.RESPONSE_KEY_MATTER_NAME); + String orgName = jsonData.getString(BizConst.RESPONSE_KEY_ORG_NAME); + String userState = jsonData.getString(BizConst.RESPONSE_KEY_USER_STATE); + String areaName = jsonData.getString(BizConst.RESPONSE_KEY_AREA_NAME); + ProjectCoreBiz old = projectCoreBizService.getOne(Wrappers.lambdaQuery(ProjectCoreBiz.class) + .eq(ProjectCoreBiz::getIrsId, irsId) + .last(BizConst.LIMIT_1)); + + if (Objects.nonNull(old)) { + coreBiz.setId(old.getId()); + } else { + coreBiz.setCreateOn(LocalDateTime.now()); + } + + if(map.containsKey(dingCode)){ + DingOrganization organization = map.get(dingCode); + + String unifiedSocialCreditCode = organization.getUnifiedSocialCreditCode(); + if(StringUtils.isBlank(unifiedSocialCreditCode)){ + GenericResult dingResult = zwddClient.getOrganizationByCode(organization.getOrganizationCode()); + + log.info("ding org result : {}",JSON.toJSONString(dingResult)); + + if(dingResult.isSuccess()){ + DingOrgInfoDTO data = dingResult.getData(); + unifiedSocialCreditCode = data.getUnifiedSocialCreditCode(); + organization.setUnifiedSocialCreditCode(unifiedSocialCreditCode); + organizationService.updateById(organization); + } + } + + coreBiz.setUpdateOn(LocalDateTime.now()); + coreBiz.setIrsId(irsId); + coreBiz.setMatterName(matterName); + coreBiz.setOrgCode(dingCode); + coreBiz.setOrgName(orgName); + coreBiz.setUserState(userState); + coreBiz.setAreaName(areaName); + coreBiz.setMatterCode(irsId.toString()); + projectCoreBizService.saveOrUpdate(coreBiz); + coreBiz.setMatterCode(genirate(unifiedSocialCreditCode, coreBiz.getId())); + projectCoreBizService.updateById(coreBiz); + } + }); + } + } + } /** * 生成 编号 From 7bcde4b567217926918ec726e3534a672a5d07b0 Mon Sep 17 00:00:00 2001 From: PoffyZhang <99775271@qq.com> Date: Thu, 14 Sep 2023 16:51:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A0=B8=E5=BF=83=E4=B8=9A=E5=8A=A1=20?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=8C=89=E5=8D=95=E4=BD=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ningdatech/pmapi/irs/controller/IrsController.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/irs/controller/IrsController.java b/pmapi/src/main/java/com/ningdatech/pmapi/irs/controller/IrsController.java index a13ca9c..a0aece2 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/irs/controller/IrsController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/irs/controller/IrsController.java @@ -10,6 +10,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -62,6 +63,10 @@ public class IrsController { @ApiOperation(value = "强制刷新核心业务", notes = "强制刷新核心业务") @GetMapping("/refresh-core-biz") public void refreshCoreBiz(@RequestParam(required = false) String orgCode) throws UnknownHostException { - projectCoreBizTask.doTask(orgCode); + if(StringUtils.isNotBlank(orgCode)){ + projectCoreBizTask.doTask(orgCode); + }else{ + projectCoreBizTask.doTask(); + } } }