国网上送接口,提交
This commit is contained in:
@@ -3,13 +3,10 @@ package com.njcn.process.pojo.po;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.njcn.db.bo.BaseEntity;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,6 +54,7 @@ public class SupvFile {
|
|||||||
|
|
||||||
private String uploaderName;
|
private String uploaderName;
|
||||||
|
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime uploadTime;
|
private LocalDateTime uploadTime;
|
||||||
|
|
||||||
private String uploaderId;
|
private String uploaderId;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,7 +79,7 @@ public class SupvPushGwController extends BaseController {
|
|||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@ApiOperation("推送附件接口")
|
@ApiOperation("推送附件接口")
|
||||||
@ApiImplicitParam(name = "busIds",value = "请求体",required = true)
|
@ApiImplicitParam(name = "busIds",value = "请求体",required = true)
|
||||||
public HttpResult<Object> pushFile(@RequestBody List<String> busIds){
|
public HttpResult<Object> pushFile(@RequestBody List<String> busIds) throws IOException {
|
||||||
String methodDescribe = getMethodDescribe("pushFile");
|
String methodDescribe = getMethodDescribe("pushFile");
|
||||||
supvPushGwService.pushFile(busIds);
|
supvPushGwService.pushFile(busIds);
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.njcn.process.service;
|
package com.njcn.process.service;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +31,7 @@ public interface SupvPushGwService {
|
|||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/6/28
|
* @date 2023/6/28
|
||||||
*/
|
*/
|
||||||
boolean pushFile(List<String> busIds);
|
boolean pushFile(List<String> busIds) throws IOException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
package com.njcn.process.service.impl;
|
package com.njcn.process.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
|
import com.njcn.oss.utils.FileStorageUtil;
|
||||||
import com.njcn.process.mapper.SupvFileMapper;
|
import com.njcn.process.mapper.SupvFileMapper;
|
||||||
import com.njcn.process.mapper.SupvPlanMapper;
|
import com.njcn.process.mapper.SupvPlanMapper;
|
||||||
import com.njcn.process.mapper.SupvProblemMapper;
|
import com.njcn.process.mapper.SupvProblemMapper;
|
||||||
import com.njcn.process.mapper.SupvReportMMapper;
|
import com.njcn.process.mapper.SupvReportMMapper;
|
||||||
import com.njcn.process.pojo.dto.supv.PlanProblemData;
|
|
||||||
import com.njcn.process.pojo.dto.supv.WorkPlanData;
|
|
||||||
import com.njcn.process.pojo.po.SupvFile;
|
import com.njcn.process.pojo.po.SupvFile;
|
||||||
import com.njcn.process.pojo.po.SupvPlan;
|
import com.njcn.process.pojo.po.SupvPlan;
|
||||||
import com.njcn.process.pojo.po.SupvProblem;
|
import com.njcn.process.pojo.po.SupvProblem;
|
||||||
@@ -18,19 +17,26 @@ import com.njcn.process.pojo.po.SupvReportM;
|
|||||||
import com.njcn.process.service.SupvPushGwService;
|
import com.njcn.process.service.SupvPushGwService;
|
||||||
import com.njcn.system.api.DicDataFeignClient;
|
import com.njcn.system.api.DicDataFeignClient;
|
||||||
import com.njcn.system.enums.DicDataTypeEnum;
|
import com.njcn.system.enums.DicDataTypeEnum;
|
||||||
import com.njcn.system.pojo.po.Dic;
|
|
||||||
import com.njcn.system.pojo.po.DictData;
|
import com.njcn.system.pojo.po.DictData;
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
import com.njcn.user.api.DeptFeignClient;
|
||||||
import com.njcn.user.pojo.po.Dept;
|
import com.njcn.user.pojo.po.Dept;
|
||||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
||||||
import liquibase.pro.packaged.W;
|
import com.njcn.web.utils.RestTemplateUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.compress.utils.IOUtils;
|
||||||
|
import org.springframework.core.io.FileSystemResource;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.io.FileOutputStream;
|
||||||
import java.util.Map;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.io.InputStream;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -41,6 +47,7 @@ import java.util.stream.Collectors;
|
|||||||
* @date 2023/6/28
|
* @date 2023/6/28
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class SupvPushGwServiceImpl implements SupvPushGwService {
|
public class SupvPushGwServiceImpl implements SupvPushGwService {
|
||||||
|
|
||||||
@@ -56,6 +63,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
|
|
||||||
private final DeptFeignClient deptFeignClient;
|
private final DeptFeignClient deptFeignClient;
|
||||||
|
|
||||||
|
private final FileStorageUtil fileStorageUtil;
|
||||||
@Override
|
@Override
|
||||||
public boolean pushPlan(List<String> planIds) {
|
public boolean pushPlan(List<String> planIds) {
|
||||||
LambdaQueryWrapper<SupvPlan> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SupvPlan> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
@@ -167,7 +175,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
|
|
||||||
|
|
||||||
//TODO 调用国网接口
|
//TODO 调用国网接口
|
||||||
|
// Map map = postStatsUrl(getUrl(1), null, supvPlanList);
|
||||||
|
|
||||||
for(SupvPlan supvPlan: supvPlanList){
|
for(SupvPlan supvPlan: supvPlanList){
|
||||||
SupvPlan supvPlanPO = new SupvPlan();
|
SupvPlan supvPlanPO = new SupvPlan();
|
||||||
@@ -220,6 +228,8 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
// 目前一个问题对应一个措施,上送一个问题需要调用问题接口和整改措施接口
|
// 目前一个问题对应一个措施,上送一个问题需要调用问题接口和整改措施接口
|
||||||
|
// Map map = postStatsUrl(getUrl(2), null, supvProblemList);
|
||||||
|
// Map map = postStatsUrl(getUrl(3), null, supvProblemList);
|
||||||
|
|
||||||
for(SupvProblem supvProblem:supvProblemList){
|
for(SupvProblem supvProblem:supvProblemList){
|
||||||
SupvProblem supvProblemPO = new SupvProblem();
|
SupvProblem supvProblemPO = new SupvProblem();
|
||||||
@@ -231,7 +241,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pushFile(List<String> busIds) {
|
public boolean pushFile(List<String> busIds) throws IOException {
|
||||||
LambdaQueryWrapper<SupvFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SupvFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.eq(SupvFile::getBusiId,busIds);
|
lambdaQueryWrapper.eq(SupvFile::getBusiId,busIds);
|
||||||
List<SupvFile> supvFiles = supvFileMapper.selectList(lambdaQueryWrapper);
|
List<SupvFile> supvFiles = supvFileMapper.selectList(lambdaQueryWrapper);
|
||||||
@@ -239,6 +249,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
throw new BusinessException("一次最多上送100条数据");
|
throw new BusinessException("一次最多上送100条数据");
|
||||||
}
|
}
|
||||||
//TODO 调用上送接口
|
//TODO 调用上送接口
|
||||||
|
// Map map = postFileUrl(getUrl(4), null, supvFiles.get(0));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +263,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
throw new BusinessException("一次最多上送100条数据");
|
throw new BusinessException("一次最多上送100条数据");
|
||||||
}
|
}
|
||||||
//TODO 调用上送接口
|
//TODO 调用上送接口
|
||||||
|
// Map map = postStatsUrl(getUrl(5), null, supvReportMList);
|
||||||
|
|
||||||
for(SupvReportM supvReportM : supvReportMList){
|
for(SupvReportM supvReportM : supvReportMList){
|
||||||
SupvReportM supvReportMPO = new SupvReportM();
|
SupvReportM supvReportMPO = new SupvReportM();
|
||||||
@@ -275,7 +286,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
|
// Map map = postStatsUrl(getUrl(6), null, supvPlanList);
|
||||||
|
|
||||||
for(SupvPlan supvPlan : supvPlanList) {
|
for(SupvPlan supvPlan : supvPlanList) {
|
||||||
supvPlan.setIsUploadHead(2);
|
supvPlan.setIsUploadHead(2);
|
||||||
@@ -283,4 +294,139 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用上送提交
|
||||||
|
* @param url
|
||||||
|
* @param token
|
||||||
|
* @param list
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Map postStatsUrl(String url,String token,List<?> list){
|
||||||
|
Map body = new HashMap();
|
||||||
|
Map<String, String> mapHeader = new HashMap<>();
|
||||||
|
mapHeader.put("Content-Type", "application/json; charset=utf-8");
|
||||||
|
mapHeader.put("x-token", token);
|
||||||
|
mapHeader.put("x-date", System.currentTimeMillis() + "");
|
||||||
|
mapHeader.put("x-signature", "123");
|
||||||
|
//设置入参
|
||||||
|
Map<String, Object> mapBody = new HashMap<>();
|
||||||
|
mapBody.put("stats", list);
|
||||||
|
|
||||||
|
ResponseEntity<Map> userEntity = RestTemplateUtil.post(url, mapHeader, mapBody, Map.class, new ArrayList<>());
|
||||||
|
if (userEntity.getStatusCodeValue() == 200) {
|
||||||
|
//获取返回体
|
||||||
|
body = userEntity.getBody();
|
||||||
|
log.info(Thread.currentThread().getName() + "获取返回体 getResourceData:" + body + "结束----!");
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件上送提交
|
||||||
|
* @param url
|
||||||
|
* @param token
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Map postFileUrl(String url,String token,SupvFile supvFile) throws IOException {
|
||||||
|
Map body = new HashMap();
|
||||||
|
Map<String, String> mapHeader = new HashMap<>();
|
||||||
|
mapHeader.put("Content-Type", "multipart/form-data");
|
||||||
|
String path=supvFile.getFileUrl();
|
||||||
|
if(StrUtil.isBlank(path)){
|
||||||
|
throw new BusinessException("获取文件上传路径为空!请检查原始路径是否存在");
|
||||||
|
}
|
||||||
|
String suffix = path.substring(path.lastIndexOf("."));
|
||||||
|
String attachmentName = supvFile.getAttachmentName();
|
||||||
|
if(StrUtil.isNotBlank(attachmentName)){
|
||||||
|
int i = attachmentName.lastIndexOf(".");
|
||||||
|
if(i!=-1){
|
||||||
|
attachmentName = attachmentName.substring(0,i);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
throw new BusinessException("不存在文件,文件名称");
|
||||||
|
}
|
||||||
|
|
||||||
|
InputStream fileStream = fileStorageUtil.getFileStream(path);
|
||||||
|
if(ObjectUtil.isNull(fileStream)){
|
||||||
|
throw new BusinessException("文件服务器,文件不存在");
|
||||||
|
}
|
||||||
|
byte[] fileBytes = IOUtils.toByteArray(fileStream);
|
||||||
|
File files = File.createTempFile(attachmentName, suffix);
|
||||||
|
FileOutputStream stream = new FileOutputStream(files);
|
||||||
|
stream.write(fileBytes);
|
||||||
|
stream.close();
|
||||||
|
|
||||||
|
|
||||||
|
FileSystemResource resource = new FileSystemResource(files);
|
||||||
|
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
|
||||||
|
param.add("uuid", supvFile.getUuid());
|
||||||
|
param.add("file", resource);
|
||||||
|
param.add("attachmentName", supvFile.getAttachmentName());
|
||||||
|
param.add("attachmentType", supvFile.getAttachmentType());
|
||||||
|
param.add("busiId", supvFile.getBusiId());
|
||||||
|
param.add("uploaderName", supvFile.getUploaderName());
|
||||||
|
String uploadTime = supvFile.getUploadTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
param.add("uploadTime", uploadTime);
|
||||||
|
param.add("uploaderId", supvFile.getUploaderId());
|
||||||
|
|
||||||
|
ResponseEntity<Map> userEntity = RestTemplateUtil.post(url, mapHeader, param, Map.class, new ArrayList<>());
|
||||||
|
files.deleteOnExit();
|
||||||
|
if (userEntity.getStatusCodeValue() == 200) {
|
||||||
|
//获取返回体
|
||||||
|
body = userEntity.getBody();
|
||||||
|
log.info(Thread.currentThread().getName() + "获取返回体 getResourceData:" + body + "结束----!");
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据type获取上送地址
|
||||||
|
* @param type
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getUrl(Integer type){
|
||||||
|
String url="http://ip:port";
|
||||||
|
|
||||||
|
switch (type){
|
||||||
|
case 1:
|
||||||
|
/**
|
||||||
|
* 接收电能质量技术监督工作计划数据接口
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/plan/create";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
/**
|
||||||
|
* 接收电能质量技术监督实施问题数据接口
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/problem/create";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
/**
|
||||||
|
* 接收电能质量技术监督实施问题整改数据接口
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/problem/update";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
/**
|
||||||
|
* 总部提供附件接收接口,省公司调用此接口,完成附件上报
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/file/create";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
/**
|
||||||
|
* 接收电能质量技术监督月报统计数据接口
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/monthReport/create";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
/**
|
||||||
|
* 删除电能质量技术监督工作计划接口
|
||||||
|
*/
|
||||||
|
url+="/WMCenter/powerQuality/plan/delete";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user