List.stream().collect(Collectors.groupingBy(e -> e.getZshm() + e.getZszw() + e.getZszt()))
package org.jeecg.modules.quota.xxljob;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.quota.entity.ChuanYuan;
import org.jeecg.modules.quota.entity.ChuanYuanZhengShu;
import org.jeecg.modules.quota.entity.JcYc;
import org.jeecg.modules.quota.entity.SysCertPdf;
import org.jeecg.modules.quota.entity.cnfaidata.DsCyzsxx;
import org.jeecg.modules.quota.entity.cnfaidata.DsYcjbxx;
import org.jeecg.modules.quota.service.*;
import org.jeecg.modules.quota.utils.RequestYxeUtil;
import org.jeecg.modules.system.mapper.SysDictMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 渔船、证书、船员+证书,数据接口同步
*/
@Component
@Slf4j
public class JcYcJobHandler {
private static final String YC_MAX_TIME = "yc_max_time";
private static final String CYZSXX_MAX_TIME = "cyzsxx_max_time";
private static final String CYXX_MAX_TIME = "cyxx_max_time";
@Autowired
private IJcYcService jcYcService;
@Autowired
private IDsYcjbxxService dsYcjbxxService;
@Autowired
private IChuanYuanZhengShuService chuanYuanZhengShuService;
@Autowired
private IDsCyzsxxService dsCyzsxxService;
@Autowired
private SysDictMapper sysDictMapper;
@Autowired
private IChuanYuanService chuanYuanService;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private ISysCertPdfService sysCertPdfService;
@Value(value = "${jeecg.uploadType}")
private String uploadType;
/**
* 基础渔船信息同步
* @return
* @throws ParseException
*/
@XxlJob(value = "ycjbxx")
public ReturnT<String> ycjbxx(String params) throws Exception {
String ycMaxTime = dsYcjbxxService.queryMaxTime();
if (redisTemplate.hasKey(YC_MAX_TIME)) {
String redisYcTime = (String) redisTemplate.opsForValue().get(YC_MAX_TIME);
if (redisYcTime != null && !redisYcTime.equals(ycMaxTime)) {
ArrayList<JcYc> updateList = new ArrayList<>();
ArrayList<JcYc> insertList = new ArrayList<>();
//需要同步的鱼小二 数据
QueryWrapper<DsYcjbxx> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("YCSZDQMC", "苍南县");
List<DsYcjbxx> dsYcjbxxList = dsYcjbxxService.list(queryWrapper);
List<JcYc> jcYcList = jcYcService.list();
Map<String, List<JcYc>> jcYcMap = jcYcList.stream().collect(Collectors.groupingBy(JcYc::getId));
for (DsYcjbxx dsYcjbxx : dsYcjbxxList) {
if (jcYcMap.get(dsYcjbxx.getId()) != null && !jcYcMap.get(dsYcjbxx.getId()).isEmpty()) {
JcYc jcYc = jcYcMap.get(dsYcjbxx.getId()).get(0);
if ("修改记录".equals(dsYcjbxx.getGxcz())) {
// 数据已存在,执行更新操作
jcYc.setYcssd(dsYcjbxx.getYcszdqdm());
jcYc.setCjg(dsYcjbxx.getCjgcn());
jcYc.setZycs(dsYcjbxx.getZycs());
jcYc.setSyzxm(dsYcjbxx.getCbsyrmc());
jcYc.setSyzdz(dsYcjbxx.getCbsyrdz());
jcYc.setSyzdh(dsYcjbxx.getCbsyrdh());
jcYc.setYzbm(dsYcjbxx.getYzbm());
updateList.add(jcYc);
System.out.println("基础渔船信息同步,数据已更新: cm=" + jcYc.getCm());
} else if ("删除记录".equals(dsYcjbxx.getGxcz())) {
jcYc.setDelFlag(1);
updateList.add(jcYc);
System.out.println("基础渔船信息同步,数据已删除: cm=" + jcYc.getCm());
}
} else {
// 数据不存在,执行插入操作
JcYc jcYcNew = new JcYc();
jcYcNew.setSysOrgCode("A01");
jcYcNew.setId(dsYcjbxx.getId());
jcYcNew.setCm(dsYcjbxx.getCm());
jcYcNew.setYcm(dsYcjbxx.getYcm());
jcYcNew.setYcssd(dsYcjbxx.getYcszdqdm());
jcYcNew.setCjg(dsYcjbxx.getCjgcn());
jcYcNew.setZccmc(dsYcjbxx.getZccmc());
jcYcNew.setZccyw(dsYcjbxx.getZccyw());
jcYcNew.setZccdz(dsYcjbxx.getZccdz());
jcYcNew.setZccdzyw(dsYcjbxx.getZccdzyw());
jcYcNew.setCc(dsYcjbxx.getCc());
jcYcNew.setXk(dsYcjbxx.getXk());
jcYcNew.setXs(dsYcjbxx.getXs());
jcYcNew.setZdw(dsYcjbxx.getZdw());
jcYcNew.setJdw(dsYcjbxx.getJdw());
jcYcNew.setZjzgl(dsYcjbxx.getZjzgl());
String ctcz = dsYcjbxx.getCtcz();
if (BeanUtil.isNotEmpty(ctcz)) {
//限额捕捞_渔船管理_船体材质
String valByText = sysDictMapper.getValByText("1682656333384515586", ctcz);
jcYcNew.setCtcz(Integer.valueOf(valByText));
}
String jzwgrq = dsYcjbxx.getJzwgrq();
if (BeanUtil.isNotEmpty(jzwgrq)) {
//String转Date
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(jzwgrq);
jcYcNew.setJzwgrq(date);
}
jcYcNew.setCbhh(dsYcjbxx.getCbhhsbm());
String zylx = dsYcjbxx.getZylx();
if (BeanUtil.isNotEmpty(zylx)) {
//限额捕捞_渔船管理_作业类型
String valByText = sysDictMapper.getValByText("1683404442990235649", zylx);
jcYcNew.setZylx(Integer.valueOf(valByText));
}
jcYcNew.setZyfs(dsYcjbxx.getZyfs());
jcYcNew.setZyfs2(dsYcjbxx.getZyfs2());
jcYcNew.setZycs(dsYcjbxx.getZycs());
jcYcNew.setSyzxm(dsYcjbxx.getCbsyrmc());
jcYcNew.setSyzdz(dsYcjbxx.getCbsyrdz());
jcYcNew.setSyzdh(dsYcjbxx.getCbsyrdh());
jcYcNew.setYzbm(dsYcjbxx.getYzbm());
jcYcNew.setBlxkzbh(dsYcjbxx.getBlxkzbh());
jcYcNew.setCbjyzsbh(dsYcjbxx.getCbjyzsbh());
jcYcNew.setGjdjzsbh(dsYcjbxx.getGjdjzsbh());
jcYcNew.setSyqzsbh(dsYcjbxx.getSyqzsbh());
jcYcNew.setZxdjbh(dsYcjbxx.getZxdjbh());
jcYcNew.setCwpzsbh(dsYcjbxx.getCwgjzbpzsbh());
String cbzl = dsYcjbxx.getCbzl();
if (BeanUtil.isNotEmpty(cbzl)) {//字典
//限额捕捞_渔船管理_渔船种类
String valByText = sysDictMapper.getValByText("1683369911311855617", cbzl);
jcYcNew.setYclx(Integer.valueOf(valByText));
}
jcYcNew.setHh(dsYcjbxx.getHh());
jcYcNew.setJwm(dsYcjbxx.getCbsbm());
jcYcNew.setCmhzsbh(dsYcjbxx.getCmhzsbh());
jcYcNew.setYcbm(dsYcjbxx.getYcbm());
jcYcNew.setDelFlag(0);
jcYcNew.setSfzqybh(dsYcjbxx.getCbsyrsfzhmhqyzch());
jcYcNew.setYcid(dsYcjbxx.getId());
jcYcNew.setYyzzmc(dsYcjbxx.getYyzzmc());
insertList.add(jcYcNew);
System.out.println("基础渔船信息同步,数据已新增: cm=" + jcYcNew.getCm());
}
}
jcYcService.updateBatchById(updateList);
jcYcService.saveBatch(insertList);
redisTemplate.opsForValue().set(YC_MAX_TIME, ycMaxTime);
//更新渔船照片
List<JcYc> list = jcYcService.list();
for (JcYc jcYc : list) {
ArrayList<SysCertPdf> sysCertPdfs = RequestYxeUtil.xeblCertificate(jcYc.getCm(), jcYc.getYcid(), uploadType);
for (SysCertPdf sysCertPdf : sysCertPdfs) {
SysCertPdf sysCertPdfOld = sysCertPdfService.getFileNameByValue(sysCertPdf.getModelName(), sysCertPdf.getCertId());
if (BeanUtil.isNotEmpty(sysCertPdfOld)){
BeanUtil.copyProperties(sysCertPdf,sysCertPdfOld,"id");
sysCertPdfService.updateById(sysCertPdfOld);
}else {
sysCertPdfService.save(sysCertPdf);
}
}
}
}
} else {
redisTemplate.opsForValue().set(YC_MAX_TIME, ycMaxTime);
}
return ReturnT.SUCCESS;
}
/**
* 船员证书信息数据同步
* @return
*/
@XxlJob(value = "cyzsxx")
public ReturnT<String> cyzsxx(String params) {
String cyszxxMaxTime = dsCyzsxxService.queryMaxTime();
if (redisTemplate.hasKey(CYZSXX_MAX_TIME)) {
String redisCyzsxxTime = (String) redisTemplate.opsForValue().get(CYZSXX_MAX_TIME);
if (redisCyzsxxTime != null && !redisCyzsxxTime.equals(cyszxxMaxTime)) {
ArrayList<ChuanYuanZhengShu> updateList = new ArrayList<>();
ArrayList<ChuanYuanZhengShu> insertList = new ArrayList<>();
//鱼小二船员证书表
List<DsCyzsxx> dsCyzsxxList = dsCyzsxxService.list();
//本项目船员证书表
List<ChuanYuanZhengShu> chuanYuanZhengShuList = chuanYuanZhengShuService.list();
//将本项目船员证书表数据通过证书号码证书职务证书状态进行分组
Map<String, List<ChuanYuanZhengShu>> chuanYuanZhengShuMap = chuanYuanZhengShuList.stream().collect(Collectors.groupingBy(e -> e.getZshm() + e.getZszw() + e.getZszt()));
for (DsCyzsxx dsCyzsxx : dsCyzsxxList) {
if (chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()) != null && !chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()).isEmpty()) {
ChuanYuanZhengShu chuanYuanZhengShu = chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()).get(0);
// 更新操作
updateList.add(chuanYuanZhengShu);
System.out.println("船员证书信息数据同步,数据已更新: zshm=" + chuanYuanZhengShu.getZshm());
} else {
// 新增操作
// 数据不存在,执行插入操作
ChuanYuanZhengShu cyzsNew = new ChuanYuanZhengShu();
cyzsNew.setSysOrgCode("A01");
cyzsNew.setSfzhm(dsCyzsxx.getSfzhm());
cyzsNew.setXm(dsCyzsxx.getXm());
cyzsNew.setXmpy(dsCyzsxx.getXmpy());
cyzsNew.setXb(dsCyzsxx.getXb());
cyzsNew.setCsrq(dsCyzsxx.getCsrq());
cyzsNew.setHjsf(dsCyzsxx.getHjsf());
cyzsNew.setHjcs(dsCyzsxx.getHjcs());
cyzsNew.setHjdz(dsCyzsxx.getHjdz());
cyzsNew.setZslx(dsCyzsxx.getZslx());
cyzsNew.setLbdm(dsCyzsxx.getLbdm());
cyzsNew.setZszldm(dsCyzsxx.getZszldm());
cyzsNew.setZsdj(dsCyzsxx.getZsdj());
cyzsNew.setZszw(dsCyzsxx.getZszw());
cyzsNew.setSycb(dsCyzsxx.getSycb());
cyzsNew.setZshm(dsCyzsxx.getZshm());
cyzsNew.setQfjg(dsCyzsxx.getQfjg());
cyzsNew.setQfgyxm(dsCyzsxx.getQfgyxm());
cyzsNew.setQfrq(dsCyzsxx.getQfrq());
cyzsNew.setDyrq(dsCyzsxx.getQfrq());
cyzsNew.setJzrq(dsCyzsxx.getJzrq());
cyzsNew.setZszt(dsCyzsxx.getZszt());
cyzsNew.setDahm(dsCyzsxx.getDahm());
insertList.add(cyzsNew);
System.out.println("船员证书信息数据同步,数据已新增: zshm=" + cyzsNew.getZshm());
}
}
chuanYuanZhengShuService.updateBatchById(updateList);
chuanYuanZhengShuService.saveOrUpdateBatch(insertList);
redisTemplate.opsForValue().set(CYZSXX_MAX_TIME, cyszxxMaxTime);
}
} else {
redisTemplate.opsForValue().set(CYZSXX_MAX_TIME, cyszxxMaxTime);
}
return ReturnT.SUCCESS;
}
/**
* 船员信息同步
* @return
*/
@XxlJob(value = "cyxx")
public ReturnT<String> cyxx(String params) throws Exception {
String cyxxMaxTime = dsCyzsxxService.queryMaxTime();
if (redisTemplate.hasKey(CYXX_MAX_TIME)) {
String redisCyxxTime = (String) redisTemplate.opsForValue().get(CYXX_MAX_TIME);
if (redisCyxxTime != null && !redisCyxxTime.equals(cyxxMaxTime)) {
ArrayList<ChuanYuan> updateList = new ArrayList<>();
ArrayList<ChuanYuan> insertList = new ArrayList<>();
QueryWrapper<DsCyzsxx> queryWrapperCy = new QueryWrapper<>();
queryWrapperCy.groupBy("SFZHM");
//鱼小二证书数据
List<DsCyzsxx> dsYcjbxxesCy = dsCyzsxxService.list(queryWrapperCy);
//船员数据
List<ChuanYuan> chuanYuanList = chuanYuanService.list();
Map<String, List<ChuanYuan>> ycMap = chuanYuanList.stream().collect(Collectors.groupingBy(ChuanYuan::getSfzhm));
for (DsCyzsxx cyzsxx : dsYcjbxxesCy) {
if (ycMap.get(cyzsxx.getSfzhm()) != null && !ycMap.get(cyzsxx.getSfzhm()).isEmpty()) {
ChuanYuan chuanYuan = ycMap.get(cyzsxx.getSfzhm()).get(0);
// 更新操作
chuanYuan.setYxbz(cyzsxx.getZszt());
updateList.add(chuanYuan);
System.out.println("船员信息数据同步,数据已更新: sfzhm=" + chuanYuan.getSfzhm());
} else {
ChuanYuan cyNew = new ChuanYuan();
cyNew.setSysOrgCode("A01");
cyNew.setSfzhm(cyzsxx.getSfzhm());
cyNew.setXm(cyzsxx.getXm());
cyNew.setXmpy(cyzsxx.getXmpy());
cyNew.setXb(cyzsxx.getXb());
cyNew.setCsrq(cyzsxx.getCsrq());
cyNew.setHjsf(cyzsxx.getHjsf());
cyNew.setHjcs(cyzsxx.getHjcs());
cyNew.setHjqx(cyzsxx.getHjxq());
cyNew.setHjdz(cyzsxx.getHjdz());
cyNew.setYxbz(cyzsxx.getZszt());
insertList.add(cyNew);
System.out.println("船员证书信息数据同步,数据已新增: zshm=" + cyNew.getSfzhm());
}
}
chuanYuanService.updateBatchById(updateList);
chuanYuanService.saveOrUpdateBatch(insertList);
redisTemplate.opsForValue().set(CYXX_MAX_TIME, cyxxMaxTime);
//一网通办获取token同步船员照片等
List<ChuanYuan> list = chuanYuanService.list();
for (ChuanYuan chuanYuan : list) {
SysCertPdf sysCertPdf = RequestYxeUtil.xeblCyzp(chuanYuan.getSfzhm(), uploadType);
if (BeanUtil.isNotEmpty(sysCertPdf)) {
SysCertPdf sysCertPdfOld = sysCertPdfService.getFileNameByValue(sysCertPdf.getModelName(), sysCertPdf.getCertId());
if (BeanUtil.isNotEmpty(sysCertPdfOld)){
BeanUtil.copyProperties(sysCertPdf,sysCertPdfOld,"id");
sysCertPdfService.updateById(sysCertPdfOld);
}else {
sysCertPdfService.save(sysCertPdf);
}
}
}
}
} else {
redisTemplate.opsForValue().set(CYXX_MAX_TIME, cyxxMaxTime);
}
return ReturnT.SUCCESS;
}
}
package org.jeecg.modules.quota.utils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.MinioUtil;
import org.jeecg.common.util.ZOSUtil;
import org.jeecg.modules.quota.controller.DataSynchronismController;
import org.jeecg.modules.quota.entity.SysCertPdf;
import org.jeecg.modules.quota.service.ISysCertPdfService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Author leitao
* @Date 2023/9/21 15:28
* @description: 请求鱼小二工具类
* @Title: RequestYxeUtil
* @Package org.jeecg.modules.quota.utils
*/
public class RequestYxeUtil {
// private static final String token_url = "http://2xx.x.xx.xx3:xx99/cnfai/oauth/token?clientId=2c9fb2a67c642bd2017c642bd21c0000&clientSecret=6ab3e8291b9af57c7ac4457bc60e0d2e0b08a8b9828c6e9d86250458b4de51bf82d9604abeb987d3";
//token(线上)鱼小二
private static final String token_url = "http://2xx.x.xx.xx3:xx99/cnfai/oauth/token?clientId=2c9fb2a67c642bd2017c642bd21c0000&clientSecret=6ab3e8291b9af57c7ac4457bc60e0d2e0b08a8b9828c6e9d86250458b4de51bf82d9604abeb987d3";
//鱼小二获取渔船照片证据
private static final String XeblCertificate_url = "http://2xx.x.xx.xx3:xx99/cnfai/services/certificateApi/XeblCertificate";
//token(一网通办)
private static final String XeblCyzp_token_url = "http://2xx.x.xx.xx3:xx99/cnfai//oauth/token";
//获取船员照片
private static final String XeblCyzp_url = "http://2xx.x.xx.xx3:xx99/cnfai//services/CyService/getCyPhoto";
/**
* 限额捕捞获取渔船证书
*
* @param cm
* @param ycid
* @throws IOException
*/
public static ArrayList<SysCertPdf> xeblCertificate(String cm, String ycid, String uploadType) throws Exception {
ArrayList<SysCertPdf> sysCertPdfs = new ArrayList<>();
String requestResult = HttpRequest.post(token_url).execute().body();
JSONObject jsonResult = JSONUtil.parseObj(requestResult);
String code = jsonResult.getStr("code");
if ("0".equals(code)) {
String result = jsonResult.getStr("result");
JSONObject resultJson = JSONUtil.parseObj(result);
String accessToken = resultJson.getStr("accessToken");
//限额捕捞获取渔船证书
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("shipName", cm);
paramMap.put("shipInfoId", ycid);
String xeblCertificateResult = HttpRequest.post(XeblCertificate_url)
.header("X-Access-Token", accessToken)
.body(JSONUtil.toJsonPrettyStr(paramMap)).execute().body();
JSONObject jsonObject = JSONUtil.parseObj(xeblCertificateResult);
String code1 = jsonObject.getStr("code");
if ("200".equals(code1)) {
//将result转成JSONObject
JSONObject json_result = jsonObject.getJSONObject("result");
Map<String, Object> map = JSONUtil.parseObj(json_result);
Map<String, SysCertPdf> sysCertPdfMap = new HashMap<>();
Object pngCert = map.get("pngCert");
if (pngCert instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) pngCert;
for (Object o : jsonArray) {
Map<String, Object> pngCertMap = (Map<String, Object>) o;
for (String value : pngCertMap.keySet()) {
SysCertPdf sysCertPdf = new SysCertPdf();
String base64 = (String) pngCertMap.get(value);
MultipartFile pngMultipartFile = Base64ToMultipartFileConverter.convert(base64, ycid + ".png");
uploadFile(pngMultipartFile, value, "png", ycid, uploadType, sysCertPdf);
sysCertPdfMap.put(value, sysCertPdf);
}
}
}
Object pdfCert = map.get("pdfCert");
if (pdfCert instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) pdfCert;
for (Object o : jsonArray) {
Map<String, Object> pngCertMap = (Map<String, Object>) o;
for (String value : pngCertMap.keySet()) {
String base64 = (String) pngCertMap.get(value);
MultipartFile pdfMultipartFile = Base64ToMultipartFileConverter.convert(base64, ycid + ".pdf");
uploadFile(pdfMultipartFile, value, "pdf", ycid, uploadType, sysCertPdfMap.get(value));
}
}
}
for (String s : sysCertPdfMap.keySet()) {
sysCertPdfs.add(sysCertPdfMap.get(s));
}
}
}
return sysCertPdfs;
}
/**
* 将文件上传到服务器
*
* @param multipartFile
* @param value
* @param type
* @param ycid
* @param uploadType
* @param sysCertPdf
* @return
* @throws Exception
*/
public static SysCertPdf uploadFile(MultipartFile multipartFile, String value, String type, String ycid, String uploadType, SysCertPdf sysCertPdf) throws Exception {
String bizPath = "pdfCert" + "/" + value;
String fileUrl = " ";
if ("png".equals(type)) {
if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
fileUrl = MinioUtil.upload(multipartFile, bizPath);
fileUrl = fileUrl.substring(1, fileUrl.length());
//保存文件信息
// 获取文件名
sysCertPdf.setModelName(value);
sysCertPdf.setPngPath(fileUrl);
sysCertPdf.setCertId(ycid);
sysCertPdf.setCertType(1);
sysCertPdf.setDeleted(0);
return sysCertPdf;
} else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
fileUrl = ZOSUtil.upload(multipartFile, bizPath);
sysCertPdf.setModelName(value);
sysCertPdf.setPngPath(fileUrl);
sysCertPdf.setCertId(ycid);
sysCertPdf.setCertType(1);
sysCertPdf.setDeleted(0);
return sysCertPdf;
}
} else if ("pdf".equals(type)) {
if (BeanUtil.isNotEmpty(sysCertPdf)) {
if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
fileUrl = MinioUtil.upload(multipartFile, bizPath);
//保存文件信息
// 获取文件名
sysCertPdf.setPdfPath(fileUrl);
return sysCertPdf;
} else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
fileUrl = ZOSUtil.upload(multipartFile, bizPath);
sysCertPdf.setPdfPath(fileUrl);
return sysCertPdf;
}
}
}
return null;
}
/**
* 将文件保存到本地
*
* @param file
* @param type
* @param value
* @param ycid
* @throws IOException
*/
public static void saveFileToLocal(MultipartFile file, String type, String value, String ycid) throws IOException {
String fileName = file.getOriginalFilename();
String filePath = "E:\\workspace\\" + fileName + "." + type;
String filePath1 = "E:\\workspace\\" + "pdfCert" + "/" + value + "/" + ycid + "." + type;
File localFile = new File(filePath1);
// 文件名
if (!localFile.getParentFile().exists()) {
localFile.getParentFile().mkdirs();// 新建目录
}
file.transferTo(localFile);
}
/**
* 根据船只身份证查询照片
*
* @param sfzhm
* @param uploadType
* @return
*/
public static SysCertPdf xeblCyzp(String sfzhm, String uploadType) throws Exception {
//
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("clientId", "402881fXXXXXXXXXXc27e00001");
paramMap.put("clientSecret", "482978cf5bcb08bc51dcec5b680ccXXXXXXXXXXXXXXXXXXXfc894ccff5ff54ceef53cfde562");
String requestResult = HttpRequest.post(XeblCyzp_token_url).form(paramMap)
.execute().body();
JSONObject jsonResult = JSONUtil.parseObj(requestResult);
String code = jsonResult.getStr("code");
if ("0".equals(code)) {
String result = jsonResult.getStr("result");
JSONObject resultJson = JSONUtil.parseObj(result);
String accessToken = resultJson.getStr("accessToken");
String[] str = new String[]{sfzhm};
String xeblCyzpUrlResult = HttpRequest.post(XeblCyzp_url)
.header("X-Access-Token", accessToken)
.body(Arrays.toString(str)).execute().body();
JSONObject jsonObject = JSONUtil.parseObj(xeblCyzpUrlResult);
String code1 = jsonObject.getStr("code");
if ("200".equals(code1)) {
String str_result = jsonObject.getStr("result");
Map<String, String> collect = Arrays.stream(str_result.split(",")).collect(Collectors.toMap((e -> e.split(":")[0]), (e -> e.split(":")[1])));
StringBuilder stringBuilder = new StringBuilder();
StringBuilder append = stringBuilder.append("[{\"").append(sfzhm).append("\"");
String sfzhmBase64 = collect.get(append.toString());
String substring = sfzhmBase64.substring(1,sfzhmBase64.length()-3);
MultipartFile jpgMultipartFile = Base64ToMultipartFileConverter.convert(substring, sfzhm + ".jpg");
return uploadCyPhoto(jpgMultipartFile, sfzhm, uploadType);
}
}
return null;
}
/**
* 上传船员照片
* @param jpgMultipartFile
* @param sfzhm
* @param uploadType
* @return
* @throws Exception
*/
private static SysCertPdf uploadCyPhoto(MultipartFile jpgMultipartFile, String sfzhm, String uploadType) throws Exception {
String bizPath = "cyPhoto";
String fileUrl = " ";
SysCertPdf sysCertPdf = new SysCertPdf();
if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
fileUrl = MinioUtil.upload(jpgMultipartFile, bizPath);
fileUrl = fileUrl.substring(1);
//保存文件信息
// 获取文件名
sysCertPdf.setModelName("cyPhoto");
sysCertPdf.setPngPath(fileUrl);
sysCertPdf.setCertId(sfzhm);
sysCertPdf.setCertType(2);
sysCertPdf.setDeleted(0);
return sysCertPdf;
}else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
fileUrl = ZOSUtil.upload(jpgMultipartFile, bizPath);
sysCertPdf.setModelName("cyPhoto");
sysCertPdf.setPngPath(fileUrl);
sysCertPdf.setCertId(sfzhm);
sysCertPdf.setCertType(2);
sysCertPdf.setDeleted(0);
return sysCertPdf;
}
return null;
}
}