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 map = new HashMap(); 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 mapObjectUser = (Map) 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 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 mapObjectVeh = (Map) 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 mapObject = new HashMap(); if (selectforlist1 != null && selectforlist1.size() > 0) { mapObject = (Map) 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 mapParam = new HashMap(); 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 mapParam = new HashMap(); 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"); } } }