diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java index 83c3eda55..f802d942a 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java @@ -7,6 +7,7 @@ import com.op.system.api.factory.RemoteEnergyFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import java.util.Map; @@ -27,8 +28,8 @@ public interface RemoteEnergyService { @PostMapping(value = "/record/dnbInstant/getNhEnergyDetail") - public R SyncNhEnergyDetail(); + public R SyncNhEnergyDetail(@RequestHeader Map header); - @PostMapping(value = "/record/dnbInstant/fixWwEnergyData",headers = {"poolName=ds_1000"}) - public R syncFixWwEnergyData(@RequestBody Map map); + @PostMapping(value = "/record/dnbInstant/fixWwEnergyData") + public R syncFixWwEnergyData(@RequestBody Map map,@RequestHeader Map header); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java index 085e5d861..149775dab 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java @@ -35,12 +35,12 @@ public class RemoteEnergyFallbackFactory implements FallbackFactory header) { return R.fail("同步电表实时数据失败:" + throwable.getMessage()); } @Override - public R syncFixWwEnergyData(Map map) { + public R syncFixWwEnergyData(Map map, Map header) { return R.fail("修正威伟电表数据失败:" + throwable.getMessage()); } }; diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java index 517d274ba..ebff2a5ee 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java @@ -248,6 +248,7 @@ public class RecordDnbInstantServiceImpl implements IRecordDnbInstantService { } @Override + @DS("#header.poolName") public void getNhEnergyDetail() { Map params = new HashMap<>(); params.put("dateType","mi15"); @@ -322,21 +323,14 @@ public class RecordDnbInstantServiceImpl implements IRecordDnbInstantService { } } - DynamicDataSourceContextHolder.push("ds_1000"); - - - try { - for (RecordDnbInstant item : list) { - BaseMonitorInfo temp = new BaseMonitorInfo(); - temp.setConnCode(item.getMonitorId()); - List baseList = baseMonitorInfoMapper.selectBaseMonitorInfoList(temp); - for (BaseMonitorInfo base : baseList) { - item.setMonitorId(base.getMonitorId()); - recordDnbInstantMapper.insertRecordDnbInstant(item); - } + for (RecordDnbInstant item : list) { + BaseMonitorInfo temp = new BaseMonitorInfo(); + temp.setConnCode(item.getMonitorId()); + List baseList = baseMonitorInfoMapper.selectBaseMonitorInfoList(temp); + for (BaseMonitorInfo base : baseList) { + item.setMonitorId(base.getMonitorId()); + recordDnbInstantMapper.insertRecordDnbInstant(item); } - }finally { - DynamicDataSourceContextHolder.poll(); } } diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index 1efa5f283..286bbac88 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -1,9 +1,11 @@ package com.op.job.task; +import com.op.job.util.MultiDbFeignExecutor; import com.op.system.api.*; import com.op.system.api.domain.sap.SapRouterQuery; import com.op.system.api.domain.sap.SapShopOrderQuery; import com.op.system.api.domain.sap.SapZmesGetMchb; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +16,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; /** * 定时任务调度测试 @@ -21,6 +24,7 @@ import java.util.Map; * @author OP */ @Component("ryTask") +@Slf4j public class RyTask { protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired @@ -46,6 +50,9 @@ public class RyTask { @Autowired private RemoteEnergyService remoteEnergyService; + @Autowired + private MultiDbFeignExecutor multiDbFeignExecutor; + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); } @@ -271,7 +278,16 @@ public class RyTask { /**********同步电实时数据*********/ public void SyncNhEnergyDetail(){ logger.info("++同步电实时数据+开始++getNhEnergyDetail+++++"); - remoteEnergyService.SyncNhEnergyDetail(); + multiDbFeignExecutor.execute("syncFixWwEnergyData", dbHeader -> { + try { + //每个数据库线程休眠1到5秒,防止威伟电表接口限流 + int randomMills = ThreadLocalRandom.current().nextInt(1000, 5001); + Thread.sleep(randomMills); + remoteEnergyService.SyncNhEnergyDetail(dbHeader); + }catch (Exception e){ + log.info("任务执行出错"); + } + }); } @@ -297,19 +313,24 @@ public class RyTask { /**********修正威伟电表数据(有参)*********/ public void syncFixWwEnergyData(String beginDate,String endDate){ logger.info("+++修正威伟电表数据(有参)++syncFixWwEnergyData+++++"); - Map map = new HashMap<>(); - map.put("beginDate",beginDate); - map.put("endDate",endDate); - remoteEnergyService.syncFixWwEnergyData(map); + multiDbFeignExecutor.execute("syncFixWwEnergyData", dbHeader -> { + Map map = new HashMap<>(); + map.put("beginDate",beginDate); + map.put("endDate",endDate); + remoteEnergyService.syncFixWwEnergyData(map,dbHeader); + }); } /** 修正威伟电表数据(无参) **/ public void syncFixWwEnergyData(){ logger.info("+++修正威伟电表数据(无参)++syncFixWwEnergyData+++++"); - Map map = new HashMap<>(); - map.put("beginDate",""); - map.put("endDate",""); - remoteEnergyService.syncFixWwEnergyData(map); + multiDbFeignExecutor.execute("syncFixWwEnergyData", dbHeader -> { + Map map = new HashMap<>(); + map.put("beginDate",""); + map.put("endDate",""); + remoteEnergyService.syncFixWwEnergyData(map,dbHeader); + }); + } }