feat: 宽带上网业务

master
李小林 7 months ago
parent f0ea222f9b
commit d6c10e03be
  1. 5
      pom.xml
  2. 1
      src/main/java/com/bellmann/common/constant/SystemConstants.java
  3. 8
      src/main/java/com/bellmann/common/enums/RemoteOperateMsgEnum.java
  4. 3
      src/main/java/com/bellmann/common/result/ResultCode.java
  5. 9
      src/main/java/com/bellmann/common/util/CommonUtils.java
  6. 53
      src/main/java/com/bellmann/common/util/HttpClientResult.java
  7. 508
      src/main/java/com/bellmann/common/util/HttpClientUtil.java
  8. 111
      src/main/java/com/bellmann/common/util/OrderUtils.java
  9. 49
      src/main/java/com/bellmann/controller/BroadbandController.java
  10. 48
      src/main/java/com/bellmann/controller/CustomTaskController.java
  11. 21
      src/main/java/com/bellmann/controller/ItmsOrderMergerController.java
  12. 21
      src/main/java/com/bellmann/controller/OrderMergerServiceController.java
  13. 22
      src/main/java/com/bellmann/mapper/CustomTaskMapper.java
  14. 2
      src/main/java/com/bellmann/mapper/OrderInfoMapper.java
  15. 18
      src/main/java/com/bellmann/mapper/OrderMergerMapper.java
  16. 22
      src/main/java/com/bellmann/mapper/OrderMergerServiceMapper.java
  17. 11
      src/main/java/com/bellmann/model/bo/OrderServiceArgsBO.java
  18. 32
      src/main/java/com/bellmann/model/bo/OrderTempBO.java
  19. 45
      src/main/java/com/bellmann/model/entity/CustomTask.java
  20. 98
      src/main/java/com/bellmann/model/entity/OrderMerger.java
  21. 39
      src/main/java/com/bellmann/model/entity/OrderMergerService.java
  22. 54
      src/main/java/com/bellmann/model/form/AddBroadbandForm.java
  23. 21
      src/main/java/com/bellmann/model/vo/CustomTaskVO.java
  24. 2
      src/main/java/com/bellmann/runner/ServiceManagerRunner.java
  25. 7
      src/main/java/com/bellmann/runner/UIService.java
  26. 10
      src/main/java/com/bellmann/service/BroadbandService.java
  27. 18
      src/main/java/com/bellmann/service/CustomTaskService.java
  28. 1
      src/main/java/com/bellmann/service/DeviceStaticService.java
  29. 13
      src/main/java/com/bellmann/service/OrderMergerService.java
  30. 13
      src/main/java/com/bellmann/service/OrderMergerServiceService.java
  31. 225
      src/main/java/com/bellmann/service/impl/BroadbandServiceImpl.java
  32. 32
      src/main/java/com/bellmann/service/impl/CustomTaskServiceImpl.java
  33. 59
      src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java
  34. 10
      src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java
  35. 17
      src/main/java/com/bellmann/service/impl/OrderMergerServiceImpl.java
  36. 17
      src/main/java/com/bellmann/service/impl/OrderMergerServiceServiceImpl.java
  37. 34
      src/main/resources/mapper/CustomTaskMapper.xml
  38. 3
      src/main/resources/mapper/OrderInfoMapper.xml
  39. 50
      src/main/resources/mapper/OrderMergerMapper.xml
  40. 31
      src/main/resources/mapper/OrderMergerServiceMapper.xml

@ -183,6 +183,11 @@
<artifactId>velocity-engine-core</artifactId> <artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version> <version>${velocity.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency> <dependency>
<groupId>com.zznode.cap</groupId> <groupId>com.zznode.cap</groupId>
<artifactId>capapi</artifactId> <artifactId>capapi</artifactId>

@ -44,4 +44,5 @@ public interface SystemConstants {
public static final String CONN_TYPE_REGEX = "connectionType = (\\w+)"; public static final String CONN_TYPE_REGEX = "connectionType = (\\w+)";
public static final String DOWNLOAD_INFO_REGEX = "DownloadInfo = (.*)"; public static final String DOWNLOAD_INFO_REGEX = "DownloadInfo = (.*)";
public static final String SPEED_FAIL = "测速失败,请查看操作日志"; public static final String SPEED_FAIL = "测速失败,请查看操作日志";
public static final String HOME = "/home/";
} }

