From 9115dc753f8b39fd028c03792e3895b22de786c8 Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Mon, 11 Aug 2025 10:47:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ehr=E7=B3=BB=E7=BB=9F=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E6=8E=A5=E5=8F=A3=E3=80=81=E7=94=B5=E8=A1=A8=E4=BA=91?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=A4=96=E9=83=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/system/api/RemoteEnergyService.java | 8 + .../com/op/system/api/RemoteMesService.java | 3 + .../com/op/system/api/RemoteOpenService.java | 15 ++ .../factory/RemoteEnergyFallbackFactory.java | 10 ++ .../api/factory/RemoteMesFallbackFactory.java | 6 + .../factory/RemoteOpenFallbackFactory.java | 27 ++++ .../com/op/open/common/CustomFeignLogger.java | 49 ++++++ .../common/FeignHttpMessageConverter.java | 26 +++ .../FeignHttpMessageConvertersFactory.java | 20 +++ .../com/op/open/config/OutsideApiConfig.java | 78 +++++++++ .../com/op/open/config/SpringContext.java | 150 ++++++++++++++++++ .../op/open/controller/OpenController.java | 43 +++++ .../src/main/java/com/op/open/hr/HrApi.java | 75 +++++++++ .../main/java/com/op/open/hr/HrClient.java | 28 ++++ .../com/op/open/hr/HrRequestInterceptor.java | 37 +++++ .../java/com/op/open/hr/domain/HrQuery.java | 40 +++++ .../java/com/op/open/hr/domain/UserSign.java | 48 ++++++ .../java/com/op/open/nhApi/NhApiClient.java | 35 ++++ .../open/nhApi/NhApiRequestInterceptor.java | 27 ++++ .../com/op/open/nhApi/domain/NhQuery.java | 50 ++++++ .../java/com/op/open/service/OpenService.java | 13 ++ .../op/open/service/impl/OpenServiceImpl.java | 72 ++++++++- 22 files changed, 858 insertions(+), 2 deletions(-) create mode 100644 op-modules/op-open/src/main/java/com/op/open/common/CustomFeignLogger.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConverter.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConvertersFactory.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/config/OutsideApiConfig.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/config/SpringContext.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/hr/HrApi.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/hr/HrClient.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/hr/HrRequestInterceptor.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/hr/domain/HrQuery.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/hr/domain/UserSign.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiClient.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiRequestInterceptor.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/nhApi/domain/NhQuery.java 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 ad2047e10..402061924 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 @@ -18,4 +18,12 @@ public interface RemoteEnergyService { @PostMapping("/buildInfo/removeDatasource") public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty); + + + @PostMapping(value = "/record/dnbInstant/getNhEnergy") + public R SyncNhEnergy(); + + + @PostMapping(value = "/record/dnbInstant/getNhEnergyDetail") + public R SyncNhEnergyDetail(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java index eb158bb22..259d92cb3 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java @@ -54,4 +54,7 @@ public interface RemoteMesService { @PostMapping("/reportWorks/updateEquRunTime") public R updateEquRunTime(); + + @PostMapping("/AttendanceRecords/syncHrAttendance") + public R syncHrAttendance(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java index 3a9584651..df2319cf2 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java @@ -51,4 +51,19 @@ public interface RemoteOpenService { @PostMapping("/openInterface/getDeliveryNoteDetail") public AjaxResult getDeliveryNoteDetail(@RequestBody Map paramMap); + + @PostMapping("/openInterface/getVoltageCurrent") + public AjaxResult getVoltageCurrent(@RequestBody Map paramMap); + + @PostMapping("/openInterface/getElectricPower") + public AjaxResult getElectricPower(@RequestBody Map paramMap); + + @PostMapping("/openInterface/getElectricQuantity") + public AjaxResult getElectricQuantity(@RequestBody Map paramMap); + + @PostMapping("/openInterface/getFrozenElectricity") + public AjaxResult getFrozenElectricity(@RequestBody Map paramMap); + + @PostMapping("/openInterface/getAttRecord") + public AjaxResult getAttRecord(@RequestBody Map paramMap); } 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 ce4d4ecf2..32a0e9b19 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 @@ -26,6 +26,16 @@ public class RemoteEnergyFallbackFactory implements FallbackFactory paramMap) { + return AjaxResult.error("获取电表电压电流失败:" + throwable.getMessage()); + } + + @Override + public AjaxResult getElectricPower(Map paramMap) { + return AjaxResult.error("获取电表功率失败:" + throwable.getMessage()); + } + + @Override + public AjaxResult getElectricQuantity(Map paramMap) { + return AjaxResult.error("获取电表电量失败:" + throwable.getMessage()); + } + + @Override + public AjaxResult getFrozenElectricity(Map paramMap) { + return AjaxResult.error("获取电表冻结电量失败:" + throwable.getMessage()); + } + + @Override + public AjaxResult getAttRecord(Map paramMap) { + return AjaxResult.error("获取人员打开记录失败:" + throwable.getMessage()); + } + + }; } } diff --git a/op-modules/op-open/src/main/java/com/op/open/common/CustomFeignLogger.java b/op-modules/op-open/src/main/java/com/op/open/common/CustomFeignLogger.java new file mode 100644 index 000000000..ee5216320 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/common/CustomFeignLogger.java @@ -0,0 +1,49 @@ +package com.op.open.common; + + +import feign.Logger; +import feign.Request; +import feign.Response; +import feign.Util; + +import org.slf4j.MDC; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.URLDecoder; +import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +/** + * @author 018301 + */ +@Component +public class CustomFeignLogger extends Logger { + + private static final String KEY_OUTSIDE_TRACE_ID = "outsideTraceId"; + + @Override + protected void log(String configKey, String format, Object... args) { + + } + + @Override + protected void logRequest(String configKey, Level logLevel, Request request) { + + } + + @Override + protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) throws IOException { + int status = response.status(); + if (response.body() != null && !(status == 204 || status == 205)) { + byte[] bodyData = Util.toByteArray(response.body().asInputStream()); + + MDC.remove(KEY_OUTSIDE_TRACE_ID); + return response.toBuilder().body(bodyData).build(); + } + return response; + } + +} diff --git a/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConverter.java b/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConverter.java new file mode 100644 index 000000000..73374c15d --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConverter.java @@ -0,0 +1,26 @@ +package com.op.open.common; + +import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: 负责处理Feign接口消息体转换 + * + * @author : huangjinxian + * @version : 1.0 + * @since : 2024/9/13 + */ +@SuppressWarnings({"unused"}) +public class FeignHttpMessageConverter extends MappingJackson2HttpMessageConverter { + public FeignHttpMessageConverter() { + List mediaTypes = new ArrayList<>(); + String utf8Suf = ";charset=UTF-8"; + mediaTypes.add(MediaType.valueOf(MediaType.TEXT_EVENT_STREAM_VALUE + utf8Suf)); + mediaTypes.add(MediaType.valueOf(MediaType.TEXT_PLAIN_VALUE + utf8Suf)); + mediaTypes.add(MediaType.valueOf(MediaType.TEXT_HTML_VALUE + utf8Suf)); + setSupportedMediaTypes(mediaTypes); + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConvertersFactory.java b/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConvertersFactory.java new file mode 100644 index 000000000..9508d2e20 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/common/FeignHttpMessageConvertersFactory.java @@ -0,0 +1,20 @@ +package com.op.open.common; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; + +/** + * Description: Feign接口消息体转换工厂类 + * + * @author : huangjinxian + * @version : 1.0 + * @since : 2024/9/13 + */ +@SuppressWarnings({"unused"}) +public class FeignHttpMessageConvertersFactory implements ObjectFactory { + @Override + public HttpMessageConverters getObject() throws BeansException { + return new HttpMessageConverters(new FeignHttpMessageConverter()); + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/config/OutsideApiConfig.java b/op-modules/op-open/src/main/java/com/op/open/config/OutsideApiConfig.java new file mode 100644 index 000000000..96a717e31 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/config/OutsideApiConfig.java @@ -0,0 +1,78 @@ +package com.op.open.config; + + +import com.op.open.common.CustomFeignLogger; +import com.op.open.common.FeignHttpMessageConvertersFactory; +import com.op.open.hr.HrClient; +import com.op.open.hr.HrRequestInterceptor; +import com.op.open.nhApi.NhApiClient; +import com.op.open.nhApi.NhApiRequestInterceptor; +import feign.*; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; +import org.springframework.cloud.openfeign.support.SpringDecoder; +import org.springframework.cloud.openfeign.support.SpringEncoder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.TimeUnit; + +import static java.util.concurrent.TimeUnit.SECONDS; + +/** + * Description: + * + * @author : huangjinxian + * @version : 1.0 + * @since : 2024/9/23 + */ +@Configuration +public class OutsideApiConfig { + + @Value("${nhApi.domain}") + private String nhAipDomain; + + @Value("${nhApi.key}") + private String nhAipKey; + + @Value("${newHr.domain}") + private String hrDomain; + + + private final CustomFeignLogger customFeignLogger; + + public OutsideApiConfig(CustomFeignLogger customFeignLogger) { + this.customFeignLogger = customFeignLogger; + } + + + private Feign.Builder getDefaultFeignClient() { + return Feign.builder() + .decoder(new ResponseEntityDecoder(new SpringDecoder(new FeignHttpMessageConvertersFactory()))) + .options(new Request.Options(60, TimeUnit.SECONDS, 60, TimeUnit.SECONDS, true)) + .contract(new Contract.Default()) + .logLevel(Logger.Level.FULL) + .logger(customFeignLogger) + .dismiss404(); + } + + @Bean + public NhApiClient nhApiClient() { + return getDefaultFeignClient() + .encoder(new SpringEncoder(new FeignHttpMessageConvertersFactory())) + .retryer(new Retryer.Default(100, SECONDS.toMillis(1), 3)) + .requestInterceptor(new NhApiRequestInterceptor(nhAipKey)) + .target(NhApiClient.class, nhAipDomain); + } + + @Bean + public HrClient hrClient() { + return getDefaultFeignClient() + .encoder(new SpringEncoder(new FeignHttpMessageConvertersFactory())) + .retryer(new Retryer.Default(100, SECONDS.toMillis(1), 3)) + .requestInterceptor(new HrRequestInterceptor()) + .target(HrClient.class, hrDomain); + } + +} diff --git a/op-modules/op-open/src/main/java/com/op/open/config/SpringContext.java b/op-modules/op-open/src/main/java/com/op/open/config/SpringContext.java new file mode 100644 index 000000000..f0d7732a5 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/config/SpringContext.java @@ -0,0 +1,150 @@ +package com.op.open.config; + +import com.google.common.collect.Lists; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +/** + * spring上下文综合应用 + * + * @author huangjinxian + * @version 1.0 + * @date 2024/9/8 + */ +@Component +public class SpringContext implements ApplicationContextAware { + //上下文 + private static ApplicationContext applicationContext = null; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContext.init(applicationContext); + } + + public static void init(ApplicationContext context) throws BeansException { + if (applicationContext == null) { + applicationContext = context; + } + } + + /** + * 获取Spring配置环境变量 + * + * @return: org.springframework.core.env.Environment + * @auther huangjinxian + * @see Environment + */ + public static Environment getEnvironment() { + return applicationContext.getEnvironment(); + } + + /** + * 获取上下文 + * + * @return: org.springframework.context.ApplicationContext + * @auther huangjinxian + * @see ApplicationContext + */ + public static ApplicationContext self() { + return applicationContext; + } + + /** + * 发送事件通知 + * + * @param event + */ + public static void publishEvent(Object event) { + applicationContext.publishEvent(event); + } + + /** + * 获取java bean + * + * @param name: bean名 + * @return: java.lang.Object + * @auther huangjinxian + * @see Object + */ + public static Object getBean(String name) throws BeansException { + return applicationContext.getBean(name); + } + + /** + * 获取java bean + * + * @param clazz: bean类 + * @return: T + * @auther huangjinxian + * @see T + */ + public static T getBean(Class clazz) throws BeansException { + return applicationContext.getBean(clazz); + } + + /** + * 获取java bean + * + * @param name: bean名 + * @param clazz: bean类 + * @return: T + * @auther huangjinxian + * @see T + */ + public static T getBean(String name, Class clazz) throws BeansException { + return applicationContext.getBean(name, clazz); + } + + /** + * 根据类型获取BeanMap + * + * @param clazz: bean类 + * @return: java.util.Map + * @auther huangjinxian + * @see Map < String,T> + */ + public static Map getBeanMapOfType(Class clazz) { + return applicationContext.getBeansOfType(clazz); + } + + /** + * 根据类型获取BeanList + * + * @param clazz: bean类 + * @return: java.util.Map + * @auther huangjinxian + * @see Map< String,T> + */ + public static List getBeanListOfType(Class clazz) { + return Lists.newArrayList(applicationContext.getBeansOfType(clazz).values()); + } + + /** + * 自动装配这个类型的依赖 + * + * @param t: 类 + * @return: void + * @auther huangjinxian + */ + public static void autowireBean(T t) { + applicationContext.getAutowireCapableBeanFactory().autowireBean(t); + } + + /** + * 判断IOC容器中是否匹配了名字为name的bean + * + * @param name: bean名 + * @return: boolean + * @auther huangjinxian + * @see boolean + */ + public static boolean containsBean(String name) { + return applicationContext.containsBean(name); + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java index 1c329cf0e..a3f7f287e 100644 --- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -8,6 +8,8 @@ import com.op.common.core.utils.StringUtils; import com.op.common.core.web.controller.BaseController; import com.op.common.core.web.domain.AjaxResult; import com.op.common.datasource.creator.DynamicDatasourceCreator; +import com.op.open.hr.domain.HrQuery; +import com.op.open.nhApi.domain.NhQuery; import com.op.open.service.OpenService; import com.op.system.api.domain.DataSourcePropertyDTO; import com.op.system.api.domain.device.EquEquipmentDTO; @@ -270,4 +272,45 @@ public class OpenController extends BaseController { return openService.addEquSapInfo(dto); } + /** + * 电压/电流 + * **/ + @PostMapping("/getVoltageCurrent") + public AjaxResult getVoltageCurrent(@RequestBody NhQuery params) { + return openService.getVoltageCurrent(params); + } + + /** + * 功率 + * **/ + @PostMapping("/getElectricPower") + public AjaxResult getElectricPower(@RequestBody NhQuery params) { + return openService.getElectricPower(params); + } + /** + * 电量 + * **/ + @PostMapping("/getElectricQuantity") + public AjaxResult getElectricQuantity(@RequestBody NhQuery params) { + return openService.getElectricQuantity(params); + } + + /** + * 电量 + * **/ + @PostMapping("/getFrozenElectricity") + public AjaxResult getFrozenElectricity(@RequestBody NhQuery params) { + return openService.getFrozenElectricity(params); + } + + + /** + * 从hr系统获取人员打开信息 + * **/ + @PostMapping("/getAttRecord") + public AjaxResult getAttRecord(@RequestBody HrQuery params){ + return openService.getAttRecord(params); + } + + } diff --git a/op-modules/op-open/src/main/java/com/op/open/hr/HrApi.java b/op-modules/op-open/src/main/java/com/op/open/hr/HrApi.java new file mode 100644 index 000000000..94f99fcc1 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/hr/HrApi.java @@ -0,0 +1,75 @@ +package com.op.open.hr; + + +import com.op.open.hr.domain.HrQuery; +import com.op.open.hr.domain.UserSign; +import org.codehaus.jackson.JsonNode; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.TypeReference; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +@Component +public class HrApi { + private final HrClient hrClient; + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + public HrApi(HrClient hrClient) { + this.hrClient = hrClient; + } + + /** + * 重试参数 + */ + private int reloadValue = 0; + + public List getAttRecord( HrQuery params ) { + try { + String httpResult = hrClient.getAttRecord(params); + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(httpResult); + + String code = jsonNode.get("iserror").asText(); + if (!"0".equals(code)) { + + if ("无效的v8apitoken".equals(jsonNode.get("errormsg").asText())){ + if (reloadValue < 3) { + reloadValue++; + return getAttRecord(params); + } + } + throw new RuntimeException(); + } + + reloadValue = 0; + + + return convert(jsonNode.get("data"), UserSign.class); + + }catch (Exception e){ + throw new RuntimeException(); + } + } + + + public static List convert(JsonNode jsonNode, Class elementType) throws Exception { + // 如果是数组节点,直接转换 + if (jsonNode.isArray()) { + // 使用TypeReference来指定泛型类型 + return objectMapper.readValue( + objectMapper.writeValueAsString(jsonNode), + new TypeReference>() {} + ); + } + throw new IllegalArgumentException("JsonNode is not an array"); + } + +} diff --git a/op-modules/op-open/src/main/java/com/op/open/hr/HrClient.java b/op-modules/op-open/src/main/java/com/op/open/hr/HrClient.java new file mode 100644 index 000000000..39e106a1c --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/hr/HrClient.java @@ -0,0 +1,28 @@ +package com.op.open.hr; + +import com.fasterxml.jackson.databind.JsonNode; +import com.op.open.hr.domain.HrQuery; +import feign.Headers; +import feign.QueryMap; +import feign.RequestLine; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +/** + * remark + * + * @author 019117 + * @date + */ +public interface HrClient { + + @RequestLine("GET /v8api/api/login/getDynV8ApiToken") + @Headers({"Content-Type: application/json"}) + String getToken(); + + @RequestLine("GET /v8api/v8api/att/getAttRecord") + @Headers({"Content-Type: application/json"}) + String getAttRecord(@QueryMap HrQuery params); + +} diff --git a/op-modules/op-open/src/main/java/com/op/open/hr/HrRequestInterceptor.java b/op-modules/op-open/src/main/java/com/op/open/hr/HrRequestInterceptor.java new file mode 100644 index 000000000..afd605bc7 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/hr/HrRequestInterceptor.java @@ -0,0 +1,37 @@ +package com.op.open.hr; + +import com.fasterxml.jackson.databind.JsonNode; +import com.op.open.config.SpringContext; +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.boot.SpringApplication; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.HashMap; +import java.util.Map; + +/** + * remark + * + * @author 019117 + * @date + */ +public class HrRequestInterceptor implements RequestInterceptor { + + + private String getToken() { + HrClient hrClient = SpringContext.getBean(HrClient.class); + return hrClient.getToken(); + } + + @Override + public void apply(RequestTemplate template) { + if ("/v8api/api/login/getDynV8ApiToken".equals(template.url())) { + return; + } + + String token = getToken(); + + template.header("v8apitoken", token); + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/hr/domain/HrQuery.java b/op-modules/op-open/src/main/java/com/op/open/hr/domain/HrQuery.java new file mode 100644 index 000000000..4f2804cb7 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/hr/domain/HrQuery.java @@ -0,0 +1,40 @@ +package com.op.open.hr.domain; + +/** + * remark + * + * @author 019117 + * @date + */ +public class HrQuery { + + private String bd; + + private String ed; + + private String empcode; + + public String getBd() { + return bd; + } + + public void setBd(String bd) { + this.bd = bd; + } + + public String getEd() { + return ed; + } + + public void setEd(String ed) { + this.ed = ed; + } + + public String getEmpcode() { + return empcode; + } + + public void setEmpcode(String empcode) { + this.empcode = empcode; + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/hr/domain/UserSign.java b/op-modules/op-open/src/main/java/com/op/open/hr/domain/UserSign.java new file mode 100644 index 000000000..394d39a02 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/hr/domain/UserSign.java @@ -0,0 +1,48 @@ +package com.op.open.hr.domain; + +/** + * remark + * + * @author 019117 + * @date + */ +public class UserSign { + + private String empname; + private String empcode; + private String strdata; + private String kqdate; + + + public String getEmpname() { + return empname; + } + + public void setEmpname(String empname) { + this.empname = empname; + } + + public String getEmpcode() { + return empcode; + } + + public void setEmpcode(String empcode) { + this.empcode = empcode; + } + + public String getStrdata() { + return strdata; + } + + public void setStrdata(String strdata) { + this.strdata = strdata; + } + + public String getKqdate() { + return kqdate; + } + + public void setKqdate(String kqdate) { + this.kqdate = kqdate; + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiClient.java b/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiClient.java new file mode 100644 index 000000000..a87fed529 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiClient.java @@ -0,0 +1,35 @@ +package com.op.open.nhApi; + +import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.op.open.nhApi.domain.NhQuery; +import feign.Headers; +import feign.RequestLine; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * remark + * + * @author 019117 + * @date + */ +public interface NhApiClient { + + @RequestLine("POST /WebApi/NH2/VoltageCurrent") + @Headers({"Content-Type: application/json"}) + JSONObject getVoltageCurrent(@RequestBody NhQuery params); + + @RequestLine("POST /WebApi/NH2/ElectricPower") + @Headers({"Content-Type: application/json"}) + JSONObject getElectricPower(@RequestBody NhQuery params); + + @RequestLine("POST /WebApi/NH2/ElectricQuantity") + @Headers({"Content-Type: application/json"}) + JSONObject getElectricQuantity(@RequestBody NhQuery params); + + @RequestLine("POST /WebApi/NH2/FrozenElectricity") + @Headers({"Content-Type: application/json"}) + JSONObject getFrozenElectricity(@RequestBody NhQuery params); + + +} diff --git a/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiRequestInterceptor.java b/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiRequestInterceptor.java new file mode 100644 index 000000000..f793bf71f --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/nhApi/NhApiRequestInterceptor.java @@ -0,0 +1,27 @@ +package com.op.open.nhApi; + +import feign.RequestInterceptor; +import feign.RequestTemplate; + +/** + * remark + * + * @author 019117 + * @date + */ +public class NhApiRequestInterceptor implements RequestInterceptor { + + private final String token; + + /** + * 构造函数 + * **/ + public NhApiRequestInterceptor(String token) { + this.token = token; + } + + @Override + public void apply(RequestTemplate template) { + template.header("API_KEY", token); + } +} \ No newline at end of file diff --git a/op-modules/op-open/src/main/java/com/op/open/nhApi/domain/NhQuery.java b/op-modules/op-open/src/main/java/com/op/open/nhApi/domain/NhQuery.java new file mode 100644 index 000000000..c0c050f6a --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/nhApi/domain/NhQuery.java @@ -0,0 +1,50 @@ +package com.op.open.nhApi.domain; + +/** + * remark + * + * @author 019117 + * @date + */ +public class NhQuery { + + private String dateType; + + private String startTime; + + private String endTime; + + private String valueType; + + public String getDateType() { + return dateType; + } + + public void setDateType(String dateType) { + this.dateType = dateType; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getValueType() { + return valueType; + } + + public void setValueType(String valueType) { + this.valueType = valueType; + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java index 2e7647557..df54f5c33 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java @@ -1,6 +1,8 @@ package com.op.open.service; import com.op.common.core.web.domain.AjaxResult; +import com.op.open.hr.domain.HrQuery; +import com.op.open.nhApi.domain.NhQuery; import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.device.EquRepairOrderDTO; import com.op.system.api.domain.dto.WCSDTO; @@ -46,4 +48,15 @@ public interface OpenService { AjaxResult sendProductCheckNo(List dots); AjaxResult addEquSapInfo(EquEquipmentDTO dto); + + + AjaxResult getVoltageCurrent(NhQuery paramMap); + + AjaxResult getElectricPower(NhQuery paramMap); + + AjaxResult getElectricQuantity(NhQuery paramMap); + + AjaxResult getFrozenElectricity(NhQuery paramMap); + + AjaxResult getAttRecord(HrQuery paramMap); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index a483978b2..b2f16e80b 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -1,10 +1,8 @@ package com.op.open.service.impl; -import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.JSONWriter; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.constant.Constants; import com.op.common.core.utils.DateUtils; @@ -18,7 +16,11 @@ import com.op.common.security.utils.SecurityUtils; import com.op.open.domain.EquEquipmentBo; import com.op.open.domain.EquRepairWorkOrderBo; +import com.op.open.hr.HrApi; +import com.op.open.hr.domain.HrQuery; import com.op.open.mapper.OpenMapper; +import com.op.open.nhApi.NhApiClient; +import com.op.open.nhApi.domain.NhQuery; import com.op.open.service.OpenService; import com.op.system.api.RemoteOpenService; import com.op.system.api.domain.SysNoticeGroup; @@ -95,8 +97,18 @@ public class OpenServiceImpl implements OpenService { @Autowired private RemoteOpenService remoteOpenService; + private final HrApi hrApi; + + @Autowired + private NhApiClient nhApiClient; + + private static Pattern p2= Pattern.compile("<[^>]+>"); + public OpenServiceImpl(HrApi hrApi) { + this.hrApi = hrApi; + } + /** * 下一工序机台集合获取 * JSON @@ -988,4 +1000,60 @@ public class OpenServiceImpl implements OpenService { return error(e.getMessage()); } } + + + /** + * 获取电表电流电压 + * **/ + @Override + public AjaxResult getVoltageCurrent(NhQuery paramMap) { + try { + JSONObject jsonObject= nhApiClient.getVoltageCurrent(paramMap);; + return AjaxResult.success(jsonObject); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + /** + * 获取电表功率 + * **/ + @Override + public AjaxResult getElectricPower(NhQuery paramMap) { + try { + JSONObject jsonObject= nhApiClient.getElectricPower(paramMap); + return AjaxResult.success(jsonObject); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + @Override + public AjaxResult getElectricQuantity(NhQuery paramMap) { + try { + JSONObject jsonObject= nhApiClient.getElectricQuantity(paramMap); + return AjaxResult.success(jsonObject); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + @Override + public AjaxResult getFrozenElectricity(NhQuery paramMap) { + try { + JSONObject jsonObject= nhApiClient.getFrozenElectricity(paramMap); + return AjaxResult.success(jsonObject); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + @Override + public AjaxResult getAttRecord(HrQuery paramMap) { + return AjaxResult.success(hrApi.getAttRecord(paramMap)); + } }