1.优化同步实有房屋逻辑,如果没有业主找家庭成员
2.自动化处理房屋地址和标准地址对应
This commit is contained in:
gaoben 2021-06-25 18:30:26 +08:00
parent 4d01da944f
commit 522dc2d1ba
18 changed files with 480 additions and 139 deletions

View File

@ -29,9 +29,9 @@
<java.version>1.8</java.version>
<junit.version>4.12</junit.version>
<jedis.version>2.9.0</jedis.version>
<druid.version>1.1.13</druid.version>
<druid.version>1.1.18</druid.version>
<mybatisplus.version>3.1.2</mybatisplus.version>
<mysql.version>8.0.19</mysql.version>
<mysql.version>8.0.25</mysql.version>
<mssql.version>4.0</mssql.version>
<oracle.version>11.2.0.3</oracle.version>
<commons.lang.version>2.6</commons.lang.version>

View File

@ -11,15 +11,13 @@ import io.swagger.annotations.ApiOperation;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import net.shapelight.common.config.GlobalValue;
@ -335,6 +333,116 @@ public class CarOpenApi {
}
String dateDir = DateUtils.format(new Date(),DateUtils.DATE_YEAR_MONTH);
String fileName = "car/" + dateDir + "/" +parkCode+"/"+UUIDUtil.uuid() + ".jpg";
if (!StringUtils.isEmpty(imgUrl)) {
URL url = null;
InputStream is = null;
HttpURLConnection httpUrl = null;
try {
//new一个URL对象
url = new URL(imgUrl);
//打开链接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
//通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//创建一个Buffer字符串
byte[] buffer = new byte[1024000];
//每次读取的字符串长度如果为-1代表全部读取完毕
int len = 0;
//使用一个输入流从buffer里把数据读取出来
while( (len=inStream.read(buffer)) != -1 ){
//用输出流往buffer里写入数据中间参数代表从哪个位置开始读len代表读取的长度
outStream.write(buffer, 0, len);
}
//得到图片的二进制数据以二进制封装得到数据具有通用性
byte[] dataImage = outStream.toByteArray();
//关闭输入流
inStream.close();
outStream.close();
ByteArrayInputStream bais = new ByteArrayInputStream(dataImage);
BufferedImage image = ImageIO.read(bais);
//获取图片的宽
// System.out.println("Width: " + image.getWidth());
// System.out.println("Height: " + image.getHeight());
int w = image.getWidth();
int h = image.getHeight();
//调整尺寸不能大于1024
if(w>1024 || h>1024){
image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
}
byte[] data = ImageUtils.imageToBytes(image);
is = new ByteArrayInputStream(data);
int rl = is.available();
PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
putObjectOptions.setContentType("image/jpeg");
this.minioClient.putObject(this.minioConfig
.getBucketName(), fileName, is, putObjectOptions);
// url = new URL(imgUrl);
//
// BufferedImage image = ImageIO.read(url);
// //获取图片的宽
// System.out.println("Width: " + image.getWidth());
// System.out.println("Height: " + image.getHeight());
// int w = image.getWidth();
// int h = image.getHeight();
// //调整尺寸不能大于1024
// if(w>1024 || h>1024){
// image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
// }
// byte[] data = ImageUtils.imageToBytes(image);
// is = new ByteArrayInputStream(data);
// int rl = is.available();
// PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
// putObjectOptions.setContentType("image/jpeg");
// this.minioClient.putObject(this.minioConfig
// .getBucketName(), fileName, is, putObjectOptions);
// httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.connect();
//// httpUrl.getInputStream();
// is = httpUrl.getInputStream();
// PutObjectOptions putObjectOptions = new PutObjectOptions(is.available(), -1L);
// putObjectOptions.setContentType("image/jpeg");
// this.minioClient.putObject(this.minioConfig
// .getBucketName(), fileName, is, putObjectOptions);
} catch (Exception e) {
e.printStackTrace();
log.error("保存图片失败:"+imgUrl+"--------------------"+e);
fileName = "";
} finally {
if (is != null)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (httpUrl != null)
httpUrl.disconnect();
}
}
//去重
if (serviceName.equals("enter")) {
long enterTimeLong = bizContent.getLongValue("enterTime");
@ -372,55 +480,6 @@ public class CarOpenApi {
String fileName = "car/" + parkCode + "/" + UUIDUtil.uuid() + ".jpg";
if (!StringUtils.isEmpty(imgUrl)) {
URL url = null;
InputStream is = null;
HttpURLConnection httpUrl = null;
try {
url = new URL(imgUrl);
BufferedImage image = ImageIO.read(url);
//获取图片的宽
System.out.println("Width: " + image.getWidth());
System.out.println("Height: " + image.getHeight());
int w = image.getWidth();
int h = image.getHeight();
//调整尺寸不能大于1024
if(w>1024 || h>1024){
image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
}
byte[] data = ImageUtils.imageToBytes(image);
is = new ByteArrayInputStream(data);
int rl = is.available();
PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
putObjectOptions.setContentType("image/jpeg");
this.minioClient.putObject(this.minioConfig
.getBucketName(), fileName, is, putObjectOptions);
// httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.connect();
//// httpUrl.getInputStream();
// is = httpUrl.getInputStream();
// PutObjectOptions putObjectOptions = new PutObjectOptions(is.available(), -1L);
// putObjectOptions.setContentType("image/jpeg");
// this.minioClient.putObject(this.minioConfig
// .getBucketName(), fileName, is, putObjectOptions);
} catch (Exception e) {
e.printStackTrace();
fileName = "";
} finally {
if (is != null)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (httpUrl != null)
httpUrl.disconnect();
}
}
//
Long cellId = null;
@ -461,8 +520,17 @@ public class CarOpenApi {
enter.setParkCodeXa(parkCodeXa);
enter.setChannalCodeXa(channalCodeXa);
enter.setChannalCode(channalCode);
if (fileName.length() > 0)
if (fileName.length() > 0){
enter.setImage(fileName);
// try {
// minioClient.statObject(minioConfig.getBucketName(), fileName);
// enter.setImage(fileName);
// } catch (Exception e) {
// log.error("照片保存失败:" + fileName);
// e.printStackTrace();
// }
}
this.tenPackRecordEnterService.saveTr(enter);
} else if (serviceName.equals("exit")) {
long exitTimeLong = bizContent.getLongValue("exitTime");

View File

@ -619,6 +619,7 @@ public class XaImageTask implements ITask {
// }
// }
if(resJson.contains("ErrorLineParameter")){
resJson = resJson.replace("(\"T","");
JSONObject resJsonObject = JSONObject.parseObject(resJson);
String errLine = resJsonObject.getJSONObject("sta").getString("ErrorLineParameter").trim();
if(errLine.equals("empty")){

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.*;
import lombok.extern.slf4j.Slf4j;
import net.shapelight.common.utils.Constant;
import net.shapelight.common.utils.DateUtils;
import net.shapelight.modules.sys.entity.SysUserEntity;
import net.shapelight.modules.sys.service.SysUserService;
@ -84,7 +85,23 @@ public class XaRealDataTask implements ITask {
List<TenRoomEntity> updateRooms = new ArrayList<>();
int count = 0;
for (TenRoomEntity room : rooms) {
TenPersonEntity owner = this.tenPersonService.getOwner(room.getRoomId());
TenPersonEntity owner = null;
List<TenPersonEntity> roomPersons = tenPersonService.getByHaveMobilePersonByRoomId(room.getRoomId());
for(TenPersonEntity personEntity:roomPersons){
if(personEntity.getPersonType().intValue() == Constant.PERSON_TYPE_OWNER){
owner = personEntity;
break;
}
}
if(owner==null){
for(TenPersonEntity personEntity:roomPersons){
if(personEntity.getPersonType().intValue() == Constant.PERSON_TYPE_MEMBER){
owner = personEntity;
break;
}
}
}
// TenPersonEntity owner = this.tenPersonService.getOwner(room.getRoomId());
TenAddressEntity addressEntity = tenAddressService.getById(room.getPId());
if (owner != null && addressEntity != null) {
XaSYFW xaSYFW = new XaSYFW();

View File

@ -250,26 +250,42 @@ public class XaRecordTask implements ITask {
// }
// }
if(resJson.contains("ErrorLineParameter")){
JSONObject resJsonObject = JSONObject.parseObject(resJson);
String errLine = resJsonObject.getJSONObject("sta").getString("ErrorLineParameter").trim();
if(errLine.equals("empty")){
for (TenPackRecordEnterEntity recordEntity : updateRecords) {
recordEntity.setXaSync(1);
tenPackRecordEnterService.updateById(recordEntity);
}
}else{
String[] lines = errLine.split(",");
List<String> lineList = Arrays.asList(lines);
for (int i = 0;i<updateRecords.size();i++) {
if(lineList.contains(i+1+"")){
continue;
}else {
TenPackRecordEnterEntity recordEntity = updateRecords.get(i);
try{
JSONObject resJsonObject = JSONObject.parseObject(resJson);
String errLine = resJsonObject.getJSONObject("sta").getString("ErrorLineParameter").trim();
if(errLine.equals("empty")){
for (TenPackRecordEnterEntity recordEntity : updateRecords) {
recordEntity.setXaSync(1);
tenPackRecordEnterService.updateById(recordEntity);
}
}else{
String[] lines = errLine.trim().split(",");
List<String> lineList = Arrays.asList(lines);
for (int i = 0;i<updateRecords.size();i++) {
if(lineList.contains(i+1+"")){
TenPackRecordEnterEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
recordEntity.setXaSyncImage(1);
tenPackRecordEnterService.updateById(recordEntity);
}else {
TenPackRecordEnterEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
// recordEntity.setXaSyncImage(1);
tenPackRecordEnterService.updateById(recordEntity);
}
}
}
}catch (Exception e){
e.printStackTrace();
log.error("停车记录入场记录上报返回数据格式化错误,全部修改为已上传:"+resJson);
for (int i = 0;i<updateRecords.size();i++) {
TenPackRecordEnterEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
recordEntity.setXaSyncImage(1);
tenPackRecordEnterService.updateById(recordEntity);
}
}
}
}
@ -357,24 +373,40 @@ public class XaRecordTask implements ITask {
// }
// }
if(resJson.contains("ErrorLineParameter")){
JSONObject resJsonObject = JSONObject.parseObject(resJson);
String errLine = resJsonObject.getJSONObject("sta").getString("ErrorLineParameter").trim();
if(errLine.equals("empty")){
for (TenPackRecordExitEntity recordEntity : updateRecords) {
recordEntity.setXaSync(1);
tenPackRecordExitService.updateById(recordEntity);
}
}else{
String[] lines = errLine.split(",");
List<String> lineList = Arrays.asList(lines);
for (int i = 0;i<updateRecords.size();i++) {
if(lineList.contains(i+1+"")){
continue;
}else {
TenPackRecordExitEntity recordEntity = updateRecords.get(i);
try{
JSONObject resJsonObject = JSONObject.parseObject(resJson);
String errLine = resJsonObject.getJSONObject("sta").getString("ErrorLineParameter").trim();
if(errLine.equals("empty")){
for (TenPackRecordExitEntity recordEntity : updateRecords) {
recordEntity.setXaSync(1);
tenPackRecordExitService.updateById(recordEntity);
}
}else{
String[] lines = errLine.trim().split(",");
List<String> lineList = Arrays.asList(lines);
for (int i = 0;i<updateRecords.size();i++) {
if(lineList.contains(i+1+"")){
TenPackRecordExitEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
recordEntity.setXaSyncImage(1);
tenPackRecordExitService.updateById(recordEntity);
}else {
TenPackRecordExitEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
// recordEntity.setXaSyncImage(1);
tenPackRecordExitService.updateById(recordEntity);
}
}
}
}catch (Exception e){
//json格式化错误
e.printStackTrace();
log.error("停车记录出场记录上报返回数据格式化错误,全部修改为已上传:"+resJson);
for (int i = 0;i<updateRecords.size();i++) {
TenPackRecordExitEntity recordEntity = updateRecords.get(i);
recordEntity.setXaSync(1);
recordEntity.setXaSyncImage(1);
tenPackRecordExitService.updateById(recordEntity);
}
}
}

View File

@ -46,6 +46,8 @@ public class TenCellController extends AbstractController {
private TenPersonService tenPersonService;
@Autowired
private TenDeviceService tenDeviceService;
@Autowired
private TenRoomService tenRoomService;
/**
* 列表
@ -196,4 +198,13 @@ public class TenCellController extends AbstractController {
}
return R.ok().put("data", cellList);
}
@PostMapping("/syncRoomAddress")
@ApiOperation("删除小区")
@RequiresPermissions("ten:cell")
//@RequiresPermissions("ten:cell:delete")
public R syncRoomAddress(@RequestParam("cellId") Long cellId){
int count = tenRoomService.syncAddress(cellId);
return R.ok().put("count",count);
}
}

View File

@ -92,6 +92,9 @@ public interface TenPersonDao {
List<TenPersonEntity> getNotSyncImage(@Param("cellId") Long paramLong);
List<TenPersonEntity> getByHaveMobilePersonByRoomId(@Param("roomId") Long roomId);
}

View File

@ -47,5 +47,9 @@ public interface TenRoomDao {
List<TenRoomEntity> getNotSync(@Param("cellId") Long paramLong);
List<TenRoomEntity> getNotBindByCellId(@Param("cellId") Long paramLong);
List<TenRoomEntity> getPicByCellId(@Param("pId") Long pId,@Param("cellId") Long paramLong);
}

View File

@ -30,5 +30,7 @@ public interface TenCellService extends IService<TenCellEntity> {
void updateByIdResis(TenCellEntity cell);
int syncRoomAddress(Long cellId);
}

View File

@ -120,6 +120,8 @@ public interface TenPersonService {
List<TenPersonEntity> getNotSyncImage(Long paramLong);
List<TenPersonEntity> getByHaveMobilePersonByRoomId(Long roomId);
}

View File

@ -48,5 +48,7 @@ public interface TenRoomService {
int getAllCount(Map params);
List<TenRoomEntity> getNotSync(Long paramLong);
int syncAddress(Long cellId);
}

View File

@ -7,6 +7,7 @@ import net.shapelight.common.utils.SnowflakeIdWorker;
import net.shapelight.modules.sys.entity.SysUserEntity;
import net.shapelight.modules.sys.service.SysUserRoleService;
import net.shapelight.modules.sys.service.SysUserService;
import net.shapelight.modules.ten.entity.TenRoomEntity;
import net.shapelight.modules.ten.entity.TenUserScopeEntity;
import net.shapelight.modules.ten.service.*;
import org.springframework.beans.factory.annotation.Autowired;
@ -178,4 +179,9 @@ public class TenCellServiceImpl extends ServiceImpl<TenCellDao, TenCellEntity> i
}
return cellIdList;
}
@Override
public int syncRoomAddress(Long cellId) {
return tenRoomService.syncAddress(cellId);
}
}

View File

@ -2065,4 +2065,9 @@ public class TenPersonServiceImpl implements TenPersonService {
public List<TenPersonEntity> getNotSyncImage(Long cellId) {
return this.tenPersonDao.getNotSyncImage(cellId);
}
@Override
public List<TenPersonEntity> getByHaveMobilePersonByRoomId(Long roomId) {
return this.tenPersonDao.getByHaveMobilePersonByRoomId(roomId);
}
}

View File

@ -2,10 +2,9 @@ package net.shapelight.modules.ten.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.shapelight.modules.ten.entity.TenAddressEntity;
import net.shapelight.modules.ten.entity.TenBuildEntity;
import net.shapelight.modules.ten.entity.TenCellEntity;
import net.shapelight.modules.ten.service.TenAddressService;
import net.shapelight.modules.ten.service.TenCellService;
import net.shapelight.modules.ten.service.TenPersonService;
import net.shapelight.modules.ten.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@ -22,7 +21,6 @@ import net.shapelight.common.utils.Query;
import net.shapelight.modules.ten.dao.TenRoomDao;
import net.shapelight.modules.ten.entity.TenRoomEntity;
import net.shapelight.modules.ten.service.TenRoomService;
import org.springframework.transaction.annotation.Transactional;
@ -36,6 +34,8 @@ public class TenRoomServiceImpl implements TenRoomService {
private TenPersonService tenPersonService;
@Autowired
private TenAddressService tenAddressService;
@Autowired
private TenBuildService tenBuildService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
@ -203,5 +203,41 @@ public class TenRoomServiceImpl implements TenRoomService {
return this.tenRoomDao.getNotSync(cellId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int syncAddress(Long cellId) {
List<TenRoomEntity> allRooms = tenRoomDao.getNotBindByCellId(cellId);
TenCellEntity cellEntity = tenCellService.getById(cellId);
int count = 0;
String xqid = cellEntity.getThirdId();
if(xqid != null && !xqid.isEmpty()){
for(TenRoomEntity roomEntity: allRooms){
TenBuildEntity buildEntity = tenBuildService.getById(roomEntity.getBuildId(),roomEntity.getCellId());
String buildNumber = buildEntity.getNumber();
String unit = buildEntity.getUnit();
String layer = roomEntity.getLayer().toString();
String roomNumber = roomEntity.getRoomNumber().toString();
String address = ""+buildNumber+""+unit+"单元"+layer+""+roomNumber+"";
//查询可以关联的标准地址
List<TenAddressEntity> searchAddressList = tenAddressService.list(new QueryWrapper<TenAddressEntity>()
.eq("dzjb",14)
.eq("xqid",xqid)
.like("dzqc",address));
//查询关联的是否已经绑定
if(searchAddressList.size() == 1){
TenAddressEntity addressEntity = searchAddressList.get(0);
List<TenRoomEntity> roomBind = tenRoomDao.getPicByCellId(addressEntity.getPId(),roomEntity.getCellId());
//没有绑定
if(roomBind.size() == 0){
count++;
roomEntity.setPId(addressEntity.getPId());
tenRoomDao.updateById(roomEntity);
}else{
String roomName = roomEntity.getRoomName();
}
}
}
}
return count;
}
}

View File

@ -3,7 +3,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.50.232:3306/cell_db_0511?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
url: jdbc:mysql://192.168.50.232:3306/cell_db_0621?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&rewriteBatchedStatements=true
username: user
password: user@server001
initial-size: 10
@ -19,23 +19,23 @@ spring:
test-on-borrow: false
test-on-return: false
stat-view-servlet:
enabled: true
enabled: false
url-pattern: /druid/*
login-username: admin
login-password: admin
allow: 61.185.224.80
web-stat-filter:
enabled: true
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
enabled: true
db-type: mysql
wall:
config:
multi-statement-allow: true
login-password: admin@A1
allow:
web-stat-filter:
enabled: false
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
enabled: true
db-type: mysql
wall:
config:
multi-statement-allow: true
#sharding.jdbc:

View File

@ -919,10 +919,12 @@
</select>
<select id="getNotSync" resultType="net.shapelight.modules.ten.entity.TenPersonEntity">
select * from ten_person
where cell_id = #{cellId}
and delete_flag = 0 and (person_type = 5000 || person_type = 5001)
and xa_sync = 0
select * from ten_person p left join ten_room r
on p.room_id = r.room_id
where p.cell_id = #{cellId}
and p.delete_flag = 0 and (p.person_type = 5000 || p.person_type = 5001)
and p.xa_sync = 0
and r.xa_sync = 1
</select>
<select id="getNotSyncCard" resultType="net.shapelight.modules.ten.entity.TenPersonEntity">
@ -941,6 +943,12 @@
</select>
<select id="getByHaveMobilePersonByRoomId" resultType="net.shapelight.modules.ten.entity.TenPersonEntity">
select * from ten_person
where room_id = #{roomId} and trim(mobile) != ''
</select>

View File

@ -421,6 +421,17 @@
and p_id is not null
</select>
<select id="getNotBindByCellId" resultType="net.shapelight.modules.ten.entity.TenRoomEntity">
select * from ten_room where delete_flag = 0
and cell_id = #{cellId} and p_id is null
</select>
<select id="getPicByCellId" resultType="net.shapelight.modules.ten.entity.TenRoomEntity">
select * from ten_room where delete_flag = 0
and p_id = #{pId}
and cell_id = #{cellId}
</select>

View File

@ -2,6 +2,7 @@ package gb;
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import net.shapelight.AdminApplication;
import net.shapelight.common.config.MinioConfig;
@ -20,10 +21,12 @@ import java.awt.image.BufferedImage;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdminApplication.class)
@Slf4j
public class CarImageTest {
@Autowired
private MinioClient minioClient;
@ -33,9 +36,11 @@ public class CarImageTest {
@Test
public void ossTest() {
String imgUrl = "http://icecloud-prod.oss-cn-shenzhen.aliyuncs.com/P1610092525/image/202104/25/%E9%99%95A207AY_out_2_5802.jpg?Expires=1619330640&amp;OSSAccessKeyId=LTAI4Furp7fmTGDMRhJ95jaX&amp;Signature=2xS3T%2FlK9LMe%2FjAOotCEvIlCOmU%3D";
String imgUrl = "http://icecloud-prod.oss-cn-shenzhen.aliyuncs.com/P1613901148/image/202106/17/%E9%99%95A3U32K_out_2_4472.jpg?Expires=1623895438&OSSAccessKeyId=LTAI4Furp7fmTGDMRhJ95jaX&Signature=iJ7H8%2FmOQz2Zs81APGk2SMrREGQ%3D";
imgUrl = imgUrl.replace("amp;", "");
String fileName = "car/" + 222 + "/" + UUIDUtil.uuid() + ".jpg";
if (!StringUtils.isEmpty(imgUrl)) {
URL url = null;
InputStream is = null;
@ -43,50 +48,26 @@ public class CarImageTest {
try {
url = new URL(imgUrl);
BufferedImage image = ImageIO.read(url);
//获取图片的宽
System.out.println("Width: " + image.getWidth());
System.out.println("Height: " + image.getHeight());
//调整图片大小为 400X400尺寸
// BufferedImage newImage = ImageUtils.resizeImage(image,400,400);
int w = image.getWidth();
int h = image.getHeight();
//调整尺寸不能大于1024
if(w>1024 || h>1024){
image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
}
// BufferedImage resizeBuff = ThumbnailsUtils.resizeImageOne(image,1024,1024);
// ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// if (w > 1024 || h > 1024) {
// Thumbnails.of(image)
// .size(1024, 1024)
//// .outputFormat("JPEG")
//// .outputQuality(1)
// .toOutputStream(outputStream);
// }
byte[] data = ImageUtils.imageToBytes(image);
// ByteArrayInputStream
is = new ByteArrayInputStream(data);
int rl = is.available();
// httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.connect();
//// httpUrl.getInputStream();
// is = httpUrl.getInputStream();
// int rl = httpUrl.getContentLength();
// int l = is.available();
PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
putObjectOptions.setContentType("image/jpeg");
this.minioClient.putObject(this.minioConfig
.getBucketName(), fileName, is, putObjectOptions);
} catch (Exception e) {
e.printStackTrace();
// log.error("保存图片失败:"+imgUrl+":"+e.getMessage());
fileName = "";
} finally {
if (is != null)
@ -99,5 +80,157 @@ public class CarImageTest {
httpUrl.disconnect();
}
}
// String imgUrl = "http://icecloud-prod.oss-cn-shenzhen.aliyuncs.com/P1610092525/image/202104/25/%E9%99%95A207AY_out_2_5802.jpg?Expires=1619330640&amp;OSSAccessKeyId=LTAI4Furp7fmTGDMRhJ95jaX&amp;Signature=2xS3T%2FlK9LMe%2FjAOotCEvIlCOmU%3D";
// imgUrl = imgUrl.replace("amp;", "");
// String fileName = "car/" + 222 + "/" + UUIDUtil.uuid() + ".jpg";
// if (!StringUtils.isEmpty(imgUrl)) {
// URL url = null;
// InputStream is = null;
// HttpURLConnection httpUrl = null;
// try {
// url = new URL(imgUrl);
//
//
// BufferedImage image = ImageIO.read(url);
// //获取图片的宽
// System.out.println("Width: " + image.getWidth());
// System.out.println("Height: " + image.getHeight());
// //调整图片大小为 400X400尺寸
//// BufferedImage newImage = ImageUtils.resizeImage(image,400,400);
// int w = image.getWidth();
// int h = image.getHeight();
// if(w>1024 || h>1024){
// image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
// }
//
//
//// BufferedImage resizeBuff = ThumbnailsUtils.resizeImageOne(image,1024,1024);
//
//
//// ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//// if (w > 1024 || h > 1024) {
//// Thumbnails.of(image)
//// .size(1024, 1024)
////// .outputFormat("JPEG")
////// .outputQuality(1)
//// .toOutputStream(outputStream);
//// }
//
// byte[] data = ImageUtils.imageToBytes(image);
//// ByteArrayInputStream
// is = new ByteArrayInputStream(data);
// int rl = is.available();
//
//
//// httpUrl = (HttpURLConnection) url.openConnection();
//// httpUrl.connect();
////// httpUrl.getInputStream();
//// is = httpUrl.getInputStream();
//// int rl = httpUrl.getContentLength();
//// int l = is.available();
// PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
// putObjectOptions.setContentType("image/jpeg");
// this.minioClient.putObject(this.minioConfig
// .getBucketName(), fileName, is, putObjectOptions);
// } catch (Exception e) {
// e.printStackTrace();
// fileName = "";
// } finally {
// if (is != null)
// try {
// is.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// if (httpUrl != null)
// httpUrl.disconnect();
// }
// }
}
@Test
public void imageUrlTest() {
String imgUrl = "http://icecloud-prod.oss-cn-shenzhen.aliyuncs.com/P1613901148/image/202106/17/%E9%99%95AH345%E5%AD%A6_in_2_9660.jpg?Expires=1623901253&OSSAccessKeyId=LTAI4Furp7fmTGDMRhJ95jaX&Signature=ASDVTMGzPt8INggoslRbYBgyenc%3D";
imgUrl = imgUrl.replace("amp;", "");
String fileName = "car/" + 222 + "/" + UUIDUtil.uuid() + ".jpg";
log.error("开始执行");
if (!StringUtils.isEmpty(imgUrl)) {
URL url = null;
InputStream is = null;
// HttpURLConnection httpUrl = null;
try {
//new一个URL对象
url = new URL(imgUrl);
//打开链接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
//通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//创建一个Buffer字符串
byte[] buffer = new byte[1024000];
//每次读取的字符串长度如果为-1代表全部读取完毕
int len = 0;
//使用一个输入流从buffer里把数据读取出来
while( (len=inStream.read(buffer)) != -1 ){
//用输出流往buffer里写入数据中间参数代表从哪个位置开始读len代表读取的长度
outStream.write(buffer, 0, len);
}
//得到图片的二进制数据以二进制封装得到数据具有通用性
byte[] dataImage = outStream.toByteArray();
//关闭输入流
inStream.close();
outStream.close();
ByteArrayInputStream bais = new ByteArrayInputStream(dataImage);
BufferedImage image = ImageIO.read(bais);
//获取图片的宽
// System.out.println("Width: " + image.getWidth());
// System.out.println("Height: " + image.getHeight());
int w = image.getWidth();
int h = image.getHeight();
//调整尺寸不能大于1024
if(w>1024 || h>1024){
image = ThumbnailsUtils.resizeImageOne(image,1024,1024);
}
byte[] data = ImageUtils.imageToBytes(image);
is = new ByteArrayInputStream(data);
int rl = is.available();
PutObjectOptions putObjectOptions = new PutObjectOptions(rl, -1L);
putObjectOptions.setContentType("image/jpeg");
this.minioClient.putObject(this.minioConfig
.getBucketName(), fileName, is, putObjectOptions);
} catch (Exception e) {
e.printStackTrace();
log.error("保存图片失败:"+imgUrl+"-----------------"+e.getMessage());
fileName = "";
} finally {
if (is != null)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
// if (httpUrl != null)
// httpUrl.disconnect();
}
}
log.error("结束执行");
}
}