@ -40,7 +40,13 @@ public enum RemoteOperateMsgEnum implements IBaseEnum<String> {
X_REGISTER("x_Register","开启终端注册页面"), 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 @Getter
private String value; private String value;

@ -123,7 +123,8 @@ public enum ResultCode implements IResultCode, Serializable {
LOGIC_IS_NULL("F0032","逻辑ID为空"), LOGIC_IS_NULL("F0032","逻辑ID为空"),
TASK_NOT_FOUND("F0033","任务不存在"), TASK_NOT_FOUND("F0033","任务不存在"),
TASK_NOT_EXE("F0034", "任务未执行"), TASK_NOT_EXE("F0034", "任务未执行"),
UPDATE_ACCOUNT_PWD_ERROR("F0035","更新设备维护密码失败"); UPDATE_ACCOUNT_PWD_ERROR("F0035","更新设备维护密码失败"),
PLEASE_SELECT_A_CUSTOMER_TYPE("F0036","请选择客户类型!");
@Override @Override
public String getCode() { public String getCode() {

@ -16,6 +16,7 @@ import java.util.regex.Pattern;
public class CommonUtils { public class CommonUtils {
private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>"; private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
private static final String customerName = "122212121";
public static String getRandomString(int length) { //length表示生成字符串的长度 public static String getRandomString(int length) { //length表示生成字符串的长度
String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random(); Random random = new Random();
@ -73,4 +74,12 @@ public class CommonUtils {
} }
return list; return list;
} }
public static String convertStringDefault(String str) {
if (null == str || str.length()<1) {
str = customerName;
}
return str;
}
} }

@ -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 + '\'' +
'}';
}
}

@ -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<String, String> 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<String, String> headers, Map<String, String> params) throws Exception {
// 创建httpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建访问的地址
URIBuilder uriBuilder = new URIBuilder(url);
if (params != null) {
Set<Map.Entry<String, String>> entrySet = params.entrySet();
for (Map.Entry<String, String> 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<String, String> 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<String, String> headers, Map<String, 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);
// 封装请求参数
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<String, String> 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<String, String> 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<String, String> params) throws Exception {
if (params == null) {
params = new HashMap<String, String>();
}
params.put("_method", "delete");
return doPost(url, params, null);
}
/**
* Description: 封装请求头
*
* @param params
* @param httpMethod
*/
public static void packageHeader(Map<String, String> params, HttpRequestBase httpMethod) {
// 封装请求头
if (params != null) {
Set<Map.Entry<String, String>> entrySet = params.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
// 设置到请求头到HttpRequestBase对象中
httpMethod.setHeader(entry.getKey(), entry.getValue());
}
}
}
/**
* Description: 封装请求参数
*
* @param params
* @param httpMethod
* @throws UnsupportedEncodingException
*/
public static void packageParam(Map<String, String> params, HttpEntityEnclosingRequestBase httpMethod)
throws UnsupportedEncodingException {
// 封装请求参数
if (params != null) {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
Set<Map.Entry<String, String>> entrySet = params.entrySet();
for (Map.Entry<String, String> 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<String, Object> params, HttpEntityEnclosingRequestBase httpMethod)
// throws UnsupportedEncodingException {
// // 封装请求参数
// if (params != null) {
// List<NameValuePair> nvps = new ArrayList<NameValuePair>();
// Set<Map.Entry<String, Object>> entrySet = params.entrySet();
// for (Map.Entry<String, Object> entry : entrySet) {
// nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
// }
//
//
//
// // 设置到请求的http对象中
// httpMethod.setEntity(new UrlEncodedFormEntity(nvps, ENCODING));
// }
// }
}

@ -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 = "<?xml version=\"1.0\" encoding=\"GBK\"?>\r\n" +
"<itms_97_interface>\r\n" +
" <Order_Remark>SG</Order_Remark> \r\n"+
" <Device_WAN>%s</Device_WAN> \r\n" +
" <Service_code>%s</Service_code> \r\n" +
" <Order_Type>%s</Order_Type> \r\n " +
" <itms_97_info> \r\n" +
" <Order_No>1</Order_No> \r\n" +
" <Order_LSH>%s</Order_LSH> \r\n" +
" <Order_Time>%s</Order_Time> \r\n" +
" <Order_Self>1</Order_Self> \r\n" +
" <User_Type>%s</User_Type> \r\n" +
" <Device_ID /> \r\n" +
" <Ad_account>%s</Ad_account> \r\n" +
" <User_name>%s</User_name> \r\n" +
" <User_address>%s</User_address> \r\n" +
" <User_id>%s</User_id> \r\n" +
" <Area_code>%s</Area_code> \r\n" +
" <SubArea_code>%s</SubArea_code> \r\n" +
" <Contact_person>%s</Contact_person> \r\n" +
" <Phonenumber>%s</Phonenumber> \r\n" +
" <Vector_argues> \r\n" +
" %s</Vector_argues> \r\n"+
" <keep_user_info></keep_user_info> \r\n" +
" </itms_97_info> \r\n" +
"</itms_97_interface> \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<String, String> 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<String, String> getArea(String area) {
Map<String,String> retMap = new HashMap<String, String>();
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;
}
}

