You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
10 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.nmgs.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.nmgs.mapperset.oraclemapper.*;
import com.nmgs.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.util.*;
@Service
public class SolveUserAndVehcleServiceImpl {
@Autowired
public Mapper mapperI;
public String userSql = "select wut.OPENID FROM WEIXN_USER_TABLE wut WHERE wut.CERTIFICATION in(1,2,3) AND wut.NUMBERPIC IS NOT NULL ";
public String userVehcleSql = "select uvt.USERID,uvt.ACARNO,uvt.LICENSEPIC,uvt.PERMITPIC,uvt.VEHICLEPIC FROM USER_VEHICLE_TABLE uvt WHERE uvt.CERTIFICATION in(1,2,3) ";
/**
* 同步附件到服务器
*
* @param syncType ALL 同步全部PART 同步未同步过的数据
* @return
*/
public void syncFile(String syncType) throws IOException, InterruptedException {
Properties props = System.getProperties();
String os = props.getProperty("os.name").toLowerCase();
String fileAddress = PathUtil.uploadPath;
if (os.startsWith("win")) {
fileAddress = PropertiesUtil.getValue("fileAddressWin");
fileAddress = fileAddress.replace("/", "\\");
} else {
//fileAddress = PropertiesUtil.getValue("fileAddressLinux");
}
if (!"ALL".equals(syncType)) {
userSql += " AND (wut.NUMBERPICNAME IS NULL OR wut.NUMBERPICNAME='')";
userVehcleSql += "AND (uvt.LICENSEPICNAME IS NULL OR uvt.LICENSEPICNAME='')";
}
List selectforlist = this.mapperI.selectforlist(userSql);
List userVehcleList = this.mapperI.selectforlist(userVehcleSql);
Map<String, String> map = new HashMap<String, String>();
JSONArray jsonA = new JSONArray();
if (selectforlist != null && selectforlist.size() > 0) {
LogUtil.WriteLog_Info("人员附件开始同步====" + PubTools.getCurrentDate() + "==={执行数据量}====" + selectforlist.size(), "SolveUserAndVehcleServiceImpl");
for (int k = 0; k < selectforlist.size(); k++) {
Object o = selectforlist.get(k);
if (!PubTools.isEmpty(o)) {
Map<String, Object> mapObjectUser = (Map<String, Object>) o;
String openId = mapObjectUser.get("OPENID").toString();
LogUtil.WriteLog_Info("人员ID========" + openId, "SolveUserAndVehcleServiceImpl");
String sqlTemp = "select NUMBERPIC FROM WEIXN_USER_TABLE WHERE OPENID='" + openId + "'";
Map<String, Object> mapObject = this.mapperI.select(sqlTemp);
String numPicName = "";
if (!PubTools.isEmpty(mapObject.get("NUMBERPIC"))) {
String numberpic = PubTools.ClobToString(mapObject.get("NUMBERPIC"));
String fileName = openId + "NUMPIC" + ".jpg";
numPicName = fileName;
byte[] imageBytes = Base64.getDecoder().decode(numberpic);
// 创建文件
File file = new File(fileAddress, fileName); // 指定上传位置
//先删除附件
if (file.exists()) {
file.delete();
}
// 保存文件
org.apache.commons.io.FileUtils.writeByteArrayToFile(file, imageBytes);
JSONObject mapParam = new JSONObject();
mapParam.put("fileName", fileName);
mapParam.put("imageBase64", numberpic);
jsonA.add(mapParam);
if (!PubTools.isNull(numPicName)) {
String sql = "UPDATE WEIXN_USER_TABLE set NUMBERPICNAME='" + numPicName + "' WHERE CERTIFICATION in(1,2,3) AND OPENID='" + openId + "'";
this.mapperI.update(sql);
}
}
}
if ((k + 1) % 10 == 0) {
Thread.sleep(10 * 1000);
}
}
LogUtil.WriteLog_Info("人员附件同步结束====" + PubTools.getCurrentDate() + "=======", "SolveUserAndVehcleServiceImpl");
}
if (userVehcleList != null && userVehcleList.size() > 0) {
LogUtil.WriteLog_Info("车辆附件同步开始====" + PubTools.getCurrentDate() + "==={执行数据量}====" + userVehcleList.size(), "SolveUserAndVehcleServiceImpl");
for (int k = 0; k < userVehcleList.size(); k++) {
Object o = userVehcleList.get(k);
if (!PubTools.isEmpty(o)) {
Map<String, Object> mapObjectVeh = (Map<String, Object>) o;
String vehPicName = "";
String perPicName = "";
String licPicName = "";
String userId = mapObjectVeh.get("USERID").toString();
String aCarNo = mapObjectVeh.get("ACARNO").toString();
String fileNamePre = userId + "-" + aCarNo + "-";
String fileNameAfter = ".jpg";
LogUtil.WriteLog_Info("人员ID========" + userId + "=====车牌号====" + aCarNo, "SolveUserAndVehcleServiceImpl");
String tempSql = "select uvt.LICENSEPIC,uvt.PERMITPIC,uvt.VEHICLEPIC FROM USER_VEHICLE_TABLE uvt WHERE uvt.CERTIFICATION in(1,2,3) AND uvt.USERID=" + userId + " AND uvt.ACARNO='" + aCarNo + "'";
List selectforlist1 = this.mapperI.selectforlist(tempSql);
Map<String, Object> mapObject = new HashMap<String, Object>();
if (selectforlist1 != null && selectforlist1.size() > 0) {
mapObject = (Map<String, Object>) selectforlist1.get(0);
}
if (!PubTools.isEmpty(mapObject.get("LICENSEPIC"))) {
String numberpic = PubTools.ClobToString(mapObject.get("LICENSEPIC"));
String fileName = fileNamePre + "LICPIC" + fileNameAfter;
licPicName = fileName;
byte[] imageBytes = Base64.getDecoder().decode(numberpic);
// 创建文件
File file = new File(fileAddress, fileName); // 指定上传位置
//先删除附件
if (file.exists()) {
file.delete();
}
// 保存文件
org.apache.commons.io.FileUtils.writeByteArrayToFile(file, imageBytes);
Map<String, String> mapParam = new HashMap<String, String>();
mapParam.put("fileName", fileName);
mapParam.put("imageBase64", numberpic);
jsonA.add(mapParam);
}
if (!PubTools.isEmpty(mapObject.get("PERMITPIC"))) {
String numberpic = PubTools.ClobToString(mapObject.get("PERMITPIC"));
String fileName = fileNamePre + "PERPIC" + fileNameAfter;
perPicName = fileName;
byte[] imageBytes = Base64.getDecoder().decode(numberpic);
// 创建文件
File file = new File(fileAddress, fileName); // 指定上传位置
//先删除附件
if (file.exists()) {
file.delete();
}
// 保存文件
org.apache.commons.io.FileUtils.writeByteArrayToFile(file, imageBytes);
Map<String, String> mapParam = new HashMap<String, String>();
mapParam.put("fileName", fileName);
mapParam.put("imageBase64", numberpic);
jsonA.add(mapParam);
}
if (!PubTools.isEmpty(mapObject.get("VEHICLEPIC"))) {
String numberpic = PubTools.ClobToString(mapObject.get("VEHICLEPIC"));
String fileName = fileNamePre + "VEHPIC" + fileNameAfter;
vehPicName = fileName;
byte[] imageBytes = Base64.getDecoder().decode(numberpic);
// 创建文件
File file = new File(fileAddress, fileName); // 指定上传位置
//先删除附件
if (file.exists()) {
file.delete();
}
// 保存文件
org.apache.commons.io.FileUtils.writeByteArrayToFile(file, imageBytes);
JSONObject mapParam = new JSONObject();
mapParam.put("fileName", fileName);
mapParam.put("imageBase64", numberpic);
jsonA.add(mapParam);
}
if (!PubTools.isNull(vehPicName) && !PubTools.isNull(perPicName) && !PubTools.isNull(licPicName)) {
String sql = "UPDATE USER_VEHICLE_TABLE set LICENSEPICNAME='" + licPicName + "',PERMITPICNAME='" + perPicName + "',VEHICLEPICNAME='" + vehPicName + "' WHERE CERTIFICATION in(1,2,3) AND USERID=" + userId + " AND ACARNO='" + aCarNo + "'";
this.mapperI.update(sql);
}
}
if ((k + 1) % 10 == 0) {
Thread.sleep(10 * 1000);
}
}
LogUtil.WriteLog_Info("车辆附件同步结束====" + PubTools.getCurrentDate() + "=======", "SolveUserAndVehcleServiceImpl");
}
if (jsonA.size() > 0) {
map.put("jsonArray", jsonA.toJSONString());
//保存到附件服务器上面
String fileUploadUrl = PropertiesUtil.getValue("fileUploadUrl");
LogUtil.WriteLog_Info("ImageUtils====附件上传接口fileUploadUrl=====" + fileUploadUrl, "FileController");
String s = HttpClientUtil.doPost(fileUploadUrl, map);
LogUtil.WriteLog_Info("ImageUtils====附件上传结果显示=====" + s, "FileController");
}
}
}