From d6c10e03beb796eb769baebfb859a6a5c6937603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Wed, 24 Jul 2024 16:47:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=BD=E5=B8=A6=E4=B8=8A=E7=BD=91?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../common/constant/SystemConstants.java | 1 + .../common/enums/RemoteOperateMsgEnum.java | 8 +- .../bellmann/common/result/ResultCode.java | 3 +- .../com/bellmann/common/util/CommonUtils.java | 9 + .../common/util/HttpClientResult.java | 53 ++ .../bellmann/common/util/HttpClientUtil.java | 508 ++++++++++++++++++ .../com/bellmann/common/util/OrderUtils.java | 111 ++++ .../controller/BroadbandController.java | 49 ++ .../controller/CustomTaskController.java | 48 ++ .../controller/ItmsOrderMergerController.java | 21 + .../OrderMergerServiceController.java | 21 + .../com/bellmann/mapper/CustomTaskMapper.java | 22 + .../com/bellmann/mapper/OrderInfoMapper.java | 2 + .../bellmann/mapper/OrderMergerMapper.java | 18 + .../mapper/OrderMergerServiceMapper.java | 22 + .../bellmann/model/bo/OrderServiceArgsBO.java | 11 + .../com/bellmann/model/bo/OrderTempBO.java | 32 ++ .../com/bellmann/model/entity/CustomTask.java | 45 ++ .../bellmann/model/entity/OrderMerger.java | 98 ++++ .../model/entity/OrderMergerService.java | 39 ++ .../bellmann/model/form/AddBroadbandForm.java | 54 ++ .../com/bellmann/model/vo/CustomTaskVO.java | 21 + .../bellmann/runner/ServiceManagerRunner.java | 2 +- .../java/com/bellmann/runner/UIService.java | 7 +- .../bellmann/service/BroadbandService.java | 10 + .../bellmann/service/CustomTaskService.java | 18 + .../bellmann/service/DeviceStaticService.java | 1 + .../bellmann/service/OrderMergerService.java | 13 + .../service/OrderMergerServiceService.java | 13 + .../service/impl/BroadbandServiceImpl.java | 225 ++++++++ .../service/impl/CustomTaskServiceImpl.java | 32 ++ .../service/impl/DeviceStaticServiceImpl.java | 59 ++ .../service/impl/FileOptionServiceImpl.java | 10 +- .../service/impl/OrderMergerServiceImpl.java | 17 + .../impl/OrderMergerServiceServiceImpl.java | 17 + .../resources/mapper/CustomTaskMapper.xml | 34 ++ src/main/resources/mapper/OrderInfoMapper.xml | 3 + .../resources/mapper/OrderMergerMapper.xml | 50 ++ .../mapper/OrderMergerServiceMapper.xml | 31 ++ 40 files changed, 1735 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/bellmann/common/util/HttpClientResult.java create mode 100644 src/main/java/com/bellmann/common/util/HttpClientUtil.java create mode 100644 src/main/java/com/bellmann/common/util/OrderUtils.java create mode 100644 src/main/java/com/bellmann/controller/BroadbandController.java create mode 100644 src/main/java/com/bellmann/controller/CustomTaskController.java create mode 100644 src/main/java/com/bellmann/controller/ItmsOrderMergerController.java create mode 100644 src/main/java/com/bellmann/controller/OrderMergerServiceController.java create mode 100644 src/main/java/com/bellmann/mapper/CustomTaskMapper.java create mode 100644 src/main/java/com/bellmann/mapper/OrderMergerMapper.java create mode 100644 src/main/java/com/bellmann/mapper/OrderMergerServiceMapper.java create mode 100644 src/main/java/com/bellmann/model/bo/OrderServiceArgsBO.java create mode 100644 src/main/java/com/bellmann/model/bo/OrderTempBO.java create mode 100644 src/main/java/com/bellmann/model/entity/CustomTask.java create mode 100644 src/main/java/com/bellmann/model/entity/OrderMerger.java create mode 100644 src/main/java/com/bellmann/model/entity/OrderMergerService.java create mode 100644 src/main/java/com/bellmann/model/form/AddBroadbandForm.java create mode 100644 src/main/java/com/bellmann/model/vo/CustomTaskVO.java create mode 100644 src/main/java/com/bellmann/service/BroadbandService.java create mode 100644 src/main/java/com/bellmann/service/CustomTaskService.java create mode 100644 src/main/java/com/bellmann/service/OrderMergerService.java create mode 100644 src/main/java/com/bellmann/service/OrderMergerServiceService.java create mode 100644 src/main/java/com/bellmann/service/impl/BroadbandServiceImpl.java create mode 100644 src/main/java/com/bellmann/service/impl/CustomTaskServiceImpl.java create mode 100644 src/main/java/com/bellmann/service/impl/OrderMergerServiceImpl.java create mode 100644 src/main/java/com/bellmann/service/impl/OrderMergerServiceServiceImpl.java create mode 100644 src/main/resources/mapper/CustomTaskMapper.xml create mode 100644 src/main/resources/mapper/OrderMergerMapper.xml create mode 100644 src/main/resources/mapper/OrderMergerServiceMapper.xml diff --git a/pom.xml b/pom.xml index d2956e3..99f5cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -183,6 +183,11 @@ velocity-engine-core ${velocity.version} + + org.apache.httpcomponents + httpclient + 4.5.14 + com.zznode.cap capapi diff --git a/src/main/java/com/bellmann/common/constant/SystemConstants.java b/src/main/java/com/bellmann/common/constant/SystemConstants.java index 23f983f..726e3c6 100644 --- a/src/main/java/com/bellmann/common/constant/SystemConstants.java +++ b/src/main/java/com/bellmann/common/constant/SystemConstants.java @@ -44,4 +44,5 @@ public interface SystemConstants { public static final String CONN_TYPE_REGEX = "connectionType = (\\w+)"; public static final String DOWNLOAD_INFO_REGEX = "DownloadInfo = (.*)"; public static final String SPEED_FAIL = "测速失败,请查看操作日志"; + public static final String HOME = "/home/"; } diff --git a/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java index fdd0682..968a3e1 100644 --- a/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java +++ b/src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java @@ -40,7 +40,13 @@ public enum RemoteOperateMsgEnum implements IBaseEnum { X_REGISTER("x_Register","开启终端注册页面"), - SET_TELEPHONE_COM_ACCOUNT_PASSWORD("SetTeleComAccountPassword","设置电信维护密码") + SET_TELEPHONE_COM_ACCOUNT_PASSWORD("SetTeleComAccountPassword","设置电信维护密码"), + + LINK_INFO_QUERY_GPON("LinkInfoQueryGPON","设备链路详细信息"), + IPV6_INFO_QUERY("Ipv6InfoQuery","Ipv6InfoQuery"), + GET_LAND_HCP_INFO("GETLANDHCPINFO","GETLANDHCPINFO"), + WBAND("wband","查询上网业务"), + BASIC_COMMON_QUERY("basicCommonQuery","basicCommonQuery") ; @Getter private String value; diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 301bf75..d1c23d5 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -123,7 +123,8 @@ public enum ResultCode implements IResultCode, Serializable { LOGIC_IS_NULL("F0032","逻辑ID为空"), TASK_NOT_FOUND("F0033","任务不存在"), TASK_NOT_EXE("F0034", "任务未执行"), - UPDATE_ACCOUNT_PWD_ERROR("F0035","更新设备维护密码失败"); + UPDATE_ACCOUNT_PWD_ERROR("F0035","更新设备维护密码失败"), + PLEASE_SELECT_A_CUSTOMER_TYPE("F0036","请选择客户类型!"); @Override public String getCode() { diff --git a/src/main/java/com/bellmann/common/util/CommonUtils.java b/src/main/java/com/bellmann/common/util/CommonUtils.java index ad2bece..458c220 100644 --- a/src/main/java/com/bellmann/common/util/CommonUtils.java +++ b/src/main/java/com/bellmann/common/util/CommonUtils.java @@ -16,6 +16,7 @@ import java.util.regex.Pattern; public class CommonUtils { private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>"; + private static final String customerName = "122212121"; public static String getRandomString(int length) { //length表示生成字符串的长度 String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random = new Random(); @@ -73,4 +74,12 @@ public class CommonUtils { } return list; } + public static String convertStringDefault(String str) { + if (null == str || str.length()<1) { + str = customerName; + } + + + return str; + } } diff --git a/src/main/java/com/bellmann/common/util/HttpClientResult.java b/src/main/java/com/bellmann/common/util/HttpClientResult.java new file mode 100644 index 0000000..0a4d905 --- /dev/null +++ b/src/main/java/com/bellmann/common/util/HttpClientResult.java @@ -0,0 +1,53 @@ +package com.bellmann.common.util; + +public class HttpClientResult { + + + /** + * 响应状态码 + */ + private int code; + + /** + * 响应数据 + */ + private String content; + + + public HttpClientResult(){ + + } + + public HttpClientResult(int code){ + this.code = code; + } + + public HttpClientResult(Integer code, String content){ + this.code= code; + this.content = content; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @Override + public String toString() { + return "HttpClientResult{" + + "code=" + code + + ", content='" + content + '\'' + + '}'; + } +} diff --git a/src/main/java/com/bellmann/common/util/HttpClientUtil.java b/src/main/java/com/bellmann/common/util/HttpClientUtil.java new file mode 100644 index 0000000..278b775 --- /dev/null +++ b/src/main/java/com/bellmann/common/util/HttpClientUtil.java @@ -0,0 +1,508 @@ +package com.bellmann.common.util; + + +import org.apache.http.HttpEntity; +import org.apache.http.HttpHost; +import org.apache.http.HttpStatus; +import org.apache.http.NameValuePair; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.*; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.*; + +public class HttpClientUtil { + + + // 编码格式。发送编码格式统一用UTF-8 + private static final String ENCODING = "UTF-8"; + + // 设置连接超时时间,单位毫秒。 + private static final int CONNECT_TIMEOUT = 6000; + + // 请求获取数据的超时时间(即响应时间),单位毫秒。 + private static final int SOCKET_TIMEOUT = 6000; + + /** + * 发送get请求;不带请求头和请求参数 + * + * @param url 请求地址 + * @return + * @throws Exception + */ + public static HttpClientResult doGet(String url) throws Exception { + return doGet(url, null, null); + } + + /** + * 发送get请求;带请求参数 + * + * @param url 请求地址 + * @param params 请求参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doGet(String url, Map params) throws Exception { + return doGet(url, null, params); + } + + /** + * 发送get请求;带请求头和请求参数 + * + * @param url 请求地址 + * @param headers 请求头集合 + * @param params 请求参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doGet(String url, Map headers, Map params) throws Exception { + // 创建httpClient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // 创建访问的地址 + URIBuilder uriBuilder = new URIBuilder(url); + if (params != null) { + Set> entrySet = params.entrySet(); + for (Map.Entry entry : entrySet) { + uriBuilder.setParameter(entry.getKey(), entry.getValue()); + } + } + + // 创建http对象 + HttpGet httpGet = new HttpGet(uriBuilder.build()); + /** + * setConnectTimeout:设置连接超时时间,单位毫秒。 + * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection + * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。 + * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 + */ + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build(); + httpGet.setConfig(requestConfig); + + // 设置请求头 + packageHeader(headers, httpGet); + + // 创建httpResponse对象 + CloseableHttpResponse httpResponse = null; + + try { + // 执行请求并获得响应结果 + return getHttpClientResult(httpResponse, httpClient, httpGet); + } finally { + // 释放资源 + release(httpResponse, httpClient); + } + } + + /** + * 发送post请求;不带请求头和请求参数 + * + * @param url 请求地址 + * @return + * @throws Exception + */ +// public static HttpClientResult doPost(String url) throws Exception { +// return doPost(url, null, null, null); +// } + + /** + * 发送post请求;带请求参数 + * + * @param url 请求地址 + * @param params 参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doPost(String url, Map params, HttpHost proxy) throws Exception { + return doPost(url, null, params, proxy); + } + + /** + * 发送post请求;带请求头和请求参数 + * + * @param url 请求地址 + * @param headers 请求头集合 + * @param params 请求参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doPost(String url, Map headers, Map params, HttpHost proxy) throws Exception { + // 创建httpClient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // 创建http对象 + HttpPost httpPost = new HttpPost(url); + /** + * setConnectTimeout:设置连接超时时间,单位毫秒。 + * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection + * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。 + * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 + */ + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT). + setSocketTimeout(SOCKET_TIMEOUT).setProxy(proxy). + build(); + httpPost.setConfig(requestConfig); + // 设置请求头 + /*httpPost.setHeader("Cookie", ""); + httpPost.setHeader("Connection", "keep-alive"); + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Accept-Language", "zh-CN,zh;q=0.9"); + httpPost.setHeader("Accept-Encoding", "gzip, deflate, br"); + httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");*/ + packageHeader(headers, httpPost); + + // 封装请求参数 + packageParam(params, httpPost); + + // 创建httpResponse对象 + CloseableHttpResponse httpResponse = null; + + try { + // 执行请求并获得响应结果 + return getHttpClientResult(httpResponse, httpClient, httpPost); + } finally { + // 释放资源 + release(httpResponse, httpClient); + } + } + + + /** + * http请求 json格式参数 + * @param url + * @param headers + * @param params + * @param proxy + * @return + * @throws Exception + */ + public static HttpClientResult doPost(String url, Map headers, String params, HttpHost proxy) throws Exception { + // 创建httpClient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // 创建http对象 + HttpPost httpPost = new HttpPost(url); + /** + * setConnectTimeout:设置连接超时时间,单位毫秒。 + * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection + * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。 + * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 + */ + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT). + setSocketTimeout(SOCKET_TIMEOUT).setProxy(proxy). + build(); + httpPost.setConfig(requestConfig); + // 设置请求头 + /*httpPost.setHeader("Cookie", ""); + httpPost.setHeader("Connection", "keep-alive"); + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Accept-Language", "zh-CN,zh;q=0.9"); + httpPost.setHeader("Accept-Encoding", "gzip, deflate, br"); + httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");*/ + packageHeader(headers, httpPost); + + // 封装请求参数 + packageJsonParam(params, httpPost); + + // 创建httpResponse对象 + CloseableHttpResponse httpResponse = null; + + try { + // 执行请求并获得响应结果 + return getHttpClientResult(httpResponse, httpClient, httpPost); + } finally { + // 释放资源 + release(httpResponse, httpClient); + } + } + + + public static HttpClientResult doPost(String url, String params, HttpHost proxy) throws Exception { + // 创建httpClient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + + // 创建http对象 + HttpPost httpPost = new HttpPost(url); + /** + * setConnectTimeout:设置连接超时时间,单位毫秒。 + * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection + * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。 + * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 + */ + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT). + setSocketTimeout(SOCKET_TIMEOUT).setProxy(proxy). + build(); + httpPost.setConfig(requestConfig); + // 设置请求头 + /*httpPost.setHeader("Cookie", ""); + httpPost.setHeader("Connection", "keep-alive"); + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Accept-Language", "zh-CN,zh;q=0.9"); + httpPost.setHeader("Accept-Encoding", "gzip, deflate, br"); + httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");*/ + //packageHeader(headers, httpPost); + + // 封装请求参数 + packageJsonParam(params, httpPost); + + // 创建httpResponse对象 + CloseableHttpResponse httpResponse = null; + + try { + // 执行请求并获得响应结果 + return getHttpClientResult(httpResponse, httpClient, httpPost); + } finally { + // 释放资源 + release(httpResponse, httpClient); + } + } + + + public static String doPost(String url, String params){ + CloseableHttpClient httpclient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(2000).setConnectionRequestTimeout(1000) + .setSocketTimeout(2000).build(); + httpPost.setConfig(requestConfig); + httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); + String charSet = "UTF-8"; + StringEntity entity = new StringEntity(params, charSet); + httpPost.setEntity(entity); + CloseableHttpResponse response = null; + try { + response = httpclient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity responseEntity = response.getEntity(); + String jsonString = EntityUtils.toString(responseEntity); + return new String(jsonString.getBytes("ISO-8859-1"),"utf-8"); + }else{ + System.out.println("httpUtils doGet error ,code :" + statusCode); + } + }catch(Exception e){ + System.out.println("httpUtils doPost error"+e); + return null; + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + } + return null; + } + + /** + * 发送put请求;不带请求参数 + * + * @param url 请求地址 + * @return + * @throws Exception + */ + public static HttpClientResult doPut(String url) throws Exception { + return doPut(url); + } + + /** + * 发送put请求;带请求参数 + * + * @param url 请求地址 + * @param params 参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doPut(String url, Map params) throws Exception { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPut httpPut = new HttpPut(url); + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build(); + httpPut.setConfig(requestConfig); + + packageParam(params, httpPut); + + CloseableHttpResponse httpResponse = null; + + try { + return getHttpClientResult(httpResponse, httpClient, httpPut); + } finally { + release(httpResponse, httpClient); + } + } + + /** + * 发送delete请求;不带请求参数 + * + * @param url 请求地址 + * @return + * @throws Exception + */ + public static HttpClientResult doDelete(String url) throws Exception { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpDelete httpDelete = new HttpDelete(url); + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build(); + httpDelete.setConfig(requestConfig); + + CloseableHttpResponse httpResponse = null; + try { + return getHttpClientResult(httpResponse, httpClient, httpDelete); + } finally { + release(httpResponse, httpClient); + } + } + + /** + * 发送delete请求;带请求参数 + * + * @param url 请求地址 + * @param params 参数集合 + * @return + * @throws Exception + */ + public static HttpClientResult doDelete(String url, Map params) throws Exception { + if (params == null) { + params = new HashMap(); + } + + params.put("_method", "delete"); + return doPost(url, params, null); + } + + /** + * Description: 封装请求头 + * + * @param params + * @param httpMethod + */ + public static void packageHeader(Map params, HttpRequestBase httpMethod) { + // 封装请求头 + if (params != null) { + Set> entrySet = params.entrySet(); + for (Map.Entry entry : entrySet) { + // 设置到请求头到HttpRequestBase对象中 + httpMethod.setHeader(entry.getKey(), entry.getValue()); + } + } + } + + /** + * Description: 封装请求参数 + * + * @param params + * @param httpMethod + * @throws UnsupportedEncodingException + */ + public static void packageParam(Map params, HttpEntityEnclosingRequestBase httpMethod) + throws UnsupportedEncodingException { + // 封装请求参数 + if (params != null) { + List nvps = new ArrayList(); + Set> entrySet = params.entrySet(); + for (Map.Entry entry : entrySet) { + nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); + } + + // 设置到请求的http对象中 + httpMethod.setEntity(new UrlEncodedFormEntity(nvps, ENCODING)); + } + } + + + /** + * 封装json请求参数 + * @param params + * @param httpMethod + * @throws UnsupportedEncodingException + */ + public static void packageJsonParam(String params, HttpEntityEnclosingRequestBase httpMethod) + throws UnsupportedEncodingException { + // 封装请求参数 + if (params != null) { + + + // 设置到请求的http对象中 + + StringEntity entity = new StringEntity(params, "UTF-8"); + httpMethod.setEntity(entity); + //httpMethod.setEntity(params); + } + } + + /** + * Description: 获得响应结果 + * + * @param httpResponse + * @param httpClient + * @param httpMethod + * @return + * @throws Exception + */ + public static HttpClientResult getHttpClientResult(CloseableHttpResponse httpResponse, + CloseableHttpClient httpClient, HttpRequestBase httpMethod) throws Exception { + // 执行请求 + httpResponse = httpClient.execute(httpMethod); + + // 获取返回结果 + if (httpResponse != null && httpResponse.getStatusLine() != null) { + String content = ""; + if (httpResponse.getEntity() != null) { + content = EntityUtils.toString(httpResponse.getEntity(), ENCODING); + } + return new HttpClientResult(httpResponse.getStatusLine().getStatusCode(), content); + } + return new HttpClientResult(HttpStatus.SC_INTERNAL_SERVER_ERROR); + } + + /** + * Description: 释放资源 + * + * @param httpResponse + * @param httpClient + * @throws IOException + */ + public static void release(CloseableHttpResponse httpResponse, CloseableHttpClient httpClient) throws IOException { + // 释放资源 + if (httpResponse != null) { + httpResponse.close(); + } + if (httpClient != null) { + httpClient.close(); + } + } + + + /** + * Description: 封装请求参数 + * + * @param params + * @param httpMethod + * @throws UnsupportedEncodingException + */ +// public static void packageParam(Map params, HttpEntityEnclosingRequestBase httpMethod) +// throws UnsupportedEncodingException { +// // 封装请求参数 +// if (params != null) { +// List nvps = new ArrayList(); +// Set> entrySet = params.entrySet(); +// for (Map.Entry entry : entrySet) { +// nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); +// } +// +// +// +// // 设置到请求的http对象中 +// httpMethod.setEntity(new UrlEncodedFormEntity(nvps, ENCODING)); +// } +// } + +} diff --git a/src/main/java/com/bellmann/common/util/OrderUtils.java b/src/main/java/com/bellmann/common/util/OrderUtils.java new file mode 100644 index 0000000..114f19f --- /dev/null +++ b/src/main/java/com/bellmann/common/util/OrderUtils.java @@ -0,0 +1,111 @@ +package com.bellmann.common.util; + +import com.bellmann.model.bo.OrderTempBO; +import com.zznode.itms.idl.order.OrderInfoStruct; +import com.zznode.itms.idl.order.OrderServiceStruct; +import com.zznode.itms.idl.order.OrderType; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author + * + */ +public class OrderUtils { + + + static String orderFinishedPattern = "\r\n" + + "\r\n" + + " SG \r\n"+ + " %s \r\n" + + " %s \r\n" + + " %s \r\n " + + " \r\n" + + " 1 \r\n" + + " %s \r\n" + + " %s \r\n" + + " 1 \r\n" + + " %s \r\n" + + " \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " %s \r\n" + + " \r\n" + + " %s \r\n"+ + " \r\n" + + " \r\n" + + " \r\n" + + ""; + + public static String orderInfoStructToXml(OrderInfoStruct orderInfoStruct,String area) { + + String subArea = ""; + if(area.indexOf("_")>0) { + subArea = area.split("_")[1]; + area = area.substring(0, area.indexOf("_")); + } + + String xml = orderServiceStructToXml(orderInfoStruct.orderServiceList); + + return String.format(orderFinishedPattern, orderInfoStruct.remark3, orderInfoStruct.operRemark, + getOrderType(orderInfoStruct.orderServiceType.value()),orderInfoStruct.receiveOrderId, orderInfoStruct.orderTime, + orderInfoStruct.orderCustomerKind.value()==0 ? 1: 0, orderInfoStruct.pppoeAcount, orderInfoStruct.customerNameNew, + orderInfoStruct.customerAddrNew, orderInfoStruct.userSnNo, area ,subArea ,orderInfoStruct.contactPersonNew, + "/", xml); + } + public static String orderServiceStructToXml(OrderServiceStruct[] list) { + StringBuilder sb = new StringBuilder(); + for(OrderServiceStruct service: list) { + sb.append("^").append(service.argsName).append("=").append(service.argsValueNew); + } + System.out.println(sb.substring(1)); + return sb.substring(1); + } + private static String getOrderType(int orderType) { + //OrderType orderType = null; + String result = ""; + if (OrderType.ORDER_SERVICE_NEW.value() == orderType) { + result = "Z"; + } else if (OrderType.ORDER_SERVICE_DELETE.value() == orderType) { + result = "C"; + } else if (OrderType.ORDER_SERVICE_RESTORE.value() == orderType) { + result = "U"; + } else if (OrderType.ORDER_SERVICE_STOP.value() == orderType) { + result = "T"; + } else if (OrderType.ORDER_SERVICE_MODIFY.value() == orderType) { + result = "X"; + } + return result; + } + + public static String formatOrderXml(OrderTempBO order){ + Map areaMap = getArea(order.getDomainDesc()); + return String.format(orderFinishedPattern, order.getRemark3(), order.getOperateRemark(), + getOrderType(Integer.parseInt(order.getOrderServiceType())), order.getReceiveOrderId(), + new Date().getTime(), + order.getCustomerKind() == 0 ? 1 : 0, order.getPppoe(), + order.getCustomerNameNew(), order.getCustomerAddrNew(), + order.getUserSnNo(), areaMap.get("area"), areaMap.get("subArea"), + order.getContactPersonNew(), "0000", order.getOrderArrays()); + + } + private static Map getArea(String area) { + Map retMap = new HashMap(); + String subArea = ""; + if(area.indexOf("_")>0) { + subArea = area.split("_")[1]; + area = area.substring(0, area.indexOf("_")); + } + retMap.put("area", area); + retMap.put("subArea", subArea); + return retMap; + } +} diff --git a/src/main/java/com/bellmann/controller/BroadbandController.java b/src/main/java/com/bellmann/controller/BroadbandController.java new file mode 100644 index 0000000..de38d72 --- /dev/null +++ b/src/main/java/com/bellmann/controller/BroadbandController.java @@ -0,0 +1,49 @@ +package com.bellmann.controller; + +import cn.hutool.core.map.MapUtil; +import com.bellmann.common.result.Result; +import com.bellmann.model.form.AddBroadbandForm; +import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; +import com.bellmann.security.util.SecurityUtils; +import com.bellmann.service.BroadbandService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.Map; + +@Tag(name = "30.宽带上网业务") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/broadband/v1") +public class BroadbandController { + + private final BroadbandService broadbandService; + @GetMapping("/basic-info") + @Operation(summary = "开通宽带业务-基本数据") + public Result> basicInfo(){ + String receiveOrderId = "PXDD-"+ SecurityUtils.getUsername()+"-"+ System.currentTimeMillis(); + String receiveOrderLhs = "LHS" + System.currentTimeMillis(); + Map map = MapUtil + .builder(new HashMap()) + .put("receiveOrderId", receiveOrderId) + .put("receiveOrderLhs", receiveOrderLhs) + .put("systemDomain", SecurityUtils.getGroupId()) + .build(); + return Result.success(map); + } + @PostMapping("/add-broadband") + @Operation(summary = "开通宽带业务") + @PreventDuplicateSubmit + public Result addBroadband(@RequestBody AddBroadbandForm form){ + return broadbandService.addBroadband(form); + } + @PostMapping("/update-broadband-mode") + @Operation(summary = "修改上网模式") + @PreventDuplicateSubmit + public Result updateBroadbandMode(@RequestBody AddBroadbandForm form){ + return broadbandService.updateBroadbandMode(form); + } +} diff --git a/src/main/java/com/bellmann/controller/CustomTaskController.java b/src/main/java/com/bellmann/controller/CustomTaskController.java new file mode 100644 index 0000000..f032e5c --- /dev/null +++ b/src/main/java/com/bellmann/controller/CustomTaskController.java @@ -0,0 +1,48 @@ +package com.bellmann.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.result.PageResult; +import com.bellmann.common.result.Result; +import com.bellmann.model.query.SelectQuery; +import com.bellmann.model.vo.CustomTaskVO; +import com.bellmann.service.CustomTaskService; +import com.bellmann.service.DeviceStaticService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 自定义任务定制 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-19 + */ +@Tag(name = "29.自定义节点定制") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/custom-task/v1") +public class CustomTaskController { + + private final CustomTaskService customTaskService; + + private final DeviceStaticService deviceStaticService; + + @PostMapping("page") + @Operation(summary = "自定义节点定制-分页数据") + public PageResult resourcePage(@RequestBody SelectQuery query){ + Page page = customTaskService.tablePage(query); + return PageResult.success(page); + } + + @PostMapping("/exe/{devId}") + @Operation(summary = "自定义节点定制-分页数据") + public Result exeTaskByIds(@PathVariable Long devId,@RequestBody Integer[] ids){ + deviceStaticService.exeCustomTaskByIds(devId,ids); + return Result.success(); + } +} + diff --git a/src/main/java/com/bellmann/controller/ItmsOrderMergerController.java b/src/main/java/com/bellmann/controller/ItmsOrderMergerController.java new file mode 100644 index 0000000..3a002d3 --- /dev/null +++ b/src/main/java/com/bellmann/controller/ItmsOrderMergerController.java @@ -0,0 +1,21 @@ +package com.bellmann.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@RestController +@RequestMapping("/itmsOrderMerger") +public class ItmsOrderMergerController { + +} + diff --git a/src/main/java/com/bellmann/controller/OrderMergerServiceController.java b/src/main/java/com/bellmann/controller/OrderMergerServiceController.java new file mode 100644 index 0000000..c28c8a4 --- /dev/null +++ b/src/main/java/com/bellmann/controller/OrderMergerServiceController.java @@ -0,0 +1,21 @@ +package com.bellmann.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@RestController +@RequestMapping("/orderMergerService") +public class OrderMergerServiceController { + +} + diff --git a/src/main/java/com/bellmann/mapper/CustomTaskMapper.java b/src/main/java/com/bellmann/mapper/CustomTaskMapper.java new file mode 100644 index 0000000..1dcc37a --- /dev/null +++ b/src/main/java/com/bellmann/mapper/CustomTaskMapper.java @@ -0,0 +1,22 @@ +package com.bellmann.mapper; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.entity.CustomTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bellmann.model.vo.CustomTaskVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 自定义任务定制 Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-19 + */ +@Mapper +public interface CustomTaskMapper extends BaseMapper { + + Page tablePage(Page page, @Param("column") String column, @Param("value") Object value); +} diff --git a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java index faddfdb..6e55a3b 100644 --- a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java +++ b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java @@ -30,4 +30,6 @@ public interface OrderInfoMapper extends BaseMapper { String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo); List deviceOrderPage(Page page,@Param("devAdNo") String devAdNo,@Param("domain") Long domain); + + String getCustomerKindBySn(@Param("userSnNo") String userSnNo); } diff --git a/src/main/java/com/bellmann/mapper/OrderMergerMapper.java b/src/main/java/com/bellmann/mapper/OrderMergerMapper.java new file mode 100644 index 0000000..ac6648d --- /dev/null +++ b/src/main/java/com/bellmann/mapper/OrderMergerMapper.java @@ -0,0 +1,18 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.OrderMerger; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Mapper +public interface OrderMergerMapper extends BaseMapper { + +} diff --git a/src/main/java/com/bellmann/mapper/OrderMergerServiceMapper.java b/src/main/java/com/bellmann/mapper/OrderMergerServiceMapper.java new file mode 100644 index 0000000..30c986a --- /dev/null +++ b/src/main/java/com/bellmann/mapper/OrderMergerServiceMapper.java @@ -0,0 +1,22 @@ +package com.bellmann.mapper; + +import com.bellmann.model.entity.OrderMergerService; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Mapper +public interface OrderMergerServiceMapper extends BaseMapper { + + List getPppoePasswordByLogicId(@Param("userSnNo") String userSnNo, @Param("serviceName") String serviceName); +} diff --git a/src/main/java/com/bellmann/model/bo/OrderServiceArgsBO.java b/src/main/java/com/bellmann/model/bo/OrderServiceArgsBO.java new file mode 100644 index 0000000..5daaa3f --- /dev/null +++ b/src/main/java/com/bellmann/model/bo/OrderServiceArgsBO.java @@ -0,0 +1,11 @@ +package com.bellmann.model.bo; + +import lombok.Data; + +@Data +public class OrderServiceArgsBO { + + private String argsName; + + private String argsValue; +} diff --git a/src/main/java/com/bellmann/model/bo/OrderTempBO.java b/src/main/java/com/bellmann/model/bo/OrderTempBO.java new file mode 100644 index 0000000..002630b --- /dev/null +++ b/src/main/java/com/bellmann/model/bo/OrderTempBO.java @@ -0,0 +1,32 @@ +package com.bellmann.model.bo; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class OrderTempBO { + private String remark3; + + private String domainDesc; + + private String operateRemark; + + private String orderServiceType; + + private String receiveOrderId; + + private Integer customerKind; + + private String pppoe; + + private String customerNameNew; + + private String customerAddrNew; + + private String userSnNo; + + private String contactPersonNew; + + private String orderArrays; +} diff --git a/src/main/java/com/bellmann/model/entity/CustomTask.java b/src/main/java/com/bellmann/model/entity/CustomTask.java new file mode 100644 index 0000000..689485f --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/CustomTask.java @@ -0,0 +1,45 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 自定义任务定制 + *

+ * + * @author 李小林 + * @since 2024-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("custom_task") +public class CustomTask implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "task_id", type = IdType.AUTO) + private Integer taskId; + + /** + * 自定义任务名称 + */ + private String customTaskName; + + /** + * 操作组件名称 + */ + private String operationName; + + /** + * 参数,用逗号分隔 + */ + private String parameters; + + +} diff --git a/src/main/java/com/bellmann/model/entity/OrderMerger.java b/src/main/java/com/bellmann/model/entity/OrderMerger.java new file mode 100644 index 0000000..4f0ba67 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/OrderMerger.java @@ -0,0 +1,98 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("itms_order_merger") +public class OrderMerger implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long orderId; + + private String receivedOrderId; + + private String receivedOrderLhs; + + private Date orderDate; + + private String orderServiceType; + + private String orderRemark; + + private Date orderDeadline; + + private String customerNameNew; + + private String customerNameOld; + + private String orderCustomerKind; + + private Long systemDomain; + + private Long corporationDomain; + + private String adNo; + + private String pppoeAccount; + + private String contactPersonNew; + + private String contactPersonOld; + + private Date receivedDate; + + private String orderStatus; + + private Date orderDealDate; + + private String orderDoneFlag; + + private Date orderDoneDate; + + private String dummyFlag; + + private String remark; + + private String devSnoOui; + + private String pppoePassword; + + private String customerAddrNew; + + private String customerAddrOld; + + private String flowType; + + private String userSnNo; + + private String userSnKey; + + private String uniqueUserId; + + private String operRemark; + + private String remark1; + + private String remark2; + + private String remark3; + + private Long lifetime; + + +} diff --git a/src/main/java/com/bellmann/model/entity/OrderMergerService.java b/src/main/java/com/bellmann/model/entity/OrderMergerService.java new file mode 100644 index 0000000..e8acc78 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/OrderMergerService.java @@ -0,0 +1,39 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("itms_order_merger_service") +public class OrderMergerService implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long orderId; + + private String service; + + private Long serviceId; + + private String serviceFlag; + + private String argsName; + + private String argsValueNew; + + private String argsValueOld; + + +} diff --git a/src/main/java/com/bellmann/model/form/AddBroadbandForm.java b/src/main/java/com/bellmann/model/form/AddBroadbandForm.java new file mode 100644 index 0000000..53d1f96 --- /dev/null +++ b/src/main/java/com/bellmann/model/form/AddBroadbandForm.java @@ -0,0 +1,54 @@ +package com.bellmann.model.form; + +import com.bellmann.model.bo.OrderServiceArgsBO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "开通宽带上网表单") +public class AddBroadbandForm { + + private String receiveOrderId; + + private String receiveOrderLhs; + + private String operateRemark; + + private String orderServiceType; + + private String remark3; + + private Long systemDomain; + + private String adNo; + + private String devSnoOui; + + private String userSnNo; + + private String pppoeAccount; + + private String dummyFlag; + + private Long corporation; + + private String customerNameNew; + + private String customerAddrNew; + + private String contactPersonNew; + + private String phone; + + private String orderCustomerKind; + + private String remark; + + private String serviceName; + + private String serviceFlag; + + private List list; +} diff --git a/src/main/java/com/bellmann/model/vo/CustomTaskVO.java b/src/main/java/com/bellmann/model/vo/CustomTaskVO.java new file mode 100644 index 0000000..0eca63f --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/CustomTaskVO.java @@ -0,0 +1,21 @@ +package com.bellmann.model.vo; + +import lombok.Data; + + +@Data +public class CustomTaskVO { + + private Integer taskId; + + /** + * 自定义任务名称 + */ + private String customTaskName; + + /** + * 操作组件名称 + */ + private String operationName; + +} diff --git a/src/main/java/com/bellmann/runner/ServiceManagerRunner.java b/src/main/java/com/bellmann/runner/ServiceManagerRunner.java index 6ee6cbf..b84bbbc 100644 --- a/src/main/java/com/bellmann/runner/ServiceManagerRunner.java +++ b/src/main/java/com/bellmann/runner/ServiceManagerRunner.java @@ -9,8 +9,8 @@ import org.springframework.stereotype.Component; @Component @Order(value = 1) @Log4j2 -public class ServiceManagerRunner implements ApplicationRunner { +public class ServiceManagerRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) { new Thread("ServiceManager") { diff --git a/src/main/java/com/bellmann/runner/UIService.java b/src/main/java/com/bellmann/runner/UIService.java index 2639d84..72822b6 100644 --- a/src/main/java/com/bellmann/runner/UIService.java +++ b/src/main/java/com/bellmann/runner/UIService.java @@ -10,9 +10,11 @@ import com.zznode.itms.api.OAMManager; import lombok.Getter; + public class UIService extends ServiceManager { static UIService service = null; + private static String nbiOrderUrl; //任务超时的时间 @Getter private static String task_timeOut; @@ -33,6 +35,7 @@ public class UIService extends ServiceManager { NBIManager.init(getStringValueByName("Service.Name.NBI")); InventoryManager.init(getStringValueByName("Service.Name.Inventory")); OAMManager.init(getStringValueByName("Service.Name.OAM")); + nbiOrderUrl = getStringValueByName("nbiOrderUrl"); return true; } @@ -45,5 +48,7 @@ public class UIService extends ServiceManager { service = new UIService(arg); return service; } - + public static String getNbiOrderUrl() { + return nbiOrderUrl; + } } diff --git a/src/main/java/com/bellmann/service/BroadbandService.java b/src/main/java/com/bellmann/service/BroadbandService.java new file mode 100644 index 0000000..13cfad8 --- /dev/null +++ b/src/main/java/com/bellmann/service/BroadbandService.java @@ -0,0 +1,10 @@ +package com.bellmann.service; + +import com.bellmann.common.result.Result; +import com.bellmann.model.form.AddBroadbandForm; + +public interface BroadbandService { + Result addBroadband(AddBroadbandForm form); + + Result updateBroadbandMode(AddBroadbandForm form); +} diff --git a/src/main/java/com/bellmann/service/CustomTaskService.java b/src/main/java/com/bellmann/service/CustomTaskService.java new file mode 100644 index 0000000..6578cd8 --- /dev/null +++ b/src/main/java/com/bellmann/service/CustomTaskService.java @@ -0,0 +1,18 @@ +package com.bellmann.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.query.SelectQuery; +import com.bellmann.model.vo.CustomTaskVO; + +/** + *

+ * 自定义任务定制 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-19 + */ +public interface CustomTaskService { + + Page tablePage(SelectQuery query); +} diff --git a/src/main/java/com/bellmann/service/DeviceStaticService.java b/src/main/java/com/bellmann/service/DeviceStaticService.java index 2308533..ecdb83d 100644 --- a/src/main/java/com/bellmann/service/DeviceStaticService.java +++ b/src/main/java/com/bellmann/service/DeviceStaticService.java @@ -62,4 +62,5 @@ public interface DeviceStaticService { Long setAccountPassword(Long devId); + void exeCustomTaskByIds(Long devId, Integer[] ids); } diff --git a/src/main/java/com/bellmann/service/OrderMergerService.java b/src/main/java/com/bellmann/service/OrderMergerService.java new file mode 100644 index 0000000..f2ca2b3 --- /dev/null +++ b/src/main/java/com/bellmann/service/OrderMergerService.java @@ -0,0 +1,13 @@ +package com.bellmann.service; + +/** + *

+ * 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +public interface OrderMergerService{ + +} diff --git a/src/main/java/com/bellmann/service/OrderMergerServiceService.java b/src/main/java/com/bellmann/service/OrderMergerServiceService.java new file mode 100644 index 0000000..2a43bac --- /dev/null +++ b/src/main/java/com/bellmann/service/OrderMergerServiceService.java @@ -0,0 +1,13 @@ +package com.bellmann.service; + +/** + *

+ * 服务类 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +public interface OrderMergerServiceService { + +} diff --git a/src/main/java/com/bellmann/service/impl/BroadbandServiceImpl.java b/src/main/java/com/bellmann/service/impl/BroadbandServiceImpl.java new file mode 100644 index 0000000..f08fafe --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/BroadbandServiceImpl.java @@ -0,0 +1,225 @@ +package com.bellmann.service.impl; + +import cn.hutool.http.HttpStatus; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bellmann.common.constant.StringUtilsConstants; +import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.result.Result; +import com.bellmann.common.result.ResultCode; +import com.bellmann.common.util.CommonUtils; +import com.bellmann.common.util.HttpClientResult; +import com.bellmann.common.util.HttpClientUtil; +import com.bellmann.common.util.OrderUtils; +import com.bellmann.mapper.DomainMapper; +import com.bellmann.mapper.OrderInfoMapper; +import com.bellmann.mapper.OrderMergerMapper; +import com.bellmann.mapper.OrderMergerServiceMapper; +import com.bellmann.model.bo.OrderServiceArgsBO; +import com.bellmann.model.bo.OrderTempBO; +import com.bellmann.model.entity.Domain; +import com.bellmann.model.entity.OrderMerger; +import com.bellmann.model.entity.OrderMergerService; +import com.bellmann.model.form.AddBroadbandForm; +import com.bellmann.runner.UIService; +import com.bellmann.service.BroadbandService; +import com.zznode.itms.api.Utils; +import com.zznode.itms.idl.order.*; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +@RequiredArgsConstructor +public class BroadbandServiceImpl implements BroadbandService { + private final OrderInfoMapper orderInfoMapper; + + private final DomainMapper domainMapper; + + private final OrderMergerServiceMapper orderMergerServiceMapper; + + private final OrderMergerMapper orderMergerMapper; + + @Override + public Result addBroadband(AddBroadbandForm form) { + OrderInfoStruct orderInfoStruct = new OrderInfoStruct(); + orderInfoStruct.orderId = System.currentTimeMillis(); + orderInfoStruct.receiveOrderId = form.getReceiveOrderId(); //v + orderInfoStruct.receiveOrderLhs = form.getReceiveOrderLhs(); + orderInfoStruct.orderTime = (new Date()).getTime(); + orderInfoStruct.orderServiceType = OrderType.from_int(Integer.parseInt(form.getOrderServiceType())); + orderInfoStruct.order_Status = OrderStatus.from_int(0); + orderInfoStruct.order_Remark = OrderRemark.from_int(0); + orderInfoStruct.orderReceiveDate = (new Date()).getTime(); + String value = orderInfoMapper.getCustomerKindBySn(form.getUserSnNo()); + if (StringUtils.isNotBlank(form.getUserSnNo())) { + orderInfoStruct.orderCustomerKind = CustomerType.from_int(Integer.parseInt(form.getOrderCustomerKind())); + } else if (StringUtils.isNotBlank(value)) { + orderInfoStruct.orderCustomerKind = CustomerType.from_int(Integer.parseInt(value)); + } else { + throw new BusinessException(ResultCode.PLEASE_SELECT_A_CUSTOMER_TYPE); + } + orderInfoStruct.orderDone_Flag = OrderDoneFlag.from_int(1); + orderInfoStruct.dummy_Flag = DummyFlag.from_int(Integer.parseInt(form.getDummyFlag())); + orderInfoStruct.remark = CommonUtils.convertStringDefault(form.getRemark());//0 + orderInfoStruct.flowType = "1"; // + + orderInfoStruct.pppoePassword = ""; + orderInfoStruct.customerNameNew = CommonUtils.convertStringDefault(form.getCustomerNameNew()); + + orderInfoStruct.customerNameOld = ""; + + orderInfoStruct.systemDomain = form.getSystemDomain(); + if (form.getCorporation() == null) { + orderInfoStruct.corpoationDomain = 0; + } else { + orderInfoStruct.corpoationDomain = form.getCorporation(); + } + orderInfoStruct.contactPersonNew = CommonUtils.convertStringDefault(form.getContactPersonNew()); + + + orderInfoStruct.contactPersonOld = ""; + + orderInfoStruct.devOuiSno = Utils.convertStringNull(form.getDevSnoOui()); + orderInfoStruct.customerAddrNew = CommonUtils.convertStringDefault(form.getCustomerAddrNew()); + + orderInfoStruct.customerAddrOld = ""; + orderInfoStruct.uniqueUserId = form.getUserSnNo() + "^1600000000000"; + orderInfoStruct.userSnNo = form.getUserSnNo(); + + orderInfoStruct.adNo = form.getUserSnNo(); + orderInfoStruct.pppoeAcount = Utils.convertStringNull(form.getPppoeAccount()); + orderInfoStruct.userSnKey = ""; + orderInfoStruct.lifeTime = -999; + orderInfoStruct.operRemark = form.getOperateRemark(); + + orderInfoStruct.remark1 = ""; + orderInfoStruct.remark2 = ""; + orderInfoStruct.remark3 = Utils.convertStringNull(form.getRemark3()); + + orderInfoStruct.orderServiceList = tranceOrderInfo(form.getList(), form.getUserSnNo(), form.getServiceName(), form.getServiceFlag()); + + HttpClientResult result = sendHttpOrder(orderInfoStruct); + if (result.getCode()== HttpStatus.HTTP_OK){ + return Result.success(); + } + return Result.failed(result.getContent()); + } + + private HttpClientResult sendHttpOrder(OrderInfoStruct orderInfoStruct) { + Domain domain = domainMapper.selectOne(new LambdaQueryWrapper() + .eq(Domain::getGroupId, orderInfoStruct.systemDomain) + ); + String xml = OrderUtils.orderInfoStructToXml(orderInfoStruct, domain.getDescription()); + System.out.println(xml); + String orderUrl = UIService.getNbiOrderUrl(); + Map header = new HashMap(); + header.put("content-type", "application/json"); + try { + return HttpClientUtil.doPost(orderUrl, header, xml, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + private OrderServiceStruct[] tranceOrderInfo(List argList, String userSnNo, String servName, String servFlag) { + List list = new ArrayList<>(); + for (OrderServiceArgsBO args : argList) { + OrderServiceStruct order = new OrderServiceStruct(); + order.orderServiceId = StringUtilsConstants.LONG_NULL; + order.orderId = StringUtilsConstants.LONG_NULL; + order.servName = Utils.convertStringNull(servName); + order.servFlag = Utils.convertStringNull(servFlag); + order.argsName = Utils.convertStringNull(args.getArgsName()); + order.argsValueNew = Utils.convertStringNull(args.getArgsValue()); + order.argsValueOld = ""; + list.add(order); + } + OrderServiceStruct[] orderServices = new OrderServiceStruct[list.size()]; + for (int i = 0; i < list.size(); i++) { + orderServices[i] = list.get(i); + } + return orderServices; + } + + @Override + public Result updateBroadbandMode(AddBroadbandForm form) { + List list = orderMergerServiceMapper.getPppoePasswordByLogicId(form.getUserSnNo(),form.getServiceName()); + if (list.isEmpty()){ + throw new BusinessException(ResultCode.DATA_NOT_FOUND); + } + String mode = ""; + for (OrderServiceArgsBO args: form.getList()){ + if ("rg_mode".equalsIgnoreCase(args.getArgsName())){ + mode = args.getArgsValue(); + break; + } + } + String adAccount = ""; + String adPassword = ""; + String passRemark = ""; + for (OrderMergerService mergerService: list){ + if (mergerService.getArgsName().equalsIgnoreCase("ad_password")){ + adPassword = mergerService.getArgsValueNew(); + }else if (mergerService.getArgsName().equalsIgnoreCase("pass_remark")){ + passRemark = mergerService.getArgsValueNew(); + }else if (mergerService.getArgsName().equalsIgnoreCase("ad_account")){ + adAccount = mergerService.getArgsValueNew(); + } + } + String serviceArgs = "rg_mode=" + mode + + "^ad_account=" + adAccount + + "^ad_password=" + adPassword + + "^pass_remark=" + passRemark;; + + Domain domain = domainMapper.selectOne(new LambdaQueryWrapper() + .eq(Domain::getGroupId, form.getSystemDomain()) + ); + OrderTempBO build = OrderTempBO + .builder() + .orderArrays(serviceArgs) + .pppoe(adAccount) + .contactPersonNew(form.getContactPersonNew()) + .domainDesc(domain.getDescription()) + .customerNameNew(form.getCustomerNameNew()) + .operateRemark(form.getOperateRemark()) + .orderServiceType(form.getOrderServiceType()) + .receiveOrderId(form.getReceiveOrderId()) + .remark3(form.getRemark3()) + .userSnNo(form.getUserSnNo()) + .customerAddrNew(form.getCustomerAddrNew()).build(); + + OrderMerger orderMerger = orderMergerMapper.selectOne(new QueryWrapper() + .eq("user_sn_no", form.getUserSnNo()) + .select("order_customer_kind") + ); + String orderCustomerKind = orderMerger.getOrderCustomerKind(); + if (orderCustomerKind!=null){ + build.setCustomerKind(Integer.valueOf(orderCustomerKind)); + } + String xml = OrderUtils.formatOrderXml(build); + HttpClientResult result = sendOrderToStartNBI(xml); + if (result.getCode()== HttpStatus.HTTP_OK){ + return Result.success(); + } + return Result.failed(result.getContent()); + } + + private HttpClientResult sendOrderToStartNBI(String orderXml) { + + + + String orderUrl = UIService.getNbiOrderUrl(); + + Map header = new HashMap(); + header.put("content-type", "application/json"); + try { + return HttpClientUtil.doPost(orderUrl, header,orderXml, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } +} diff --git a/src/main/java/com/bellmann/service/impl/CustomTaskServiceImpl.java b/src/main/java/com/bellmann/service/impl/CustomTaskServiceImpl.java new file mode 100644 index 0000000..22f7611 --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/CustomTaskServiceImpl.java @@ -0,0 +1,32 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.mapper.CustomTaskMapper; +import com.bellmann.model.query.SelectQuery; +import com.bellmann.model.vo.CustomTaskVO; +import com.bellmann.service.CustomTaskService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

+ * 自定义任务定制 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-19 + */ +@RequiredArgsConstructor +@Service +public class CustomTaskServiceImpl implements CustomTaskService { + + private final CustomTaskMapper customTaskMapper; + @Override + public Page tablePage(SelectQuery query) { + int pageNum = query.getPageNum(); + int pageSize = query.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + + return customTaskMapper.tablePage(page,query.getSelectName(),query.getSelectValue()); + } +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java index d637511..e4edc06 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java @@ -41,6 +41,7 @@ import com.zznode.itms.idl.resourcedefinition.RDeviceDetailListHolder; import com.zznode.itms.idl.resourcedefinition.RDeviceStaticStruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -97,6 +98,8 @@ public class DeviceStaticServiceImpl implements DeviceStaticService { private final DeviceLogMapper deviceLogMapper; + private final CustomTaskMapper customTaskMapper; + @Override public Page resourcePage(SelectQuery query) { @@ -928,4 +931,60 @@ public class DeviceStaticServiceImpl implements DeviceStaticService { return detailStructHolder; } + @Override + public void exeCustomTaskByIds(Long devId, Integer[] ids) { + if (ids.length==0){ + throw new BusinessException(ResultCode.IDS_IS_NULL); + } + for(Integer id: ids){ + CustomTask customTask = customTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(CustomTask::getTaskId, id) + ); + if (customTask!=null){ + modifyCustomNode(customTask,devId); + } + } + } + public void modifyCustomNode(CustomTask customTaskInfo, long devId) { + DOperTask2DetailStruct detailStruct = new DOperTask2DetailStruct(); + DOperTask2Struct operTaskStruct = new DOperTask2Struct(); + operTaskStruct.devId = devId; + operTaskStruct.operName = customTaskInfo.getOperationName(); + operTaskStruct.operTaskCreateTime = (new Date()).getTime(); + operTaskStruct.operTaskDesc = IBaseEnum.getLabelByValue(customTaskInfo.getOperationName(),RemoteOperateMsgEnum.class); + operTaskStruct.operTaskId = Utils.LONG_NULL; + operTaskStruct.userName = SecurityUtils.getUsername(); + detailStruct.operTask = operTaskStruct; + + DOperTaskArgsStruct[] argsStructs; + if (StringUtils.isNotEmpty(customTaskInfo.getParameters())) { + String[] parameters = customTaskInfo.getParameters().split(","); + argsStructs = new DOperTaskArgsStruct[parameters.length]; + if (!parameters[0].equals("undefined")) { + String[] splitStr = new String[2]; + for (int i = 0; i < parameters.length; i++) { + splitStr = parameters[i].split("="); + argsStructs[i] = new DOperTaskArgsStruct(); + argsStructs[i].argsName = splitStr[0]; + argsStructs[i].argsValue = splitStr[1]; + argsStructs[i].operTaskId = Utils.LONG_NULL; + + } + } else { + argsStructs = new DOperTaskArgsStruct[0]; + } + } else { + argsStructs = new DOperTaskArgsStruct[0]; + } + + detailStruct.operTaskArgsList = argsStructs; + + DOperTask2DetailStructHolder detailStructHolder = new DOperTask2DetailStructHolder( + detailStruct); + int result = OAMManager.sendDeviceOper2Task(detailStructHolder); + if (result != 0) { + throw new BusinessException(ResultCode.OAM_INTERFACE_ERROR); + } + + } } diff --git a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java index 86ce8e1..3c1b15e 100644 --- a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java @@ -1,6 +1,7 @@ package com.bellmann.service.impl; import com.bellmann.common.base.IBaseEnum; +import com.bellmann.common.constant.SystemConstants; import com.bellmann.common.enums.FileUrlEnum; import com.bellmann.common.exception.BusinessException; import com.bellmann.common.result.ResultCode; @@ -28,6 +29,7 @@ public class FileOptionServiceImpl implements FileOptionService { private final FileRecordService fileRecordService; + @Override public String upload(MultipartFile file, HttpServletResponse response, String fileType) { //获取FTP用户名、密码、端口... @@ -66,7 +68,7 @@ public class FileOptionServiceImpl implements FileOptionService { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } String fileName = fileRecord.getFileName(); - String fullPath = fileServer.getFtpRootDir()+fileRecord.getFileUrl(); + String fullPath = SystemConstants.HOME+fileServer.getFtpUserName()+"/"+ fileServer.getFtpRootDir()+fileRecord.getFileUrl(); FTPUtils.download(fileServer,fileName,fullPath,response); } @@ -82,7 +84,7 @@ public class FileOptionServiceImpl implements FileOptionService { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } String fileName = fileRecord.getFileName(); - String fullPath = fileServer.getFtpRootDir()+fileRecord.getFileUrl(); + String fullPath = SystemConstants.HOME+fileServer.getFtpUserName()+"/"+fileServer.getFtpRootDir()+fileRecord.getFileUrl(); return FTPUtils.download(fileServer,fileName,fullPath); } @@ -103,7 +105,7 @@ public class FileOptionServiceImpl implements FileOptionService { if (fileServer == null) { throw new BusinessException(ResultCode.FILE_SERVER_IS_NULL); } - String fullPath = fileServer.getFtpRootDir()+fileUrl; + String fullPath = SystemConstants.HOME+fileServer.getFtpUserName()+"/"+fileServer.getFtpRootDir()+fileUrl; return FTPUtils.removeFile(fileServer,fullPath,fileName); } @@ -126,7 +128,7 @@ public class FileOptionServiceImpl implements FileOptionService { //文件存放地址 //文件在FTP服务器所在文件夹目录 String dirPath = String.format(IBaseEnum.getLabelByValue(fileType,FileUrlEnum.class),fileType)+System.currentTimeMillis()/1000; - String fullPath = fileServer.getFtpRootDir() +dirPath; + String fullPath = SystemConstants.HOME+fileServer.getFtpUserName()+"/"+fileServer.getFtpRootDir() +dirPath; log.info("dirPath:{}",dirPath); try(InputStream in = file.getInputStream()) { boolean upload = FTPUtils.upload(fileServer, newFileName, fullPath, in); diff --git a/src/main/java/com/bellmann/service/impl/OrderMergerServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderMergerServiceImpl.java new file mode 100644 index 0000000..713b59e --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/OrderMergerServiceImpl.java @@ -0,0 +1,17 @@ +package com.bellmann.service.impl; + +import com.bellmann.service.OrderMergerService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Service +public class OrderMergerServiceImpl implements OrderMergerService { + +} diff --git a/src/main/java/com/bellmann/service/impl/OrderMergerServiceServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderMergerServiceServiceImpl.java new file mode 100644 index 0000000..ecac4ec --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/OrderMergerServiceServiceImpl.java @@ -0,0 +1,17 @@ +package com.bellmann.service.impl; + +import com.bellmann.service.OrderMergerServiceService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-07-24 + */ +@Service +public class OrderMergerServiceServiceImpl implements OrderMergerServiceService { + +} diff --git a/src/main/resources/mapper/CustomTaskMapper.xml b/src/main/resources/mapper/CustomTaskMapper.xml new file mode 100644 index 0000000..1c8ea75 --- /dev/null +++ b/src/main/resources/mapper/CustomTaskMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + task_id, custom_task_name, operation_name, parameters + + + diff --git a/src/main/resources/mapper/OrderInfoMapper.xml b/src/main/resources/mapper/OrderInfoMapper.xml index 8592d69..1dfd4b8 100644 --- a/src/main/resources/mapper/OrderInfoMapper.xml +++ b/src/main/resources/mapper/OrderInfoMapper.xml @@ -165,4 +165,7 @@ and aa.ad_no = #{devAdNo} + diff --git a/src/main/resources/mapper/OrderMergerMapper.xml b/src/main/resources/mapper/OrderMergerMapper.xml new file mode 100644 index 0000000..566c792 --- /dev/null +++ b/src/main/resources/mapper/OrderMergerMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + order_id, received_order_id, received_order_lhs, order_date, order_service_type, order_remark, order_deadline, customer_name_new, customer_name_old, order_customer_kind, system_domain, corporation_domain, ad_no, pppoe_account, contact_person_new, contact_person_old, received_date, order_status, order_deal_date, order_done_flag, order_done_date, dummy_flag, remark, dev_sno_oui, pppoe_password, customer_addr_new, customer_addr_old, flow_type, user_sn_no, user_sn_key, unique_user_id, oper_remark, remark1, remark2, remark3, lifetime + + + diff --git a/src/main/resources/mapper/OrderMergerServiceMapper.xml b/src/main/resources/mapper/OrderMergerServiceMapper.xml new file mode 100644 index 0000000..fa0f554 --- /dev/null +++ b/src/main/resources/mapper/OrderMergerServiceMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + order_id, service, service_id, service_flag, args_name, args_value_new, args_value_old + + + +