@ -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<Map<String, Object>> basicInfo(){
String receiveOrderId = "PXDD-"+ SecurityUtils.getUsername()+"-"+ System.currentTimeMillis();
String receiveOrderLhs = "LHS" + System.currentTimeMillis();
Map<String, Object> map = MapUtil
.builder(new HashMap<String, Object>())
.put("receiveOrderId", receiveOrderId)
.put("receiveOrderLhs", receiveOrderLhs)
.put("systemDomain", SecurityUtils.getGroupId())
.build();
return Result.success(map);
}
@PostMapping("/add-broadband")
@Operation(summary = "开通宽带业务")
@PreventDuplicateSubmit
public Result<String> addBroadband(@RequestBody AddBroadbandForm form){
return broadbandService.addBroadband(form);
}
@PostMapping("/update-broadband-mode")
@Operation(summary = "修改上网模式")
@PreventDuplicateSubmit
public Result<String> updateBroadbandMode(@RequestBody AddBroadbandForm form){
return broadbandService.updateBroadbandMode(form);
}
}

@ -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.*;
/**
* <p>
* 自定义任务定制 前端控制器
* </p>
*
* @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<CustomTaskVO> resourcePage(@RequestBody SelectQuery query){
Page<CustomTaskVO> page = customTaskService.tablePage(query);
return PageResult.success(page);
}
@PostMapping("/exe/{devId}")
@Operation(summary = "自定义节点定制-分页数据")
public Result<String> exeTaskByIds(@PathVariable Long devId,@RequestBody Integer[] ids){
deviceStaticService.exeCustomTaskByIds(devId,ids);
return Result.success();
}
}

@ -0,0 +1,21 @@
package com.bellmann.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@RestController
@RequestMapping("/itmsOrderMerger")
public class ItmsOrderMergerController {
}

@ -0,0 +1,21 @@
package com.bellmann.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@RestController
@RequestMapping("/orderMergerService")
public class OrderMergerServiceController {
}

@ -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;
/**
* <p>
* 自定义任务定制 Mapper 接口
* </p>
*
* @author 李小林
* @since 2024-07-19
*/
@Mapper
public interface CustomTaskMapper extends BaseMapper<CustomTask> {
Page<CustomTaskVO> tablePage(Page<CustomTaskVO> page, @Param("column") String column, @Param("value") Object value);
}

@ -30,4 +30,6 @@ public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo); String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo);
List<OrderInfoTableVO> deviceOrderPage(Page<OrderInfoTableVO> page,@Param("devAdNo") String devAdNo,@Param("domain") Long domain); List<OrderInfoTableVO> deviceOrderPage(Page<OrderInfoTableVO> page,@Param("devAdNo") String devAdNo,@Param("domain") Long domain);
String getCustomerKindBySn(@Param("userSnNo") String userSnNo);
} }

@ -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;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@Mapper
public interface OrderMergerMapper extends BaseMapper<OrderMerger> {
}

@ -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;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@Mapper
public interface OrderMergerServiceMapper extends BaseMapper<OrderMergerService> {
List<OrderMergerService> getPppoePasswordByLogicId(@Param("userSnNo") String userSnNo, @Param("serviceName") String serviceName);
}

