• Collectors.groupingBy()


    List.stream().collect(Collectors.groupingBy(e -> e.getZshm() + e.getZszw() + e.getZszt()))

     

    1. package org.jeecg.modules.quota.xxljob;
    2. import cn.hutool.core.bean.BeanUtil;
    3. import cn.hutool.http.HttpRequest;
    4. import cn.hutool.json.JSONObject;
    5. import cn.hutool.json.JSONUtil;
    6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    7. import com.xxl.job.core.biz.model.ReturnT;
    8. import com.xxl.job.core.handler.annotation.XxlJob;
    9. import lombok.extern.slf4j.Slf4j;
    10. import org.jeecg.common.api.vo.Result;
    11. import org.jeecg.modules.quota.entity.ChuanYuan;
    12. import org.jeecg.modules.quota.entity.ChuanYuanZhengShu;
    13. import org.jeecg.modules.quota.entity.JcYc;
    14. import org.jeecg.modules.quota.entity.SysCertPdf;
    15. import org.jeecg.modules.quota.entity.cnfaidata.DsCyzsxx;
    16. import org.jeecg.modules.quota.entity.cnfaidata.DsYcjbxx;
    17. import org.jeecg.modules.quota.service.*;
    18. import org.jeecg.modules.quota.utils.RequestYxeUtil;
    19. import org.jeecg.modules.system.mapper.SysDictMapper;
    20. import org.springframework.beans.factory.annotation.Autowired;
    21. import org.springframework.beans.factory.annotation.Value;
    22. import org.springframework.data.redis.core.RedisTemplate;
    23. import org.springframework.stereotype.Component;
    24. import org.springframework.web.bind.annotation.GetMapping;
    25. import java.text.ParseException;
    26. import java.text.SimpleDateFormat;
    27. import java.util.*;
    28. import java.util.stream.Collectors;
    29. /**
    30. * 渔船、证书、船员+证书,数据接口同步
    31. */
    32. @Component
    33. @Slf4j
    34. public class JcYcJobHandler {
    35. private static final String YC_MAX_TIME = "yc_max_time";
    36. private static final String CYZSXX_MAX_TIME = "cyzsxx_max_time";
    37. private static final String CYXX_MAX_TIME = "cyxx_max_time";
    38. @Autowired
    39. private IJcYcService jcYcService;
    40. @Autowired
    41. private IDsYcjbxxService dsYcjbxxService;
    42. @Autowired
    43. private IChuanYuanZhengShuService chuanYuanZhengShuService;
    44. @Autowired
    45. private IDsCyzsxxService dsCyzsxxService;
    46. @Autowired
    47. private SysDictMapper sysDictMapper;
    48. @Autowired
    49. private IChuanYuanService chuanYuanService;
    50. @Autowired
    51. private RedisTemplate redisTemplate;
    52. @Autowired
    53. private ISysCertPdfService sysCertPdfService;
    54. @Value(value = "${jeecg.uploadType}")
    55. private String uploadType;
    56. /**
    57. * 基础渔船信息同步
    58. * @return
    59. * @throws ParseException
    60. */
    61. @XxlJob(value = "ycjbxx")
    62. public ReturnT ycjbxx(String params) throws Exception {
    63. String ycMaxTime = dsYcjbxxService.queryMaxTime();
    64. if (redisTemplate.hasKey(YC_MAX_TIME)) {
    65. String redisYcTime = (String) redisTemplate.opsForValue().get(YC_MAX_TIME);
    66. if (redisYcTime != null && !redisYcTime.equals(ycMaxTime)) {
    67. ArrayList updateList = new ArrayList<>();
    68. ArrayList insertList = new ArrayList<>();
    69. //需要同步的鱼小二 数据
    70. QueryWrapper queryWrapper = new QueryWrapper<>();
    71. queryWrapper.eq("YCSZDQMC", "苍南县");
    72. List dsYcjbxxList = dsYcjbxxService.list(queryWrapper);
    73. List jcYcList = jcYcService.list();
    74. Map> jcYcMap = jcYcList.stream().collect(Collectors.groupingBy(JcYc::getId));
    75. for (DsYcjbxx dsYcjbxx : dsYcjbxxList) {
    76. if (jcYcMap.get(dsYcjbxx.getId()) != null && !jcYcMap.get(dsYcjbxx.getId()).isEmpty()) {
    77. JcYc jcYc = jcYcMap.get(dsYcjbxx.getId()).get(0);
    78. if ("修改记录".equals(dsYcjbxx.getGxcz())) {
    79. // 数据已存在,执行更新操作
    80. jcYc.setYcssd(dsYcjbxx.getYcszdqdm());
    81. jcYc.setCjg(dsYcjbxx.getCjgcn());
    82. jcYc.setZycs(dsYcjbxx.getZycs());
    83. jcYc.setSyzxm(dsYcjbxx.getCbsyrmc());
    84. jcYc.setSyzdz(dsYcjbxx.getCbsyrdz());
    85. jcYc.setSyzdh(dsYcjbxx.getCbsyrdh());
    86. jcYc.setYzbm(dsYcjbxx.getYzbm());
    87. updateList.add(jcYc);
    88. System.out.println("基础渔船信息同步,数据已更新: cm=" + jcYc.getCm());
    89. } else if ("删除记录".equals(dsYcjbxx.getGxcz())) {
    90. jcYc.setDelFlag(1);
    91. updateList.add(jcYc);
    92. System.out.println("基础渔船信息同步,数据已删除: cm=" + jcYc.getCm());
    93. }
    94. } else {
    95. // 数据不存在,执行插入操作
    96. JcYc jcYcNew = new JcYc();
    97. jcYcNew.setSysOrgCode("A01");
    98. jcYcNew.setId(dsYcjbxx.getId());
    99. jcYcNew.setCm(dsYcjbxx.getCm());
    100. jcYcNew.setYcm(dsYcjbxx.getYcm());
    101. jcYcNew.setYcssd(dsYcjbxx.getYcszdqdm());
    102. jcYcNew.setCjg(dsYcjbxx.getCjgcn());
    103. jcYcNew.setZccmc(dsYcjbxx.getZccmc());
    104. jcYcNew.setZccyw(dsYcjbxx.getZccyw());
    105. jcYcNew.setZccdz(dsYcjbxx.getZccdz());
    106. jcYcNew.setZccdzyw(dsYcjbxx.getZccdzyw());
    107. jcYcNew.setCc(dsYcjbxx.getCc());
    108. jcYcNew.setXk(dsYcjbxx.getXk());
    109. jcYcNew.setXs(dsYcjbxx.getXs());
    110. jcYcNew.setZdw(dsYcjbxx.getZdw());
    111. jcYcNew.setJdw(dsYcjbxx.getJdw());
    112. jcYcNew.setZjzgl(dsYcjbxx.getZjzgl());
    113. String ctcz = dsYcjbxx.getCtcz();
    114. if (BeanUtil.isNotEmpty(ctcz)) {
    115. //限额捕捞_渔船管理_船体材质
    116. String valByText = sysDictMapper.getValByText("1682656333384515586", ctcz);
    117. jcYcNew.setCtcz(Integer.valueOf(valByText));
    118. }
    119. String jzwgrq = dsYcjbxx.getJzwgrq();
    120. if (BeanUtil.isNotEmpty(jzwgrq)) {
    121. //String转Date
    122. Date date = new SimpleDateFormat("yyyy-MM-dd").parse(jzwgrq);
    123. jcYcNew.setJzwgrq(date);
    124. }
    125. jcYcNew.setCbhh(dsYcjbxx.getCbhhsbm());
    126. String zylx = dsYcjbxx.getZylx();
    127. if (BeanUtil.isNotEmpty(zylx)) {
    128. //限额捕捞_渔船管理_作业类型
    129. String valByText = sysDictMapper.getValByText("1683404442990235649", zylx);
    130. jcYcNew.setZylx(Integer.valueOf(valByText));
    131. }
    132. jcYcNew.setZyfs(dsYcjbxx.getZyfs());
    133. jcYcNew.setZyfs2(dsYcjbxx.getZyfs2());
    134. jcYcNew.setZycs(dsYcjbxx.getZycs());
    135. jcYcNew.setSyzxm(dsYcjbxx.getCbsyrmc());
    136. jcYcNew.setSyzdz(dsYcjbxx.getCbsyrdz());
    137. jcYcNew.setSyzdh(dsYcjbxx.getCbsyrdh());
    138. jcYcNew.setYzbm(dsYcjbxx.getYzbm());
    139. jcYcNew.setBlxkzbh(dsYcjbxx.getBlxkzbh());
    140. jcYcNew.setCbjyzsbh(dsYcjbxx.getCbjyzsbh());
    141. jcYcNew.setGjdjzsbh(dsYcjbxx.getGjdjzsbh());
    142. jcYcNew.setSyqzsbh(dsYcjbxx.getSyqzsbh());
    143. jcYcNew.setZxdjbh(dsYcjbxx.getZxdjbh());
    144. jcYcNew.setCwpzsbh(dsYcjbxx.getCwgjzbpzsbh());
    145. String cbzl = dsYcjbxx.getCbzl();
    146. if (BeanUtil.isNotEmpty(cbzl)) {//字典
    147. //限额捕捞_渔船管理_渔船种类
    148. String valByText = sysDictMapper.getValByText("1683369911311855617", cbzl);
    149. jcYcNew.setYclx(Integer.valueOf(valByText));
    150. }
    151. jcYcNew.setHh(dsYcjbxx.getHh());
    152. jcYcNew.setJwm(dsYcjbxx.getCbsbm());
    153. jcYcNew.setCmhzsbh(dsYcjbxx.getCmhzsbh());
    154. jcYcNew.setYcbm(dsYcjbxx.getYcbm());
    155. jcYcNew.setDelFlag(0);
    156. jcYcNew.setSfzqybh(dsYcjbxx.getCbsyrsfzhmhqyzch());
    157. jcYcNew.setYcid(dsYcjbxx.getId());
    158. jcYcNew.setYyzzmc(dsYcjbxx.getYyzzmc());
    159. insertList.add(jcYcNew);
    160. System.out.println("基础渔船信息同步,数据已新增: cm=" + jcYcNew.getCm());
    161. }
    162. }
    163. jcYcService.updateBatchById(updateList);
    164. jcYcService.saveBatch(insertList);
    165. redisTemplate.opsForValue().set(YC_MAX_TIME, ycMaxTime);
    166. //更新渔船照片
    167. List list = jcYcService.list();
    168. for (JcYc jcYc : list) {
    169. ArrayList sysCertPdfs = RequestYxeUtil.xeblCertificate(jcYc.getCm(), jcYc.getYcid(), uploadType);
    170. for (SysCertPdf sysCertPdf : sysCertPdfs) {
    171. SysCertPdf sysCertPdfOld = sysCertPdfService.getFileNameByValue(sysCertPdf.getModelName(), sysCertPdf.getCertId());
    172. if (BeanUtil.isNotEmpty(sysCertPdfOld)){
    173. BeanUtil.copyProperties(sysCertPdf,sysCertPdfOld,"id");
    174. sysCertPdfService.updateById(sysCertPdfOld);
    175. }else {
    176. sysCertPdfService.save(sysCertPdf);
    177. }
    178. }
    179. }
    180. }
    181. } else {
    182. redisTemplate.opsForValue().set(YC_MAX_TIME, ycMaxTime);
    183. }
    184. return ReturnT.SUCCESS;
    185. }
    186. /**
    187. * 船员证书信息数据同步
    188. * @return
    189. */
    190. @XxlJob(value = "cyzsxx")
    191. public ReturnT cyzsxx(String params) {
    192. String cyszxxMaxTime = dsCyzsxxService.queryMaxTime();
    193. if (redisTemplate.hasKey(CYZSXX_MAX_TIME)) {
    194. String redisCyzsxxTime = (String) redisTemplate.opsForValue().get(CYZSXX_MAX_TIME);
    195. if (redisCyzsxxTime != null && !redisCyzsxxTime.equals(cyszxxMaxTime)) {
    196. ArrayList updateList = new ArrayList<>();
    197. ArrayList insertList = new ArrayList<>();
    198. //鱼小二船员证书表
    199. List dsCyzsxxList = dsCyzsxxService.list();
    200. //本项目船员证书表
    201. List chuanYuanZhengShuList = chuanYuanZhengShuService.list();
    202. //将本项目船员证书表数据通过证书号码证书职务证书状态进行分组
    203. Map> chuanYuanZhengShuMap = chuanYuanZhengShuList.stream().collect(Collectors.groupingBy(e -> e.getZshm() + e.getZszw() + e.getZszt()));
    204. for (DsCyzsxx dsCyzsxx : dsCyzsxxList) {
    205. if (chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()) != null && !chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()).isEmpty()) {
    206. ChuanYuanZhengShu chuanYuanZhengShu = chuanYuanZhengShuMap.get(dsCyzsxx.getZshm() + dsCyzsxx.getZszw() + dsCyzsxx.getZszt()).get(0);
    207. // 更新操作
    208. updateList.add(chuanYuanZhengShu);
    209. System.out.println("船员证书信息数据同步,数据已更新: zshm=" + chuanYuanZhengShu.getZshm());
    210. } else {
    211. // 新增操作
    212. // 数据不存在,执行插入操作
    213. ChuanYuanZhengShu cyzsNew = new ChuanYuanZhengShu();
    214. cyzsNew.setSysOrgCode("A01");
    215. cyzsNew.setSfzhm(dsCyzsxx.getSfzhm());
    216. cyzsNew.setXm(dsCyzsxx.getXm());
    217. cyzsNew.setXmpy(dsCyzsxx.getXmpy());
    218. cyzsNew.setXb(dsCyzsxx.getXb());
    219. cyzsNew.setCsrq(dsCyzsxx.getCsrq());
    220. cyzsNew.setHjsf(dsCyzsxx.getHjsf());
    221. cyzsNew.setHjcs(dsCyzsxx.getHjcs());
    222. cyzsNew.setHjdz(dsCyzsxx.getHjdz());
    223. cyzsNew.setZslx(dsCyzsxx.getZslx());
    224. cyzsNew.setLbdm(dsCyzsxx.getLbdm());
    225. cyzsNew.setZszldm(dsCyzsxx.getZszldm());
    226. cyzsNew.setZsdj(dsCyzsxx.getZsdj());
    227. cyzsNew.setZszw(dsCyzsxx.getZszw());
    228. cyzsNew.setSycb(dsCyzsxx.getSycb());
    229. cyzsNew.setZshm(dsCyzsxx.getZshm());
    230. cyzsNew.setQfjg(dsCyzsxx.getQfjg());
    231. cyzsNew.setQfgyxm(dsCyzsxx.getQfgyxm());
    232. cyzsNew.setQfrq(dsCyzsxx.getQfrq());
    233. cyzsNew.setDyrq(dsCyzsxx.getQfrq());
    234. cyzsNew.setJzrq(dsCyzsxx.getJzrq());
    235. cyzsNew.setZszt(dsCyzsxx.getZszt());
    236. cyzsNew.setDahm(dsCyzsxx.getDahm());
    237. insertList.add(cyzsNew);
    238. System.out.println("船员证书信息数据同步,数据已新增: zshm=" + cyzsNew.getZshm());
    239. }
    240. }
    241. chuanYuanZhengShuService.updateBatchById(updateList);
    242. chuanYuanZhengShuService.saveOrUpdateBatch(insertList);
    243. redisTemplate.opsForValue().set(CYZSXX_MAX_TIME, cyszxxMaxTime);
    244. }
    245. } else {
    246. redisTemplate.opsForValue().set(CYZSXX_MAX_TIME, cyszxxMaxTime);
    247. }
    248. return ReturnT.SUCCESS;
    249. }
    250. /**
    251. * 船员信息同步
    252. * @return
    253. */
    254. @XxlJob(value = "cyxx")
    255. public ReturnT cyxx(String params) throws Exception {
    256. String cyxxMaxTime = dsCyzsxxService.queryMaxTime();
    257. if (redisTemplate.hasKey(CYXX_MAX_TIME)) {
    258. String redisCyxxTime = (String) redisTemplate.opsForValue().get(CYXX_MAX_TIME);
    259. if (redisCyxxTime != null && !redisCyxxTime.equals(cyxxMaxTime)) {
    260. ArrayList updateList = new ArrayList<>();
    261. ArrayList insertList = new ArrayList<>();
    262. QueryWrapper queryWrapperCy = new QueryWrapper<>();
    263. queryWrapperCy.groupBy("SFZHM");
    264. //鱼小二证书数据
    265. List dsYcjbxxesCy = dsCyzsxxService.list(queryWrapperCy);
    266. //船员数据
    267. List chuanYuanList = chuanYuanService.list();
    268. Map> ycMap = chuanYuanList.stream().collect(Collectors.groupingBy(ChuanYuan::getSfzhm));
    269. for (DsCyzsxx cyzsxx : dsYcjbxxesCy) {
    270. if (ycMap.get(cyzsxx.getSfzhm()) != null && !ycMap.get(cyzsxx.getSfzhm()).isEmpty()) {
    271. ChuanYuan chuanYuan = ycMap.get(cyzsxx.getSfzhm()).get(0);
    272. // 更新操作
    273. chuanYuan.setYxbz(cyzsxx.getZszt());
    274. updateList.add(chuanYuan);
    275. System.out.println("船员信息数据同步,数据已更新: sfzhm=" + chuanYuan.getSfzhm());
    276. } else {
    277. ChuanYuan cyNew = new ChuanYuan();
    278. cyNew.setSysOrgCode("A01");
    279. cyNew.setSfzhm(cyzsxx.getSfzhm());
    280. cyNew.setXm(cyzsxx.getXm());
    281. cyNew.setXmpy(cyzsxx.getXmpy());
    282. cyNew.setXb(cyzsxx.getXb());
    283. cyNew.setCsrq(cyzsxx.getCsrq());
    284. cyNew.setHjsf(cyzsxx.getHjsf());
    285. cyNew.setHjcs(cyzsxx.getHjcs());
    286. cyNew.setHjqx(cyzsxx.getHjxq());
    287. cyNew.setHjdz(cyzsxx.getHjdz());
    288. cyNew.setYxbz(cyzsxx.getZszt());
    289. insertList.add(cyNew);
    290. System.out.println("船员证书信息数据同步,数据已新增: zshm=" + cyNew.getSfzhm());
    291. }
    292. }
    293. chuanYuanService.updateBatchById(updateList);
    294. chuanYuanService.saveOrUpdateBatch(insertList);
    295. redisTemplate.opsForValue().set(CYXX_MAX_TIME, cyxxMaxTime);
    296. //一网通办获取token同步船员照片等
    297. List list = chuanYuanService.list();
    298. for (ChuanYuan chuanYuan : list) {
    299. SysCertPdf sysCertPdf = RequestYxeUtil.xeblCyzp(chuanYuan.getSfzhm(), uploadType);
    300. if (BeanUtil.isNotEmpty(sysCertPdf)) {
    301. SysCertPdf sysCertPdfOld = sysCertPdfService.getFileNameByValue(sysCertPdf.getModelName(), sysCertPdf.getCertId());
    302. if (BeanUtil.isNotEmpty(sysCertPdfOld)){
    303. BeanUtil.copyProperties(sysCertPdf,sysCertPdfOld,"id");
    304. sysCertPdfService.updateById(sysCertPdfOld);
    305. }else {
    306. sysCertPdfService.save(sysCertPdf);
    307. }
    308. }
    309. }
    310. }
    311. } else {
    312. redisTemplate.opsForValue().set(CYXX_MAX_TIME, cyxxMaxTime);
    313. }
    314. return ReturnT.SUCCESS;
    315. }
    316. }
    1. package org.jeecg.modules.quota.utils;
    2. import cn.hutool.core.bean.BeanUtil;
    3. import cn.hutool.http.HttpRequest;
    4. import cn.hutool.json.JSONArray;
    5. import cn.hutool.json.JSONObject;
    6. import cn.hutool.json.JSONUtil;
    7. import org.jeecg.common.constant.CommonConstant;
    8. import org.jeecg.common.util.MinioUtil;
    9. import org.jeecg.common.util.ZOSUtil;
    10. import org.jeecg.modules.quota.controller.DataSynchronismController;
    11. import org.jeecg.modules.quota.entity.SysCertPdf;
    12. import org.jeecg.modules.quota.service.ISysCertPdfService;
    13. import org.springframework.beans.factory.annotation.Autowired;
    14. import org.springframework.web.client.RestTemplate;
    15. import org.springframework.web.multipart.MultipartFile;
    16. import java.io.*;
    17. import java.util.*;
    18. import java.util.stream.Collectors;
    19. import java.util.stream.Stream;
    20. /**
    21. * @Author leitao
    22. * @Date 2023/9/21 15:28
    23. * @description: 请求鱼小二工具类
    24. * @Title: RequestYxeUtil
    25. * @Package org.jeecg.modules.quota.utils
    26. */
    27. public class RequestYxeUtil {
    28. // private static final String token_url = "http://2xx.x.xx.xx3:xx99/cnfai/oauth/token?clientId=2c9fb2a67c642bd2017c642bd21c0000&clientSecret=6ab3e8291b9af57c7ac4457bc60e0d2e0b08a8b9828c6e9d86250458b4de51bf82d9604abeb987d3";
    29. //token(线上)鱼小二
    30. private static final String token_url = "http://2xx.x.xx.xx3:xx99/cnfai/oauth/token?clientId=2c9fb2a67c642bd2017c642bd21c0000&clientSecret=6ab3e8291b9af57c7ac4457bc60e0d2e0b08a8b9828c6e9d86250458b4de51bf82d9604abeb987d3";
    31. //鱼小二获取渔船照片证据
    32. private static final String XeblCertificate_url = "http://2xx.x.xx.xx3:xx99/cnfai/services/certificateApi/XeblCertificate";
    33. //token(一网通办)
    34. private static final String XeblCyzp_token_url = "http://2xx.x.xx.xx3:xx99/cnfai//oauth/token";
    35. //获取船员照片
    36. private static final String XeblCyzp_url = "http://2xx.x.xx.xx3:xx99/cnfai//services/CyService/getCyPhoto";
    37. /**
    38. * 限额捕捞获取渔船证书
    39. *
    40. * @param cm
    41. * @param ycid
    42. * @throws IOException
    43. */
    44. public static ArrayList xeblCertificate(String cm, String ycid, String uploadType) throws Exception {
    45. ArrayList sysCertPdfs = new ArrayList<>();
    46. String requestResult = HttpRequest.post(token_url).execute().body();
    47. JSONObject jsonResult = JSONUtil.parseObj(requestResult);
    48. String code = jsonResult.getStr("code");
    49. if ("0".equals(code)) {
    50. String result = jsonResult.getStr("result");
    51. JSONObject resultJson = JSONUtil.parseObj(result);
    52. String accessToken = resultJson.getStr("accessToken");
    53. //限额捕捞获取渔船证书
    54. HashMap paramMap = new HashMap<>();
    55. paramMap.put("shipName", cm);
    56. paramMap.put("shipInfoId", ycid);
    57. String xeblCertificateResult = HttpRequest.post(XeblCertificate_url)
    58. .header("X-Access-Token", accessToken)
    59. .body(JSONUtil.toJsonPrettyStr(paramMap)).execute().body();
    60. JSONObject jsonObject = JSONUtil.parseObj(xeblCertificateResult);
    61. String code1 = jsonObject.getStr("code");
    62. if ("200".equals(code1)) {
    63. //将result转成JSONObject
    64. JSONObject json_result = jsonObject.getJSONObject("result");
    65. Map map = JSONUtil.parseObj(json_result);
    66. Map sysCertPdfMap = new HashMap<>();
    67. Object pngCert = map.get("pngCert");
    68. if (pngCert instanceof JSONArray) {
    69. JSONArray jsonArray = (JSONArray) pngCert;
    70. for (Object o : jsonArray) {
    71. Map pngCertMap = (Map) o;
    72. for (String value : pngCertMap.keySet()) {
    73. SysCertPdf sysCertPdf = new SysCertPdf();
    74. String base64 = (String) pngCertMap.get(value);
    75. MultipartFile pngMultipartFile = Base64ToMultipartFileConverter.convert(base64, ycid + ".png");
    76. uploadFile(pngMultipartFile, value, "png", ycid, uploadType, sysCertPdf);
    77. sysCertPdfMap.put(value, sysCertPdf);
    78. }
    79. }
    80. }
    81. Object pdfCert = map.get("pdfCert");
    82. if (pdfCert instanceof JSONArray) {
    83. JSONArray jsonArray = (JSONArray) pdfCert;
    84. for (Object o : jsonArray) {
    85. Map pngCertMap = (Map) o;
    86. for (String value : pngCertMap.keySet()) {
    87. String base64 = (String) pngCertMap.get(value);
    88. MultipartFile pdfMultipartFile = Base64ToMultipartFileConverter.convert(base64, ycid + ".pdf");
    89. uploadFile(pdfMultipartFile, value, "pdf", ycid, uploadType, sysCertPdfMap.get(value));
    90. }
    91. }
    92. }
    93. for (String s : sysCertPdfMap.keySet()) {
    94. sysCertPdfs.add(sysCertPdfMap.get(s));
    95. }
    96. }
    97. }
    98. return sysCertPdfs;
    99. }
    100. /**
    101. * 将文件上传到服务器
    102. *
    103. * @param multipartFile
    104. * @param value
    105. * @param type
    106. * @param ycid
    107. * @param uploadType
    108. * @param sysCertPdf
    109. * @return
    110. * @throws Exception
    111. */
    112. public static SysCertPdf uploadFile(MultipartFile multipartFile, String value, String type, String ycid, String uploadType, SysCertPdf sysCertPdf) throws Exception {
    113. String bizPath = "pdfCert" + "/" + value;
    114. String fileUrl = " ";
    115. if ("png".equals(type)) {
    116. if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
    117. fileUrl = MinioUtil.upload(multipartFile, bizPath);
    118. fileUrl = fileUrl.substring(1, fileUrl.length());
    119. //保存文件信息
    120. // 获取文件名
    121. sysCertPdf.setModelName(value);
    122. sysCertPdf.setPngPath(fileUrl);
    123. sysCertPdf.setCertId(ycid);
    124. sysCertPdf.setCertType(1);
    125. sysCertPdf.setDeleted(0);
    126. return sysCertPdf;
    127. } else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
    128. fileUrl = ZOSUtil.upload(multipartFile, bizPath);
    129. sysCertPdf.setModelName(value);
    130. sysCertPdf.setPngPath(fileUrl);
    131. sysCertPdf.setCertId(ycid);
    132. sysCertPdf.setCertType(1);
    133. sysCertPdf.setDeleted(0);
    134. return sysCertPdf;
    135. }
    136. } else if ("pdf".equals(type)) {
    137. if (BeanUtil.isNotEmpty(sysCertPdf)) {
    138. if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
    139. fileUrl = MinioUtil.upload(multipartFile, bizPath);
    140. //保存文件信息
    141. // 获取文件名
    142. sysCertPdf.setPdfPath(fileUrl);
    143. return sysCertPdf;
    144. } else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
    145. fileUrl = ZOSUtil.upload(multipartFile, bizPath);
    146. sysCertPdf.setPdfPath(fileUrl);
    147. return sysCertPdf;
    148. }
    149. }
    150. }
    151. return null;
    152. }
    153. /**
    154. * 将文件保存到本地
    155. *
    156. * @param file
    157. * @param type
    158. * @param value
    159. * @param ycid
    160. * @throws IOException
    161. */
    162. public static void saveFileToLocal(MultipartFile file, String type, String value, String ycid) throws IOException {
    163. String fileName = file.getOriginalFilename();
    164. String filePath = "E:\\workspace\\" + fileName + "." + type;
    165. String filePath1 = "E:\\workspace\\" + "pdfCert" + "/" + value + "/" + ycid + "." + type;
    166. File localFile = new File(filePath1);
    167. // 文件名
    168. if (!localFile.getParentFile().exists()) {
    169. localFile.getParentFile().mkdirs();// 新建目录
    170. }
    171. file.transferTo(localFile);
    172. }
    173. /**
    174. * 根据船只身份证查询照片
    175. *
    176. * @param sfzhm
    177. * @param uploadType
    178. * @return
    179. */
    180. public static SysCertPdf xeblCyzp(String sfzhm, String uploadType) throws Exception {
    181. //
    182. HashMap paramMap = new HashMap<>();
    183. paramMap.put("clientId", "402881fXXXXXXXXXXc27e00001");
    184. paramMap.put("clientSecret", "482978cf5bcb08bc51dcec5b680ccXXXXXXXXXXXXXXXXXXXfc894ccff5ff54ceef53cfde562");
    185. String requestResult = HttpRequest.post(XeblCyzp_token_url).form(paramMap)
    186. .execute().body();
    187. JSONObject jsonResult = JSONUtil.parseObj(requestResult);
    188. String code = jsonResult.getStr("code");
    189. if ("0".equals(code)) {
    190. String result = jsonResult.getStr("result");
    191. JSONObject resultJson = JSONUtil.parseObj(result);
    192. String accessToken = resultJson.getStr("accessToken");
    193. String[] str = new String[]{sfzhm};
    194. String xeblCyzpUrlResult = HttpRequest.post(XeblCyzp_url)
    195. .header("X-Access-Token", accessToken)
    196. .body(Arrays.toString(str)).execute().body();
    197. JSONObject jsonObject = JSONUtil.parseObj(xeblCyzpUrlResult);
    198. String code1 = jsonObject.getStr("code");
    199. if ("200".equals(code1)) {
    200. String str_result = jsonObject.getStr("result");
    201. Map collect = Arrays.stream(str_result.split(",")).collect(Collectors.toMap((e -> e.split(":")[0]), (e -> e.split(":")[1])));
    202. StringBuilder stringBuilder = new StringBuilder();
    203. StringBuilder append = stringBuilder.append("[{\"").append(sfzhm).append("\"");
    204. String sfzhmBase64 = collect.get(append.toString());
    205. String substring = sfzhmBase64.substring(1,sfzhmBase64.length()-3);
    206. MultipartFile jpgMultipartFile = Base64ToMultipartFileConverter.convert(substring, sfzhm + ".jpg");
    207. return uploadCyPhoto(jpgMultipartFile, sfzhm, uploadType);
    208. }
    209. }
    210. return null;
    211. }
    212. /**
    213. * 上传船员照片
    214. * @param jpgMultipartFile
    215. * @param sfzhm
    216. * @param uploadType
    217. * @return
    218. * @throws Exception
    219. */
    220. private static SysCertPdf uploadCyPhoto(MultipartFile jpgMultipartFile, String sfzhm, String uploadType) throws Exception {
    221. String bizPath = "cyPhoto";
    222. String fileUrl = " ";
    223. SysCertPdf sysCertPdf = new SysCertPdf();
    224. if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
    225. fileUrl = MinioUtil.upload(jpgMultipartFile, bizPath);
    226. fileUrl = fileUrl.substring(1);
    227. //保存文件信息
    228. // 获取文件名
    229. sysCertPdf.setModelName("cyPhoto");
    230. sysCertPdf.setPngPath(fileUrl);
    231. sysCertPdf.setCertId(sfzhm);
    232. sysCertPdf.setCertType(2);
    233. sysCertPdf.setDeleted(0);
    234. return sysCertPdf;
    235. }else if (CommonConstant.UPLOAD_TYPE_ZOS.equals(uploadType)) {
    236. fileUrl = ZOSUtil.upload(jpgMultipartFile, bizPath);
    237. sysCertPdf.setModelName("cyPhoto");
    238. sysCertPdf.setPngPath(fileUrl);
    239. sysCertPdf.setCertId(sfzhm);
    240. sysCertPdf.setCertType(2);
    241. sysCertPdf.setDeleted(0);
    242. return sysCertPdf;
    243. }
    244. return null;
    245. }
    246. }

  • 相关阅读:
    Python之文件处理-JSON文件
    linux 文本处理工具 cut 和 awk
    B-tree(PostgreSQL 14 Internals翻译版)
    PLSQL 存储函数SQL编程
    centos升级cmake之相关问题解决
    某城市道路桥梁设计计算书+cad图纸
    高数 |【23数一 李林六套卷】卷一 自用思路 及 知识点 整理
    Pyglet综合应用|推箱子游戏地图编辑器之图片跟随鼠标
    微型微控制器托管双直流/直流升压转换器
    VMware虚拟机中ubuntu网络连接不上
  • 原文地址:https://blog.csdn.net/weixin_60948956/article/details/133982832