add ASMS对接,国内法规

This commit is contained in:
liao
2023-10-19 16:05:57 +08:00
parent d2858d4f5f
commit 34689351db
11 changed files with 135 additions and 62 deletions
+34
View File
@@ -270,4 +270,38 @@ CREATE TABLE `laws_asms_open_api`
alter table laws_asms_open_api
comment '汽车标准数字化平台ASMS开放API接口管理';
DROP TABLE IF EXISTS `laws_asms_domestic`;
CREATE TABLE `laws_asms_domestic`
(
`id` varchar(100) NOT NULL PRIMARY KEY COMMENT '主键ID',
`code` varchar(100) COMMENT '标准法规编号/标准号',
`name` varchar(100) COMMENT '标准法规名称/标准名称',
`english_name` varchar(100) COMMENT '法规英文名称',
`type` varchar(100) COMMENT '标准法规类别/标准类别',
`applicable_certification_list_string` varchar(100) COMMENT '适用认证',
`applicable_models_list_string` varchar(100) COMMENT '适用车型拼接名称',
`degree_adoption` varchar(100) COMMENT '采标程度',
`drafting_people` varchar(500) COMMENT '起草人',
`drafting_unit` varchar(500) COMMENT '起草单位',
`focal_point_name` varchar(100) COMMENT '标准领域名称',
`implementation_date` varchar(100) COMMENT '实施日期',
`international_standard` varchar(100) COMMENT '采用国际标准号',
`new_car_implementation_date` varchar(100) COMMENT '新车实施日期',
`new_register_car_implementation_date` varchar(100) COMMENT '新注册车实施日期',
`power_type_list_string` varchar(100) COMMENT '动力类型',
`production_car_implementation_date` varchar(100) COMMENT '在产车实施日期',
`proposing_department` varchar(100) COMMENT '提出部门',
`publish_date` varchar(100) COMMENT '发布日期',
`replace_code` varchar(100) COMMENT '代替标准号',
`scope_application` varchar(100) COMMENT '适用范围',
`standard_nature` varchar(100) COMMENT '标准性质',
`standard_status` varchar(100) COMMENT '标准状态',
`subcommittee` varchar(100) COMMENT '分标委',
`create_time` varchar(100) COMMENT '创建时间',
`update_time` varchar(100) COMMENT '更新时间',
`is_sync` varchar(5) COMMENT '是否同步(0未同步,1已同步)'
) COMMENT = 'ASMS国内法规';
alter table laws_asms_domestic
comment 'ASMS国内法规';
@@ -1,30 +0,0 @@
package com.jero.modules.docking.asms.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import com.jero.modules.laws.common.constant.FieldCommon;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @Author: liao
* @Date: 2023/10/17 17:36
* @Description:
*/
@Api(tags="国内法规标准")
@RestController
@RequestMapping("/asms")
public class AsmsController {
@Autowired
private AsmsPostUtil asmsPostUtil;
@GetMapping(value = "/getInfo")
public Result<Object> getInfo(String uri, Map<String, String> map) {
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(uri, map);
return Result.OK(mapList);
}
}
@@ -1,16 +1,14 @@
package com.jero.modules.docking.asms.api.controller;
package com.jero.modules.docking.asms.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.api.service.ILawsAsmsOpenApiService;
import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import lombok.extern.slf4j.Slf4j;
@@ -18,7 +16,6 @@ import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
@@ -1,4 +1,4 @@
package com.jero.modules.docking.asms.api.entity;
package com.jero.modules.docking.asms.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
@@ -1,7 +1,7 @@
package com.jero.modules.docking.asms.api.mapper;
package com.jero.modules.docking.asms.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.docking.asms.api.mapper.LawsAsmsOpenApiMapper">
<resultMap id="LawsAsmsOpenApiResultMap" type="com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi">
<mapper namespace="com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper">
<resultMap id="LawsAsmsOpenApiResultMap" type="com.jero.modules.docking.asms.entity.LawsAsmsOpenApi">
<id column="id" property="id" />
<result column="api_name" property="apiName" />
<result column="api_url" property="apiUrl" />
@@ -1,6 +1,6 @@
package com.jero.modules.docking.asms.api.service;
package com.jero.modules.docking.asms.service;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -1,13 +1,11 @@
package com.jero.modules.docking.asms.api.service.impl;
package com.jero.modules.docking.asms.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.api.mapper.LawsAsmsOpenApiMapper;
import com.jero.modules.docking.asms.api.service.ILawsAsmsOpenApiService;
import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper;
import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.ISysDictItemService;
@@ -20,7 +18,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -3,6 +3,8 @@ package com.jero.modules.docking.asms.util;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -13,10 +15,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* @Author: liao
@@ -24,6 +23,7 @@ import java.util.Objects;
* @Description: 远程调用
*/
@Component
@Slf4j
public class AsmsPostUtil {
@Autowired
@@ -62,6 +62,7 @@ public class AsmsPostUtil {
token = resultMap.get("token");
// 将新获取的token存入redis
redisUtil.set(ASMS_SYSTEM_AUTH_TOKEN, token, expire * 60 * 60);
log.info("new token is creating: {}", token);
}
return token;
}
@@ -75,9 +76,10 @@ public class AsmsPostUtil {
**/
public List<Map<String, String>> sendGetReq(String uri, Map<String, String> map) {
// 准备请求头
String token = getToken();
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/x-www-form-urlencoded");
headers.set("X-Access-Token", getToken());
headers.set("X-Access-Token", token);
if (StringUtils.isBlank(uri)) {
throw new JeroBootException("url不能为空");
@@ -91,19 +93,32 @@ public class AsmsPostUtil {
url += "?" + s.substring(1);
}
ResponseEntity<Result> responseEntity = restTemplate.exchange(url.toString(),
HttpMethod.GET, new HttpEntity<>(null, headers), Result.class);
ResponseEntity<Result> responseEntity;
try {
log.info("request url : {}", url);
responseEntity = restTemplate.exchange(url.toString(),
HttpMethod.GET, new HttpEntity<>(null, headers), Result.class);
} catch (Exception e) {
log.info("old token is deleting: {}", token);
redisUtil.del(ASMS_SYSTEM_AUTH_TOKEN);
e.printStackTrace();
throw new JeroBootException("操作失败,请稍后重试");
}
if (!responseEntity.getBody().isSuccess()) {
throw new JeroBootException("汽车标准数字化平台:请求发送失败");
}
Map<String, Object> resultMap = (Map<String, Object>) responseEntity.getBody().getResult();
if (Objects.isNull(resultMap)) {
throw new JeroBootException("返回数据为空");
}
List<Map<String, String>> mapList = (List<Map<String, String>>) resultMap.get("records");
mapList.forEach(eMap -> {
StringBuilder sb = new StringBuilder();
eMap.forEach((k, v) -> sb.append(k + ":" + v + ","));
System.out.println(sb);
});
if (CollectionUtils.isEmpty(mapList)) {
mapList = new ArrayList<>();
Map<String, String> result = (Map<String, String>) responseEntity.getBody().getResult();
mapList.add(result);
}
log.info("返回{}条数据", mapList.size());
return mapList;
}
@@ -115,4 +115,17 @@ public class FieldCommon {
// 稽查内容
public static final String CHECK_LIST = "checkList";
// 发布稿(原文)
public static final String FILE_PUBLISH_OF_ORIGINAL = "publish_of_original";
// 修改单
public static final String FILE_MODIFICATION_LIST = "modification_list";
// 报批稿
public static final String FILE_DRAFT_FOR_REVIEW = "draft_for_review";
// 送审稿
public static final String FILE_DRAFT_FOR_APPROVAL = "draft_for_approval";
// 征求意见稿
public static final String FILE_DRAFT_FOR_COMMENT = "draft_for_comment";
// 草案
public static final String FILE_DRAFT = "draft";
}
@@ -34,6 +34,8 @@ import com.jero.modules.personal.entity.LawsBrowsingHistory;
import com.jero.modules.personal.entity.LawsStandardCollection;
import com.jero.modules.personal.service.ILawsBrowsingHistoryService;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
@@ -123,6 +125,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
private EnterpriseStandardAuthUserService esAuthUserService;
@Resource
private WaterMarkUtil waterMarkUtil;
@Autowired
private ISarFileSplitInfoService sarFileSplitInfoService;
/**
* @Author: liao
@@ -165,11 +169,54 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
}
// 是否收藏判断标识
collectionFlag(infoPage.getRecords());
// 标准拆分标识
splitFlag(infoPage.getRecords());
// 待处理
return infoPage;
}
/**
* @Author: liao
* @Date: 2023/10/19 15:36
* @Description: 标准拆分标识
**/
private void splitFlag(List<Map<String, Object>> records) {
// 获取全部id集合
List<String> ids = records.stream().map(kv ->
String.valueOf(kv.get("id"))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(ids)) return;
// 查询标准拆分表
LambdaQueryWrapper<SarFileSplitInfoEO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SarFileSplitInfoEO::getStandardId, ids);
queryWrapper.isNotNull(SarFileSplitInfoEO::getPublishBeforeId);
queryWrapper.isNotNull(SarFileSplitInfoEO::getFileType);
List<SarFileSplitInfoEO> sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper);
if (CollectionUtils.isEmpty(sarFileSplitInfoEOList)) {
return;
}
Map<String, String> flagMap = new HashMap<>();
sarFileSplitInfoEOList.forEach(e -> flagMap.put(e.getStandardId() + "," + e.getFileType(), e.getId()));
records.forEach(map -> {
String id = (String) map.get("id");
map.put(FieldCommon.FILE_PUBLISH_OF_ORIGINAL + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_PUBLISH_OF_ORIGINAL));
map.put(FieldCommon.FILE_MODIFICATION_LIST + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_MODIFICATION_LIST));
map.put(FieldCommon.FILE_DRAFT_FOR_REVIEW + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_DRAFT_FOR_REVIEW));
map.put(FieldCommon.FILE_DRAFT_FOR_APPROVAL + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_DRAFT_FOR_APPROVAL));
map.put(FieldCommon.FILE_DRAFT_FOR_COMMENT + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_DRAFT_FOR_COMMENT));
map.put(FieldCommon.FILE_DRAFT + FieldCommon._STANDARD_SPLIT,
flagMap.get(id + "," + FieldCommon.FILE_DRAFT));
});
}
@Override
public IPage<Map<String, Object>> getExportData(Map<String, Object> parameterMap, List<LawsTag> fieldList) {
// 获取操作模块