@ -0,0 +1,11 @@
package com.bellmann.model.bo;
import lombok.Data;
@Data
public class OrderServiceArgsBO {
private String argsName;
private String argsValue;
}

@ -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;
}

@ -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;
/**
* <p>
* 自定义任务定制
* </p>
*
* @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;
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -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<OrderServiceArgsBO> list;
}

@ -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;
}

@ -9,8 +9,8 @@ import org.springframework.stereotype.Component;
@Component @Component
@Order(value = 1) @Order(value = 1)
@Log4j2 @Log4j2
public class ServiceManagerRunner implements ApplicationRunner {
public class ServiceManagerRunner implements ApplicationRunner {
@Override @Override
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
new Thread("ServiceManager") { new Thread("ServiceManager") {

@ -10,9 +10,11 @@ import com.zznode.itms.api.OAMManager;
import lombok.Getter; import lombok.Getter;
public class UIService extends ServiceManager { public class UIService extends ServiceManager {
static UIService service = null; static UIService service = null;
private static String nbiOrderUrl;
//任务超时的时间 //任务超时的时间
@Getter @Getter
private static String task_timeOut; private static String task_timeOut;
@ -33,6 +35,7 @@ public class UIService extends ServiceManager {
NBIManager.init(getStringValueByName("Service.Name.NBI")); NBIManager.init(getStringValueByName("Service.Name.NBI"));
InventoryManager.init(getStringValueByName("Service.Name.Inventory")); InventoryManager.init(getStringValueByName("Service.Name.Inventory"));
OAMManager.init(getStringValueByName("Service.Name.OAM")); OAMManager.init(getStringValueByName("Service.Name.OAM"));
nbiOrderUrl = getStringValueByName("nbiOrderUrl");
return true; return true;
} }
@ -45,5 +48,7 @@ public class UIService extends ServiceManager {
service = new UIService(arg); service = new UIService(arg);
return service; return service;
} }
public static String getNbiOrderUrl() {
return nbiOrderUrl;
}
} }

@ -0,0 +1,10 @@
package com.bellmann.service;
import com.bellmann.common.result.Result;
import com.bellmann.model.form.AddBroadbandForm;
public interface BroadbandService {
Result<String> addBroadband(AddBroadbandForm form);
Result<String> updateBroadbandMode(AddBroadbandForm form);
}

@ -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;
/**
* <p>
* 自定义任务定制 服务类
* </p>
*
* @author 李小林
* @since 2024-07-19
*/
public interface CustomTaskService {
Page<CustomTaskVO> tablePage(SelectQuery query);
}

@ -62,4 +62,5 @@ public interface DeviceStaticService {
Long setAccountPassword(Long devId); Long setAccountPassword(Long devId);
void exeCustomTaskByIds(Long devId, Integer[] ids);
} }

@ -0,0 +1,13 @@
package com.bellmann.service;
/**
* <p>
* 服务类
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
public interface OrderMergerService{
}

@ -0,0 +1,13 @@
package com.bellmann.service;
/**
* <p>
* 服务类
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
public interface OrderMergerServiceService {
}

@ -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<String> 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<Domain>()
.eq(Domain::getGroupId, orderInfoStruct.systemDomain)
);
String xml = OrderUtils.orderInfoStructToXml(orderInfoStruct, domain.getDescription());
System.out.println(xml);
String orderUrl = UIService.getNbiOrderUrl();
Map<String, String> header = new HashMap<String, String>();
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<OrderServiceArgsBO> argList, String userSnNo, String servName, String servFlag) {
List<OrderServiceStruct> 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<String> updateBroadbandMode(AddBroadbandForm form) {
List<OrderMergerService> 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<Domain>()
.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<OrderMerger>()
.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<String,String> header = new HashMap<String,String>();
header.put("content-type", "application/json");
try {
return HttpClientUtil.doPost(orderUrl, header,orderXml, null);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

@ -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;
/**
* <p>
* 自定义任务定制 服务实现类
* </p>
*
* @author 李小林
* @since 2024-07-19
*/
@RequiredArgsConstructor
@Service
public class CustomTaskServiceImpl implements CustomTaskService {
private final CustomTaskMapper customTaskMapper;
@Override
public Page<CustomTaskVO> tablePage(SelectQuery query) {
int pageNum = query.getPageNum();
int pageSize = query.getPageSize();
Page<CustomTaskVO> page = new Page<>(pageNum,pageSize);
return customTaskMapper.tablePage(page,query.getSelectName(),query.getSelectValue());
}
}

