Commit 6ecd08c8 by yangyang

重庆渝康码接口提交

parent ece48b7b
package com.founder.commonutils.util;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
......@@ -120,4 +121,40 @@ public class HttpClient {
}
return resultString;
}
public static JSONObject doPostJson(String url, String json) throws Exception {
// post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
HttpPost httpPost = new HttpPost(url);
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("appid", "A-500000000000-1440");
httpPost.setHeader("roleid", "5000001440");
try{
//设置参数解决中文乱码
if (null != json){
StringEntity entity = new StringEntity(json,"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
//发送请求
CloseableHttpResponse result = httpClient.execute(httpPost);
System.out.println("StatusCode===="+result.getStatusLine().getStatusCode());
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
// 读取服务器返回的json数据(然后解析)
jsonResult = JSONObject.parseObject(EntityUtils.toString(result.getEntity(), "utf-8"));
}else{
throw new Exception();
}
}catch (Exception e){
e.printStackTrace();
throw new Exception();
}finally{
httpPost.releaseConnection();
}
return jsonResult;
}
}
......@@ -103,11 +103,11 @@
<scope>system</scope>
<systemPath>${project.basedir}/libs/ojdbc-10.jar</systemPath>
</dependency>-->
<!-- <dependency>
<dependency>
<groupId>org.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10</version>
</dependency>-->
</dependency>
<!--swagger-->
<!-- <dependency>
......
......@@ -82,11 +82,11 @@
<scope>system</scope>
<systemPath>${project.basedir}/../lib/ojdbc6-10.jar</systemPath>
</dependency>-->
<!-- <dependency>
<dependency>
<groupId>org.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10</version>
</dependency>-->
</dependency>
<!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
<dependency>
<groupId>org.apache.velocity</groupId>
......
......@@ -35,14 +35,11 @@ public class FtpUtil {
private String password;
@Value("${basePath}")
private String basePath;
@Value("${deskTopBasePath}")
private String deskTopBasePath;
public static String hosts;
private static String ports;
private static String usernames;
private static String passwords;
private static String basePaths;
private static String deskTopBasePaths;
//利用@PostConstruct将配置文件中配置的值赋给本地的变量
@PostConstruct
......@@ -65,54 +62,7 @@ public class FtpUtil {
public void getBasePath() {
basePaths = this.basePath;
}
@PostConstruct
public void getDeskTopBasePath() {
deskTopBasePaths = this.deskTopBasePath;
}
public static boolean deskTopuploadFile(String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
JSch jsch = new JSch();
//获取sshSession 账号-ip-端口
Session sshSession = jsch.getSession(usernames, hosts, Integer.valueOf(ports));
//添加密码
sshSession.setPassword(passwords);
Properties sshConfig = new Properties();
sshConfig.put("userauth.gssapi-with-mic", "no");
//严格主机密钥检查
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
//开启sshSession链接
sshSession.connect();
//获取sftp通道
Channel channel = sshSession.openChannel("sftp");
//开启
channel.connect();
sftp = (ChannelSftp) channel;
//设置为被动模式
ftp.enterLocalPassiveMode();
//设置上传文件的类型为二进制类型
//进入到要上传的目录 然后上传文件
sftp.cd(deskTopBasePaths);
sftp.put(input,filename);
input.close();
result = true;
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
/**
* Description: 向FTP服务器上传文件
* host FTP服务器ip
......
......@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.founder.commonutils.model.newPublicEntity.MapRestResult;
import com.founder.commonutils.model.newPublicEntity.SkypDesktopEntity.SkMenu;
import com.founder.commonutils.model.newPublicEntity.SkypDesktopEntity.SkSchedule;
import com.founder.commonutils.util.Base64Util;
import com.founder.commonutils.util.KeyUtil;
import com.founder.commonutils.util.KeyUtilNaotu;
import com.founder.commonutils.util.StringUtil;
......@@ -29,7 +28,7 @@ import java.util.stream.Collectors;
@Api(tags = "时空桌面")
public class SkypDesktopController {
@Value("${deskTopUrl}")
@Value("${basePath}")
public String deskTopUrl;
@Autowired
SkMenuMapper skMenuMapper;
......@@ -58,7 +57,7 @@ public class SkypDesktopController {
String far = KeyUtil.getUUIDKey("p")+type;
skMenu.setPhoto(deskTopUrl+far);
// 上传图片到服务器
FtpUtil.deskTopuploadFile(far,photoFile.getInputStream());
FtpUtil.uploadFile(far,photoFile.getInputStream());
}else {
return new MapRestResult(200,"请上传菜单图片",null);
}
......@@ -114,7 +113,7 @@ public class SkypDesktopController {
String far = KeyUtil.getUUIDKey("p")+type;
skMenu.setPhoto(deskTopUrl+far);
// 上传图片到服务器
FtpUtil.deskTopuploadFile(far,photoFile.getInputStream());
FtpUtil.uploadFile(far,photoFile.getInputStream());
}
skMenu.setGxsj(nowTime());
int i = skMenuMapper.updateById(skMenu);
......
package com.founder.publicapi.controller.cqService;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.founder.commonutils.model.newPublicEntity.cqEntity.CqExcelImport;
import com.founder.commonutils.model.newPublicEntity.cqEntity.CqExcelImportResult;
import com.founder.commonutils.util.ExportExcelUtil;
import com.founder.publicapi.mapper.qgxzMapper.TbStAsjqgMapper;
import com.founder.publicapi.service.CqImportListener;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.InputStream;
@Api(tags = "渝康码管理(重庆)")
@RestController
@RequestMapping("/ykm")
public class CqController {
@Autowired
TbStAsjqgMapper tbStAsjqgMapper;
@OperLog(message = "模板手机号导入",operation = OperationType.QUERY)
@PostMapping("import")
@ApiOperation(value = "模板手机号导入", notes = "传入excel")
public void importKsjHd(MultipartFile file, HttpServletResponse response) {
String filename = file.getOriginalFilename();
if (org.springframework.util.StringUtils.isEmpty(filename)) {
throw new RuntimeException("请上传文件!");
}
if ((!org.springframework.util.StringUtils.endsWithIgnoreCase(filename, ".xls") && !org.springframework.util.StringUtils.endsWithIgnoreCase(filename, ".xlsx"))) {
throw new RuntimeException("请上传正确的excel文件!");
}
InputStream inputStream;
try {
// 处理开始
CqImportListener importListener = new CqImportListener(tbStAsjqgMapper);
inputStream = new BufferedInputStream(file.getInputStream());
ExcelReaderBuilder builder = EasyExcel.read(inputStream, CqExcelImport.class, importListener);
builder.doReadAll();
// 导出
ExportExcelUtil<CqExcelImportResult> exportExcelUtil = new ExportExcelUtil<>();
String[] headersName = {"本机号码","对方号码","证件号码","案件编号"};
String[] headersField = {"source","target","zjhm","asjbh"};
exportExcelUtil.exportExcel("DataStatistics", headersName, headersField, importListener.getListResult(), response,"手机关联案件信息");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("上传失败!");
}
}
}
......@@ -20,5 +20,6 @@ import java.util.Map;
@Component
public interface TbStAsjqgMapper {
List<Map<String,Object>> getqgAsjxxByZjhm(@Param(value = "zjhm") String zjhm, @Param(value = "ssdw") String ssdw);
List<String> getAsjbhGlRyByZjhm(@Param(value = "zjhm") String zjhm);
List<String> getAsjbhWffzryByZjhm(@Param(value = "zjhm") String zjhm);
}
......@@ -25,4 +25,18 @@
AND XYR.zhfzxyr_Cyzj_Zjhm = #{zjhm}
</if>
</select>
<select id="getAsjbhGlRyByZjhm" parameterType="java.lang.String" resultType="java.lang.String">
SELECT
T.asjbh
FROM TB_GL_ASJ_RY T
where
T.CYZJ_ZJHM = #{zjhm}
</select>
<select id="getAsjbhWffzryByZjhm" parameterType="java.lang.String" resultType="java.lang.String">
SELECT
T.asjbh
FROM TB_XW_WFFZKYRY T
where
T.WFFZKYRY_CYZJ_ZJHM = #{zjhm}
</select>
</mapper>
package com.founder.publicapi.service;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.commonutils.model.newPublicEntity.cqEntity.CqExcelImport;
import com.founder.commonutils.model.newPublicEntity.cqEntity.CqExcelImportResult;
import com.founder.commonutils.util.HttpClient;
import com.founder.publicapi.mapper.qgxzMapper.TbStAsjqgMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
* KshImportListener
*
* @author yangyang
*/
@Data
@RequiredArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Service
public class CqImportListener extends AnalysisEventListener<CqExcelImport> {
@Value("${ykmUrl}")
private String ykmUrl;
private final TbStAsjqgMapper tbStAsjqgMapper;
private List<CqExcelImport> list = new ArrayList<>();// 缓存的数据列表
List<CqExcelImportResult> listResult = new ArrayList<>();// 重庆
@Override
public void invoke(CqExcelImport data, AnalysisContext context) {
list.add(data);
}
@SneakyThrows
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
ExecutorService cacheExecutor = Executors.newFixedThreadPool(1000);
CountDownLatch latch = new CountDownLatch(list.size());
list.stream().forEach(p -> {
cacheExecutor.execute(() -> {
CqExcelImportResult cqExcelImportResult = new CqExcelImportResult();
BeanUtils.copyProperties(p, cqExcelImportResult);
// 通过对方号码渝康吗查询身份证
HttpClient httpClientCq = new HttpClient();
JSONObject parasm = JSONObject.parseObject("{\n" +
" \"From\": \"0\", \n" +
" \"To\": \"10000\", \n" +
" \"MessageSequence\": \"20220513153301004\", \n" +
" \"RequestParam\": {\n" +
" \"Condition\": \"YDDH ='" + p.getTarget() + "'\"," +
" \"ResourceInfos\": [ \n" +
" {\n" +
" \"DataItems\":[],\n" +
" \"ResourceName\": \"R-500000000000-00000029\"\n" +
" }\n" +
" ],\n" +
" \"OtherCondition\": {\n" +
" \"MaxReturnNum\": \"10000\", \n" +
" \"AsyncBoolean\": \"0\", \n" +
" \"AsyncOnceReturnNum\": \"0\", \n" +
" \"AsyncQuery\": \"\", \n" +
" \"CallbackID\": \"\", \n" +
" \"CodeMode\": \"0\", \n" +
" \"SortResults\": \"\" \n" +
" }\n" +
" }\n" +
"}");
JSONObject resultCar = null;
try {
resultCar = httpClientCq.doPostJson(ykmUrl, parasm.toJSONString());
if (null != resultCar) { // 解析返回结果
if ("0200".equals(resultCar.getString("MessageStatus"))) {
JSONArray jsonArray = JSONObject.parseObject(resultCar.get("ResponseParam").toString()).getJSONArray("ResourceInfos");
if (jsonArray.size() > 0) {
JSONObject obj = jsonArray.getJSONObject(0);
JSONArray jsonArray1 = obj.getJSONArray("DataInfo");
if (jsonArray1.size() > 0) {
String zjhm = jsonArray1.getJSONArray(0).get(11).toString();
if (null != zjhm) {
cqExcelImportResult.setZjhm(zjhm);
// 通过证件号码去tb_st_ry_gl和wffz
List<String> listasjbh = new ArrayList<>();
listasjbh = tbStAsjqgMapper.getAsjbhGlRyByZjhm(zjhm);
if (listasjbh.size() == 0) {
listasjbh = tbStAsjqgMapper.getAsjbhWffzryByZjhm(zjhm);
}
if (listasjbh.size() > 0) {
String asjbhs = String.join(",", listasjbh.stream().distinct().collect(Collectors.toList()));
cqExcelImportResult.setAsjbh(asjbhs);
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
listResult.add(cqExcelImportResult);
latch.countDown();
});
});
latch.await();
cacheExecutor.shutdown();
// 存储完成清理list
list.clear();
}
}
......@@ -60,8 +60,7 @@ usernameFtp=root
password=Cc150520900118
#FTP\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u013F\u00BC,/data2/images
basePath=/data2/images
imagesUrl=http://65.26.2.173:1008/images/
#\u65F6\u7A7A\u684C\u9762\u56FE\u6807\u8DEF\u5F84
deskTopBasePath = /data/deskTopImage
deskTopUrl=http://47.92.48.137:1008/deskTopImage/
imagesUrl=http://47.92.48.137:1008/images/
ykmUrl=http://10.154.255.223/fhdaas/unisearch/local/request
#\uFFFD\uFFFD\uFFFD\uFFFD\u02FF\uFFFD
#??????
server.port=1003
#\uFFFD\uFFFD\uFFFD\uFFFDjson\uFFFD\uFFFD\u022B\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\uFFFD\u02BD
#????json??????????
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD
#???????????
logging.level.root=INFO
#mybatis\uFFFD\uFFFD\u05BE
#mybatis???
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#mysql?????????
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.xzxtdb.url=ENC(Y1dXm7lJCGbPffW6Pbg/Uid1UK2Z1Tu2TNdp9AgqT/iXb4hNRriak+glPXYD6BnO4fQwN9Sj/zguByboO4FagHEQRN0tE57RI6rJEUeTt2JHb1rc2BG1wE9QPK96E5o9K/1TSAjnD/Rr2eAxy11tFLL2fQP35EOX)
spring.datasource.xzxtdb.username=ENC(e7qsvm7EnrdHG04YnaTMsw==)
spring.datasource.xzxtdb.password=ENC(XPnOn0zoWMgOG8gIws+Bh7JITC3mMqSn)
spring.datasource.xzxtdb.url=jdbc:mysql://77.1.24.51:3306/skyp?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
spring.datasource.xzxtdb.username=root
spring.datasource.xzxtdb.password=founder123
spring.datasource.xzxtdb.type=com.alibaba.druid.pool.DruidDataSource
#oracle?????????(?????)
spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.qgdb.url=ENC(Y1dXm7lJCGbPffW6Pbg/Uid1UK2Z1Tu2TNdp9AgqT/iXb4hNRriak+glPXYD6BnO4fQwN9Sj/zguByboO4FagHEQRN0tE57RI6rJEUeTt2JHb1rc2BG1wE9QPK96E5o9K/1TSAjnD/Rr2eAxy11tFLL2fQP35EOX)
spring.datasource.qgdb.username=ENC(e7qsvm7EnrdHG04YnaTMsw==)
spring.datasource.qgdb.password=ENC(XPnOn0zoWMgOG8gIws+Bh7JITC3mMqSn)
spring.datasource.qgdb.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.qgdb.url=jdbc:oracle:thin:@77.1.24.50:1521:CQXZ
spring.datasource.qgdb.username=XZXT
spring.datasource.qgdb.password=XzxtPwd#50
spring.datasource.qgdb.type=com.alibaba.druid.pool.DruidDataSource
#redis
......@@ -41,26 +41,25 @@ approvalDownload = http://47.92.48.137:1009/excel/approvalWord/
#\u65B0\u589E\u5377\u5B97\u5927\u6570\u636E\u6A21\u578B\u4E0B\u8F7D\u6A21\u677F\u7684\u8DEF\u5F84
approvalDownloadTemplate = http://47.92.48.137:1009/excel/approvalWord/ApprovalWordTemplate.docx
#xml\u0268\uFFFD\uFFFD
#xml???
mybatis-plus.mapper-locations=classpath*:com/founder/publicapi/mapper/*/xml/*.xml
#es\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0631\uFFFD
#es?????????
management.health.elasticsearch.enabled=false
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u03BB
#??????\uFFFD\uFFFD
ssdw=460000000000
#server.tomcat.basedir: /tmp/tomcat
#\u963F\u91CC\u4E91\u7528dev \u516C\u5B89\u7F51\u7528prod
environment=prod
#FTP\u670D\u52A1\u5668ip
host=65.26.2.173
#FTP\u670D\u52A1\u5668\u7AEF\u53E3
port=2233
#FTP\u767B\u5F55\u8D26\u53F7
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDdev \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDprod
environment=dev
#FTP\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDip
host=47.92.48.137
#FTP\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02FF\uFFFD
port=54322
#FTP\uFFFD\uFFFD\u00BC\uFFFD\u02FA\uFFFD
usernameFtp=root
#FTP\u767B\u5F55\u5BC6\u7801
password=Hnsgat12#$1
#FTP\u670D\u52A1\u5668\u57FA\u7840\u76EE\u5F55,/data2/images
basePath=/data/hnxz/images
#FTP\uFFFD\uFFFD\u00BC\uFFFD\uFFFD\uFFFD\uFFFD
password=Cc150520
#FTP\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u013F\u00BC,/data2/images
basePath=/data2/images
imagesUrl=http://65.26.2.173:1008/images/
#\u65F6\u7A7A\u684C\u9762\u56FE\u6807\u8DEF\u5F84
deskTopBasePath = /data/deskTopImage
deskTopUrl=http://47.92.48.137:1008/deskTopImage/
ykmUrl=http://10.154.255.223/fhdaas/unisearch/local/request
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment