feat: There is no way the, AWC 系统对完接口

This commit is contained in:
super_liu
2022-04-26 14:08:21 +08:00
parent f1e30c3fd5
commit 464b11f47d
12 changed files with 518 additions and 3 deletions
@@ -0,0 +1,90 @@
package com.adc.da.slrs.regulations.controller;
import com.adc.da.Log.BusinessType;
import com.adc.da.Log.EpcLog;
import com.adc.da.base.web.BaseController;
import com.adc.da.common.ReadExcel;
import com.adc.da.http.PageInfo;
import com.adc.da.http.ResponseMessage;
import com.adc.da.http.Result;
import com.adc.da.person.service.IPersonCollectEOService;
import com.adc.da.slrs.regulations.entity.SearchStandContext;
import com.adc.da.slrs.regulations.entity.SearchStandResult;
import com.adc.da.slrs.regulations.entity.StandMessageCodeEnum;
import com.adc.da.slrs.regulations.entity.StandResult;
import com.adc.da.slrs.regulations.service.IStandDataService;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport;
import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService;
import com.adc.da.slrs.sarResource.service.ITsResourceService;
import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO;
import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage;
import com.adc.da.slrs.sarUser.service.ITsUserService;
import com.adc.da.sys.entity.DicTypeEO;
import com.adc.da.sys.service.IDicTypeEOService;
import com.adc.da.util.LoginUserUtil;
import com.adc.da.util.exception.AdcDaBaseException;
import com.adc.da.util.utils.IOUtils;
import com.adc.da.util.utils.StringUtils;
import com.adc.da.utils.util.BussStandExportUtil;
import com.adc.da.utils.util.SarAdvanceSearchUtil;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
/**
* <p>
* 标准信息表 前端控制器
* </p>
*
* @author super_liu
* @since 2021-07-13
*/
@RestController
@Api(tags = "福田标准法规--AWC查询标准")
@RequestMapping("/api/regulations")
public class StandDataController {
private static final Logger logger = LoggerFactory.getLogger(StandDataController.class);
@Autowired
private IStandDataService iStandDataService;
/**
* 标准查询列表接口
*
* @param
* @return
*/
@ApiOperation(value = "|regulations|标准查询列表接口")
@PostMapping("/searchStandData")
public String searchStandData(@RequestBody SearchStandContext searchStandContext){
String resultJson = "";
if(StringUtils.isEmpty(searchStandContext.getUid())
|| StringUtils.isEmpty(searchStandContext.getUsername())
|| StringUtils.isEmpty(searchStandContext.getVppsCode())){
return StandResult.toJson(StandResult.error(verifyObj(searchStandContext.getUid()),
StandMessageCodeEnum.SOURCE.getCode(), StandMessageCodeEnum.ERROR_PARAM.getCode(),
"uid/username/vppsCode 为必填项"));
}
return iStandDataService.searchStandData(searchStandContext);
}
private String verifyObj(String str){
return (str == null || str.equals("")) ? "" : str;
}
}
@@ -0,0 +1,31 @@
package com.adc.da.slrs.regulations.dao;
import com.adc.da.slrs.regulations.entity.FileResult;
import com.adc.da.slrs.regulations.entity.SearchStandContext;
import com.adc.da.slrs.regulations.entity.StandData;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport;
import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO;
import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage;
import com.adc.da.sys.entity.UserEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* <p>
* 标准信息表 Mapper 接口
* </p>
*
* @author super_liu
*/
@Repository
public interface StandDataDao extends BaseMapper<StandData> {
List<StandData> searchStandData(SearchStandContext searchStandContext);
}
@@ -0,0 +1,26 @@
package com.adc.da.slrs.regulations.entity;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 12:05
*/
@Data
public class FileResult {
@ApiModelProperty(value = "当前标准跳转到本系统内的链接地址")
@JSONField(ordinal=1)
private String documentName;
@ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称")
@JSONField(ordinal=2)
private String documentUrl;
}
@@ -0,0 +1,63 @@
package com.adc.da.slrs.regulations.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 12:05
*/
@Data
public class SearchStandContext implements Serializable {
// 标准查询条件
@ApiModelProperty(value = "唯一标识")
private String uid;
@ApiModelProperty(value = "用户ID")
private String username;
@ApiModelProperty(value = "VPPS码")
private String vppsCode;
@ApiModelProperty(value = "VPPS名称")
private String vppsName;
//其他
@ApiModelProperty(value = "物料号")
private String itemId;
@ApiModelProperty(value = "零部件名称")
private String objectName;
@ApiModelProperty(value = "版本")
private String itemRevisionId;
@ApiModelProperty(value = "所有者")
private String owningUser;
@ApiModelProperty(value = "发布状态")
private String releaseStatus;
@ApiModelProperty(value = "功能分组码")
private String vsgCode;
@ApiModelProperty(value = "功能分组名称")
private String vsgName;
@ApiModelProperty(value = "功能位置码")
private String fpcCode;
@ApiModelProperty(value = "功能位置名称")
private String fpcName;
@ApiModelProperty(value = "项目编号")
private String ItemNumber;
}
@@ -0,0 +1,55 @@
package com.adc.da.slrs.regulations.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 12:05
*/
@Data
public class SearchStandResult {
@ApiModelProperty(value = "请求参数中的uid直接带入即可")
@JSONField(ordinal=1)
private String uid;
@ApiModelProperty(value = "SRMS 固定字符串 系统唯一标识")
@JSONField(ordinal=2)
private String source;
@ApiModelProperty(value = "返回状态 200 正常,-1 系统错误, -10 参数错误")
@JSONField(ordinal=3)
private String status;
@ApiModelProperty(value = "正常返回空字符串,系统错误时返回系统异常信息及对应描述")
@JSONField(ordinal=4)
private String errorMessage;
@ApiModelProperty(value = "返回结果集合")
@JSONField(ordinal=5)
@JsonProperty(value = "List")
private List<FileResult> List;
public SearchStandResult(String uid, String source, String status,String errorMessage) {
this.uid = uid;
this.source = source;
this.status = status;
this.errorMessage = errorMessage;
}
public SearchStandResult(String uid, String source, String status,String errorMessage, List<FileResult> List) {
this.uid = uid;
this.source = source;
this.status = status;
this.errorMessage = errorMessage;
this.List = List;
}
}
@@ -0,0 +1,31 @@
package com.adc.da.slrs.regulations.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 12:05
*/
@Data
public class StandData {
@ApiModelProperty(value = "标准ID")
private String standId;
@ApiModelProperty(value = "标准类型")
private String standType;
@ApiModelProperty(value = "标准分类")
private String standSort;
@ApiModelProperty(value = "标准号")
private String standNumber;
@ApiModelProperty(value = "标准名称")
private String standName;
@ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称")
private String documentName;
}
@@ -0,0 +1,23 @@
package com.adc.da.slrs.regulations.entity;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 14:58
*/
public enum StandMessageCodeEnum {
SUCCESS("200"),
ERROR_SYS("-1"),
ERROR_PARAM("-10"),
SOURCE("SRMS");
private String code;
private StandMessageCodeEnum(String code) {
this.code = code;
}
public String getCode() {
return this.code;
}
}
@@ -0,0 +1,32 @@
package com.adc.da.slrs.regulations.entity;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.List;
/**
* @Description: TODO
* @author: super_liu
* @date: 2022年04月25日 14:56
*/
public class StandResult {
public static SearchStandResult success(String uid, String source, String status,String errorMessage, List<FileResult> List) {
return new SearchStandResult(uid,source,status,errorMessage,List);
}
public static SearchStandResult error(String uid, String source, String status,String errorMessage) {
return new SearchStandResult(uid,source,status,errorMessage);
}
public static String toJson(SearchStandResult searchStandResult){
GsonBuilder gsonBuilder = getGsonBuilder();
Gson json = gsonBuilder.create();
return json.toJson(searchStandResult);
}
private static GsonBuilder getGsonBuilder() {
return new GsonBuilder().disableHtmlEscaping().serializeNulls().enableComplexMapKeySerialization().serializeSpecialFloatingPointValues().setLenient();
}
}
@@ -0,0 +1,26 @@
package com.adc.da.slrs.regulations.service;
import com.adc.da.http.ResponseMessage;
import com.adc.da.slrs.regulations.entity.FileResult;
import com.adc.da.slrs.regulations.entity.SearchStandContext;
import com.adc.da.slrs.regulations.entity.SearchStandResult;
import com.adc.da.slrs.regulations.entity.StandData;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport;
import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 标准信息表 服务类
* </p>
*
* @author super_liu
*/
public interface IStandDataService extends IService<StandData> {
String searchStandData(SearchStandContext searchStandContext);
}
@@ -0,0 +1,75 @@
package com.adc.da.slrs.regulations.service.impl;
import com.adc.da.slrs.regulations.dao.StandDataDao;
import com.adc.da.slrs.regulations.entity.*;
import com.adc.da.slrs.regulations.service.IStandDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Encoder;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>
* 标准信息表 服务实现类
* </p>
*
* @author super_liu
* @date: 2022年04月25日 14:56
*/
@Service
public class StandDataServiceImpl extends ServiceImpl<StandDataDao, StandData> implements IStandDataService {
private static final Logger logger = LoggerFactory.getLogger(StandDataServiceImpl.class);
private String webUrl = "https://srms.foton.com.cn/#/loginStandDetails";
@Override
public String searchStandData(SearchStandContext searchStandContext){
List<FileResult> fileResultList = new ArrayList<>();
try {
List<StandData> standDataQuery = this.baseMapper.searchStandData(searchStandContext);
if(!standDataQuery.isEmpty()){
// 重组数据集合 只需documentName 及 documentUrl
standDataQuery.stream().peek(standData -> {
FileResult fileResult = new FileResult();
fileResult.setDocumentName(verifyObj(standData.getStandSort(),standData.getStandNumber(),standData.getStandName()));
fileResult.setDocumentUrl(webUrl+"?userName="+encode(searchStandContext.getUsername())+"&dataId="+standData.getStandId()+"&datatype="+standData.getStandType());
fileResultList.add(fileResult);
}).collect(Collectors.toList());
}
}catch (Exception e){
return StandResult.toJson(StandResult.error(searchStandContext.getUid(),
StandMessageCodeEnum.SOURCE.getCode(),
StandMessageCodeEnum.ERROR_SYS.getCode(),
errFilter(e.getMessage())));
}
return StandResult.toJson(StandResult.success(searchStandContext.getUid(), StandMessageCodeEnum.SOURCE.getCode(), StandMessageCodeEnum.SUCCESS.getCode(),"",fileResultList));
}
private String verifyObj(String str1,String str2,String str3){
String res1 = (str1 == null || str1.equals("")) ? "" : (str1+" ");
String res2 = (str2 == null || str2.equals("")) ? "" : (str2+" ");
String res3 = (str3 == null || str3.equals("")) ? "" : str3;
return res1 + res2 + res3;
}
private String encode(String str){
String encodeStr = new BASE64Encoder().encodeBuffer(str.getBytes()).replaceAll("[\r\n]", "");;
return encodeStr;
}
private String errFilter(String str){
if (str.contains("Cause")){
str = str.split("Cause")[0].replaceAll("\\r\\n###","");
}
return str;
}
}