@ -41,6 +41,7 @@ import com.zznode.itms.idl.resourcedefinition.RDeviceDetailListHolder;
import com.zznode.itms.idl.resourcedefinition.RDeviceStaticStruct; import com.zznode.itms.idl.resourcedefinition.RDeviceStaticStruct;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -97,6 +98,8 @@ public class DeviceStaticServiceImpl implements DeviceStaticService {
private final DeviceLogMapper deviceLogMapper; private final DeviceLogMapper deviceLogMapper;
private final CustomTaskMapper customTaskMapper;
@Override @Override
public Page<EquipmentVO> resourcePage(SelectQuery query) { public Page<EquipmentVO> resourcePage(SelectQuery query) {
@ -928,4 +931,60 @@ public class DeviceStaticServiceImpl implements DeviceStaticService {
return detailStructHolder; 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<CustomTask>()
.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);
}
}
} }

@ -1,6 +1,7 @@
package com.bellmann.service.impl; package com.bellmann.service.impl;
import com.bellmann.common.base.IBaseEnum; import com.bellmann.common.base.IBaseEnum;
import com.bellmann.common.constant.SystemConstants;
import com.bellmann.common.enums.FileUrlEnum; import com.bellmann.common.enums.FileUrlEnum;
import com.bellmann.common.exception.BusinessException; import com.bellmann.common.exception.BusinessException;
import com.bellmann.common.result.ResultCode; import com.bellmann.common.result.ResultCode;
@ -28,6 +29,7 @@ public class FileOptionServiceImpl implements FileOptionService {
private final FileRecordService fileRecordService; private final FileRecordService fileRecordService;
@Override @Override
public String upload(MultipartFile file, HttpServletResponse response, String fileType) { public String upload(MultipartFile file, HttpServletResponse response, String fileType) {
//获取FTP用户名、密码、端口... //获取FTP用户名、密码、端口...
@ -66,7 +68,7 @@ public class FileOptionServiceImpl implements FileOptionService {
throw new BusinessException(ResultCode.FILE_NOT_EXIST); throw new BusinessException(ResultCode.FILE_NOT_EXIST);
} }
String fileName = fileRecord.getFileName(); 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); FTPUtils.download(fileServer,fileName,fullPath,response);
} }
@ -82,7 +84,7 @@ public class FileOptionServiceImpl implements FileOptionService {
throw new BusinessException(ResultCode.FILE_NOT_EXIST); throw new BusinessException(ResultCode.FILE_NOT_EXIST);
} }
String fileName = fileRecord.getFileName(); 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); return FTPUtils.download(fileServer,fileName,fullPath);
} }
@ -103,7 +105,7 @@ public class FileOptionServiceImpl implements FileOptionService {
if (fileServer == null) { if (fileServer == null) {
throw new BusinessException(ResultCode.FILE_SERVER_IS_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); return FTPUtils.removeFile(fileServer,fullPath,fileName);
} }
@ -126,7 +128,7 @@ public class FileOptionServiceImpl implements FileOptionService {
//文件存放地址 //文件存放地址
//文件在FTP服务器所在文件夹目录 //文件在FTP服务器所在文件夹目录
String dirPath = String.format(IBaseEnum.getLabelByValue(fileType,FileUrlEnum.class),fileType)+System.currentTimeMillis()/1000; 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); log.info("dirPath:{}",dirPath);
try(InputStream in = file.getInputStream()) { try(InputStream in = file.getInputStream()) {
boolean upload = FTPUtils.upload(fileServer, newFileName, fullPath, in); boolean upload = FTPUtils.upload(fileServer, newFileName, fullPath, in);

@ -0,0 +1,17 @@
package com.bellmann.service.impl;
import com.bellmann.service.OrderMergerService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@Service
public class OrderMergerServiceImpl implements OrderMergerService {
}

@ -0,0 +1,17 @@
package com.bellmann.service.impl;
import com.bellmann.service.OrderMergerServiceService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 李小林
* @since 2024-07-24
*/
@Service
public class OrderMergerServiceServiceImpl implements OrderMergerServiceService {
}

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bellmann.mapper.CustomTaskMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.bellmann.model.entity.CustomTask">
<id column="task_id" property="taskId" />
<result column="custom_task_name" property="customTaskName" />
<result column="operation_name" property="operationName" />
<result column="parameters" property="parameters" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
task_id, custom_task_name, operation_name, parameters
</sql>
<select id="tablePage" resultType="com.bellmann.model.vo.CustomTaskVO">
SELECT
TASK_ID,
CUSTOM_TASK_NAME,
OPERATION_NAME,
PARAMETERS
FROM
CUSTOM_TASK
<where>
<if test="column=='customTaskName' and column!=null and column!=''">
and CUSTOM_TASK_NAME = #{value}
</if>
<if test="column=='operationName' and column!=null and column!=''">
and OPERATION_NAME = #{value}
</if>
</where>
</select>
</mapper>

@ -165,4 +165,7 @@
and aa.ad_no = #{devAdNo} and aa.ad_no = #{devAdNo}
</if> </if>
</select> </select>
<select id="getCustomerKindBySn" resultType="java.lang.String">
select order_customer_kind from itms_order_info t1 where t1.user_sn_no = #{userSnNo} order by ORDER_DATE desc limit 1
</select>
</mapper> </mapper>

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bellmann.mapper.OrderMergerMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.bellmann.model.entity.OrderMerger">
<id column="order_id" property="orderId" />
<result column="received_order_id" property="receivedOrderId" />
<result column="received_order_lhs" property="receivedOrderLhs" />
<result column="order_date" property="orderDate" />
<result column="order_service_type" property="orderServiceType" />
<result column="order_remark" property="orderRemark" />
<result column="order_deadline" property="orderDeadline" />
<result column="customer_name_new" property="customerNameNew" />
<result column="customer_name_old" property="customerNameOld" />
<result column="order_customer_kind" property="orderCustomerKind" />
<result column="system_domain" property="systemDomain" />
<result column="corporation_domain" property="corporationDomain" />
<result column="ad_no" property="adNo" />
<result column="pppoe_account" property="pppoeAccount" />
<result column="contact_person_new" property="contactPersonNew" />
<result column="contact_person_old" property="contactPersonOld" />
<result column="received_date" property="receivedDate" />
<result column="order_status" property="orderStatus" />
<result column="order_deal_date" property="orderDealDate" />
<result column="order_done_flag" property="orderDoneFlag" />
<result column="order_done_date" property="orderDoneDate" />
<result column="dummy_flag" property="dummyFlag" />
<result column="remark" property="remark" />
<result column="dev_sno_oui" property="devSnoOui" />
<result column="pppoe_password" property="pppoePassword" />
<result column="customer_addr_new" property="customerAddrNew" />
<result column="customer_addr_old" property="customerAddrOld" />
<result column="flow_type" property="flowType" />
<result column="user_sn_no" property="userSnNo" />
<result column="user_sn_key" property="userSnKey" />
<result column="unique_user_id" property="uniqueUserId" />
<result column="oper_remark" property="operRemark" />
<result column="remark1" property="remark1" />
<result column="remark2" property="remark2" />
<result column="remark3" property="remark3" />
<result column="lifetime" property="lifetime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
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
</sql>
</mapper>

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bellmann.mapper.OrderMergerServiceMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.bellmann.model.entity.OrderMergerService">
<id column="order_id" property="orderId" />
<result column="service" property="service" />
<result column="service_id" property="serviceId" />
<result column="service_flag" property="serviceFlag" />
<result column="args_name" property="argsName" />
<result column="args_value_new" property="argsValueNew" />
<result column="args_value_old" property="argsValueOld" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
order_id, service, service_id, service_flag, args_name, args_value_new, args_value_old
</sql>
<select id="getPppoePasswordByLogicId" resultType="com.bellmann.model.entity.OrderMergerService">
SELECT
bb.*
FROM
itms_order_merger aa
INNER JOIN itms_order_merger_service bb ON aa.order_id = bb.order_id
WHERE
aa.user_sn_no = #{userSnNo}
and bb.service = #{serviceName}
</select>
</mapper>
Loading…
Cancel
Save