添加srms接口

This commit is contained in:
梁琦涛
2024-01-22 14:11:59 +08:00
parent 74fb0733db
commit 019cd9bf86
7 changed files with 470 additions and 77 deletions
@@ -1,12 +1,14 @@
package com.jero.modules.docking.srms.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.srms.dto.ProductDesign;
import com.jero.modules.docking.srms.service.SrmsApiService;
import com.jero.modules.docking.srms.vo.ByFileRows;
import com.jero.modules.docking.srms.vo.StandardPageVO;
import com.jero.modules.docking.srms.vo.StandardTree;
import com.jero.modules.docking.utils.ResponsesUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -64,7 +66,7 @@ public class SrmsApiController {
jsonResponses.put("Rows",list);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses);
}catch (Exception e){
log.error("获取token异常:",e);
log.error("标准法规文档查询异常:",e);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败"));
}
}
@@ -82,7 +84,49 @@ public class SrmsApiController {
jsonResponses.put("Rows",list);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses);
}catch (Exception e){
log.error("获取token异常:",e);
log.error("设计导航-产品设计条款查询异常:",e);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败"));
}
}
@ApiOperation("获取所有体系数据")
@PostMapping("/getByLawsSystem")
public JSONObject getByLawsSystem(@RequestBody JSONObject json, HttpServletRequest req){
try {
Result<List<StandardTree>> re = srmsApiService.getByLawsSystem(json,req);
if(!re.isSuccess()){
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage()));
}
List<StandardTree> list = re.getResult();
JSONObject jsonResponses = ResponsesUtil.getJsonOk();
jsonResponses.put("Rows",JSON.toJSONString(list));
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses);
}catch (Exception e){
log.error("获取所有体系数据异常:",e);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败"));
}
}
@ApiOperation("分页查询标准数据")
@PostMapping("/getByLawsStandardPage")
public JSONObject getByLawsStandardPage(@RequestBody JSONObject json, HttpServletRequest req){
try {
Result<IPage<StandardPageVO>> re = srmsApiService.getByLawsStandardPage(json,req);
if(!re.isSuccess()){
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage()));
}
IPage<StandardPageVO> page = re.getResult();
JSONObject jsonPage = new JSONObject();
jsonPage.put("current",page.getCurrent());
jsonPage.put("pages",page.getPages());
jsonPage.put("size",page.getSize());
jsonPage.put("total",page.getTotal());
jsonPage.put("Rows_Result",page.getRecords());
JSONObject jsonResponses = ResponsesUtil.getJsonOk();
jsonResponses.put("Result",jsonPage);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses);
}catch (Exception e){
log.error("分页查询标准数据异常:",e);
return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败"));
}
}
@@ -1,7 +1,12 @@
package com.jero.modules.docking.srms.mapper;
import com.jero.modules.docking.srms.vo.StandardVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.docking.srms.vo.ByFileRows;
import com.jero.modules.docking.srms.vo.StandardPageVO;
import com.jero.modules.docking.srms.vo.StandardVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -36,4 +41,7 @@ public interface LawsStandardMapper{
String getStandardByProductDesign(@Param("standardNumber") String standardNumber,
@Param("queryLabels") String queryLabels);
IPage<StandardPageVO> getByLawsStandardPage(Page<StandardPageVO> page,
@Param(Constants.WRAPPER) QueryWrapper<StandardPageVO> queryWrapper);
}
@@ -97,4 +97,24 @@
left join laws_document_split l on s.id = l.info_id and l.del_flag = 0
where l.item_content is not null and l.item_content != '' limit 1
</select>
<select id="getByLawsStandardPage" resultType="com.jero.modules.docking.srms.vo.StandardPageVO">
select laws.* from (
SELECT
id,standard_number,standard_name,standard_english_name,standard_state,standard_system,release_date,implementation_date,part_name as partCategoryNum
FROM laws_domestic_standard
union all
SELECT
id,standard_number,standard_name,standard_english_name,standard_state,standard_system,release_date,implementation_date,part_name as partCategoryNum
FROM laws_enterprise_standard
union all
SELECT
id,standard_number,standard_name,standard_english_name,standard_state,standard_system,release_date,implementation_date,part_name as partCategoryNum
FROM laws_overseas_standard
) laws
left join laws_node_relation l on l.unique_relation_flag = laws.id
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>
@@ -1,9 +1,12 @@
package com.jero.modules.docking.srms.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.srms.dto.ProductDesign;
import com.jero.modules.docking.srms.vo.ByFileRows;
import com.jero.modules.docking.srms.vo.StandardPageVO;
import com.jero.modules.docking.srms.vo.StandardTree;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@@ -43,4 +46,25 @@ public interface SrmsApiService {
* @return com.jero.common.api.vo.Result<com.alibaba.fastjson.JSONObject>
*/
Result<List<ProductDesign>> getByLawsProductDesign(JSONObject json, HttpServletRequest req);
/**
* 获取所有体系数据
* @author LQT
* @date 2024/1/19 17:32
* @param json
* @param req
* @return com.jero.common.api.vo.Result<com.alibaba.fastjson.JSONObject>
*/
Result<List<StandardTree>> getByLawsSystem(JSONObject json, HttpServletRequest req);
/**
* 分页查询标准数据
* @author LQT
* @date 2024/1/19 17:32
* @param json
* @param req
* @return com.jero.common.api.vo.Result<com.alibaba.fastjson.JSONObject>
*/
Result<IPage<StandardPageVO>> getByLawsStandardPage(JSONObject json, HttpServletRequest req);
}
@@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.util.JwtUtil;
@@ -11,15 +14,15 @@ import com.jero.common.util.RedisUtil;
import com.jero.common.util.TokenUtils;
import com.jero.modules.docking.srms.dto.ByTokenRequests;
import com.jero.modules.docking.srms.dto.ProductDesign;
import com.jero.modules.docking.srms.vo.StandardVO;
import com.jero.modules.docking.srms.mapper.LawsStandardMapper;
import com.jero.modules.docking.srms.service.SrmsApiService;
import com.jero.modules.docking.srms.vo.ByFileRows;
import com.jero.modules.docking.srms.vo.DocumentSplitDetail;
import com.jero.modules.docking.srms.vo.SarFileSplitMenu;
import com.jero.modules.docking.srms.vo.SplitResult;
import com.jero.modules.docking.srms.vo.*;
import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit;
import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper;
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
import com.jero.modules.laws.standard.entity.PartName;
import com.jero.modules.laws.standard.service.ILawsTreeNodeService;
import com.jero.modules.laws.standard.service.PartNameService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
@@ -28,19 +31,18 @@ import com.jero.modules.split.page.SarFileSplitMenuEOPage;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.system.service.ILoginService;
import com.jero.modules.tag.enums.TableNameEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.regexp.RE;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -64,11 +66,15 @@ public class SrmsApiServiceImpl implements SrmsApiService {
private LawsDocumentSplitMapper lawsDocumentSplitMapper;
@Resource
private LawsStandardMapper lawsStandardMapper;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private IOSSFileService ossFileService;
@Resource
private ILawsTreeNodeService lawsTreeNodeService;
@Resource
private PartNameService partNameService;
@Value("${srms.app_key}")
private String appKey;
@@ -78,6 +84,11 @@ public class SrmsApiServiceImpl implements SrmsApiService {
private static final String SRMS_TOKEN = "srms_token_";
private static final String REQUESTS = "Requests";
private static final String SYS_ERR = "系统验证失败";
private static final String STANDARD_NAME = "standardName";
private static final String STANDARD_NUMBER = "standardNumber";
private static final String PUBLISH_OF_ORIGINAL = "publish_of_original";
private static final String X_ACCESS_TOKEN = "X-Access-Token";
private static final String ADD_NOT_NULL = "必填项不能为空";
@@ -89,7 +100,7 @@ public class SrmsApiServiceImpl implements SrmsApiService {
if(StringUtils.isAllBlank(byTokenRequests.getUsername())
|| StringUtils.isBlank(byTokenRequests.getAppkey())
|| StringUtils.isBlank(byTokenRequests.getSecret())){
return Result.error("必填项不能为空");
return Result.error(ADD_NOT_NULL);
}
if(!Objects.equals(appKey,byTokenRequests.getAppkey()) || !Objects.equals(secret,byTokenRequests.getSecret())){
return Result.error(SYS_ERR);
@@ -116,15 +127,15 @@ public class SrmsApiServiceImpl implements SrmsApiService {
@Override
public Result<List<ByFileRows>> getByLawsFileList(JSONObject json, HttpServletRequest req) {
// 验证token
String token = req.getHeader("X-Access-Token");
String token = req.getHeader(X_ACCESS_TOKEN);
if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){
Result.error(SYS_ERR);
return Result.error(SYS_ERR);
}
JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS)));
// 零部件-分类内部码(精准查询)
String partCategoryNum = getStr(requests, "partCategoryNum");
if(StringUtils.isBlank(partCategoryNum)){
Result.error("零部件-分类内部码不能为空");
return Result.error("零部件-分类内部码不能为空");
}
try {
StandardVO standardVO = new StandardVO();
@@ -133,24 +144,16 @@ public class SrmsApiServiceImpl implements SrmsApiService {
String partCategoryName = getStr(requests, "partCategoryName");
standardVO.setPartCategoryName(partCategoryName);
// 标准编号
String standardNumber = getStr(requests, "standardNumber");
String standardNumber = getStr(requests, STANDARD_NUMBER);
standardVO.setStandardNumber(standardNumber);
// 标准名称
String standardName = getStr(requests, "standardName");
String standardName = getStr(requests, STANDARD_NAME);
standardVO.setStandardName(standardName);
// 标准状态
String standardState = getStr(requests, "standardState");
standardVO.setStandardState(standardState);
// 是否存在拆分信息,默认false; true-是,false-否
setHasSplit(requests, standardVO);
// 备用字段1
String remark1 = getStr(requests, "Remark1");
// 备用字段2
String remark2 = getStr(requests, "Remark2");
// 备用字段3
String remark3 = getStr(requests, "Remark3");
// 备用字段4
String remark4 = getStr(requests, "Remark4");
List<ByFileRows> listByFileRows = getByFileRows(partCategoryNum, standardVO);
return Result.OK(listByFileRows);
}catch (Exception e){
@@ -168,11 +171,20 @@ public class SrmsApiServiceImpl implements SrmsApiService {
List<String> listFileId = listByFileRows.stream().map(ByFileRows::getId).collect(Collectors.toList());
LambdaQueryWrapper<OSSFile> queryOssFile = new LambdaQueryWrapper<>();
queryOssFile.in(OSSFile::getStandardId,listFileId);
queryOssFile.eq(OSSFile::getStandardFileType,"publish_of_original");
queryOssFile.eq(OSSFile::getStandardFileType,PUBLISH_OF_ORIGINAL);
queryOssFile.orderByDesc(OSSFile::getCreateTime);
List<OSSFile> listOssFile = ossFileService.list(queryOssFile);
// 查询零件名称
LambdaQueryWrapper<PartName> queryPartName = new LambdaQueryWrapper<>();
queryPartName.eq(PartName::getCode,partCategoryNum);
PartName partName = partNameService.getOne(queryPartName,false);
for (ByFileRows byFileRows : listByFileRows) {
byFileRows.setPartCategoryNum(partCategoryNum);
if(!Objects.isNull(partName)){
byFileRows.setPartCategoryName(partName.getName());
}
byFileRows.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", byFileRows.getStandardState()));
if(!CollectionUtils.isEmpty(listOssFile)){
List<OSSFile> listFile = listOssFile.stream().filter(o-> Objects.equals(o.getStandardId(),byFileRows.getId())).collect(Collectors.toList());
@@ -184,52 +196,56 @@ public class SrmsApiServiceImpl implements SrmsApiService {
LambdaQueryWrapper<SarFileSplitInfoEO> querySarFileSplitInfoEo = new LambdaQueryWrapper<>();
querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getStandardId,byFileRows.getId());
querySarFileSplitInfoEo.isNull(SarFileSplitInfoEO::getPublishBeforeId);
querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getFileType,"publish_of_original");
querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getFileType,PUBLISH_OF_ORIGINAL);
SarFileSplitInfoEO sarFileSplitInfoEo = sarFileSplitInfoService.getOne(querySarFileSplitInfoEo,false);
if(!Objects.isNull(sarFileSplitInfoEo)){
SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage();
page.setValidFlag("0");
page.setOrderBy("display_seq asc");
page.setInfoId(sarFileSplitInfoEo.getId());
List<SarFileSplitMenuEO> getList = sarFileSplitMenuEOService.queryByApiList(page);
if(!CollectionUtils.isEmpty(getList)){
List<SarFileSplitMenu> listSarFileSplitMenu = new ArrayList<>();
for (SarFileSplitMenuEO sarFileSplitMenuEo : getList) {
SarFileSplitMenu sarFileSplitMenu = new SarFileSplitMenu();
sarFileSplitMenu.setId(sarFileSplitMenuEo.getId());
sarFileSplitMenu.setPid(sarFileSplitMenuEo.getPId());
sarFileSplitMenu.setItemName(sarFileSplitMenuEo.getItemName());
sarFileSplitMenu.setName(sarFileSplitMenuEo.getName());
listSarFileSplitMenu.add(sarFileSplitMenu);
}
SplitResult splitResult = new SplitResult();
if(!CollectionUtils.isEmpty(listSarFileSplitMenu)){
List<String> listIds = listSarFileSplitMenu.stream().map(SarFileSplitMenu::getId).collect(Collectors.toList());
LambdaQueryWrapper<LawsDocumentSplit> queryLawsDocumentSplit = new LambdaQueryWrapper<>();
queryLawsDocumentSplit.in(LawsDocumentSplit::getMenuId,listIds);
queryLawsDocumentSplit.eq(LawsDocumentSplit::getDelFlag,"0");
List<LawsDocumentSplit> listLawsDocumentSplit = lawsDocumentSplitMapper.selectList(queryLawsDocumentSplit);
if(!CollectionUtils.isEmpty(listLawsDocumentSplit)){
List<DocumentSplitDetail> listDocumentSplitDetail = JSON.parseArray(JSON.toJSONString(listLawsDocumentSplit),DocumentSplitDetail.class);
splitResult.setDocumentSplitDetail(listDocumentSplitDetail);
}
List<SarFileSplitMenu> finalResult = listSarFileSplitMenu;
listSarFileSplitMenu = listSarFileSplitMenu.stream().filter(v -> StringUtils.isBlank(v.getPid()))
.peek(v -> v.setChildren(createChildList(v, finalResult))).collect(Collectors.toList());
splitResult.setSarFileSplitMenuEO(JSON.toJSONString(listSarFileSplitMenu));
}
byFileRows.setSplitResult(splitResult);
}
}
addSarFileSplitInfoEO(byFileRows, sarFileSplitInfoEo);
}
return listByFileRows;
}
private void addSarFileSplitInfoEO(ByFileRows byFileRows, SarFileSplitInfoEO sarFileSplitInfoEo) {
if(!Objects.isNull(sarFileSplitInfoEo)){
SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage();
page.setValidFlag("0");
page.setOrderBy("display_seq asc");
page.setInfoId(sarFileSplitInfoEo.getId());
List<SarFileSplitMenuEO> getList = sarFileSplitMenuEOService.queryByApiList(page);
if(!CollectionUtils.isEmpty(getList)){
List<SarFileSplitMenu> listSarFileSplitMenu = new ArrayList<>();
for (SarFileSplitMenuEO sarFileSplitMenuEo : getList) {
SarFileSplitMenu sarFileSplitMenu = new SarFileSplitMenu();
sarFileSplitMenu.setId(sarFileSplitMenuEo.getId());
sarFileSplitMenu.setPid(sarFileSplitMenuEo.getPId());
sarFileSplitMenu.setItemName(sarFileSplitMenuEo.getItemName());
sarFileSplitMenu.setName(sarFileSplitMenuEo.getName());
listSarFileSplitMenu.add(sarFileSplitMenu);
}
SplitResult splitResult = new SplitResult();
if(!CollectionUtils.isEmpty(listSarFileSplitMenu)){
List<String> listIds = listSarFileSplitMenu.stream().map(SarFileSplitMenu::getId).collect(Collectors.toList());
LambdaQueryWrapper<LawsDocumentSplit> queryLawsDocumentSplit = new LambdaQueryWrapper<>();
queryLawsDocumentSplit.in(LawsDocumentSplit::getMenuId,listIds);
queryLawsDocumentSplit.eq(LawsDocumentSplit::getDelFlag,"0");
List<LawsDocumentSplit> listLawsDocumentSplit = lawsDocumentSplitMapper.selectList(queryLawsDocumentSplit);
if(!CollectionUtils.isEmpty(listLawsDocumentSplit)){
List<DocumentSplitDetail> listDocumentSplitDetail = JSON.parseArray(JSON.toJSONString(listLawsDocumentSplit),DocumentSplitDetail.class);
splitResult.setDocumentSplitDetail(listDocumentSplitDetail);
}
List<SarFileSplitMenu> finalResult = listSarFileSplitMenu;
listSarFileSplitMenu = listSarFileSplitMenu.stream().filter(v -> StringUtils.isBlank(v.getPid()))
.peek(v -> v.setChildren(createChildList(v, finalResult))).collect(Collectors.toList());
splitResult.setSarFileSplitMenuEO(JSON.toJSONString(listSarFileSplitMenu));
}
byFileRows.setSplitResult(splitResult);
}
}
}
private void setHasSplit(JSONObject requests, StandardVO standardVO) {
if(!Objects.isNull(requests.get("hasSplit"))){
Boolean hasSplit = Boolean.parseBoolean(requests.get("hasSplit").toString());
boolean hasSplit = Boolean.parseBoolean(requests.get("hasSplit").toString());
if(hasSplit){
standardVO.setHasSplit("1");
}else{
@@ -251,28 +267,28 @@ public class SrmsApiServiceImpl implements SrmsApiService {
@Override
public Result<List<ProductDesign>> getByLawsProductDesign(JSONObject json, HttpServletRequest req) {
// 验证token
String token = req.getHeader("X-Access-Token");
String token = req.getHeader(X_ACCESS_TOKEN);
if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){
Result.error(SYS_ERR);
return Result.error(SYS_ERR);
}
JSONArray requests = JSON.parseArray(JSON.toJSONString(json.get(REQUESTS)));
if(CollectionUtils.isEmpty(requests)){
Result.error("必填项不能为空");
return Result.error(ADD_NOT_NULL);
}
List<ProductDesign> listProductDesign = new ArrayList<>();
for (Object request : requests) {
JSONObject js = JSON.parseObject(JSON.toJSONString(request));
// todo || !js.containsKey("queryLabels")
if(!js.containsKey("ID") || !js.containsKey("standardNumber") ){
Result.error("必填项不能为空");
if(!js.containsKey("ID") || !js.containsKey(STANDARD_NUMBER) ){
Result.error(ADD_NOT_NULL);
}
// todo || Objects.isNull(js.get("queryLabels"))
if(Objects.isNull(js.get("ID")) || Objects.isNull(js.get("standardNumber"))){
Result.error("必填项不能为空");
if(Objects.isNull(js.get("ID")) || Objects.isNull(js.get(STANDARD_NUMBER))){
Result.error(ADD_NOT_NULL);
}
ProductDesign productDesign = new ProductDesign();
productDesign.setId(js.get("ID").toString());
productDesign.setStandardNumber(js.get("standardNumber").toString());
productDesign.setStandardNumber(js.get(STANDARD_NUMBER).toString());
productDesign.setQueryLabels(js.get("queryLabels").toString());
listProductDesign.add(productDesign);
}
@@ -283,8 +299,198 @@ public class SrmsApiServiceImpl implements SrmsApiService {
}
return Result.OK(listProductDesign);
}catch (Exception e){
log.error("标准法规文档查询异常:",e);
log.error("设计导航-产品设计条款查询异常:",e);
return Result.error("操作失败" + e.getMessage());
}
}
@Override
public Result<List<StandardTree>> getByLawsSystem(JSONObject json, HttpServletRequest req) {
// 验证token
String token = req.getHeader(X_ACCESS_TOKEN);
if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){
return Result.error(SYS_ERR);
}
JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS)));
String nodeName = "";
if(!Objects.isNull(requests) && requests.containsKey("nodeName")){
nodeName = requests.get("nodeName").toString();
}
try {
List<StandardTree> listStandardTreeAll = new ArrayList<>();
// 企业标准
List<LawsTreeNodeModel> listEnterprise = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.ENTERPRISE_STANDARDS.getValue(), nodeName, "1");
getStandardTree(listStandardTreeAll, listEnterprise);
// 国内标准
List<LawsTreeNodeModel> listDomestic = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.DOMESTIC_REGULATIONS.getValue(), nodeName, "1");
getStandardTree(listStandardTreeAll, listDomestic);
// 海外标准
List<LawsTreeNodeModel> listForeign = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.FOREIGN_REGULATIONS.getValue(), nodeName, "1");
getStandardTree(listStandardTreeAll, listForeign);
return Result.OK(listStandardTreeAll);
}catch (Exception e){
log.error("获取所有体系数据异常:",e);
return Result.error("操作失败" + e.getMessage());
}
}
private void getStandardTree(List<StandardTree> listStandardTreeAll, List<LawsTreeNodeModel> listEnterprise) {
if (!CollectionUtils.isEmpty(listEnterprise)) {
Optional<LawsTreeNodeModel> op = listEnterprise.stream().filter(o -> StringUtils.isBlank(o.getParentId())).findFirst();
if (op.isPresent()) {
LawsTreeNodeModel lawsTreeNodeModel = op.get();
StandardTree standardTree = new StandardTree();
standardTree.setNodeCode(lawsTreeNodeModel.getNodeCode());
standardTree.setNodeName(lawsTreeNodeModel.getNodeName());
if (!CollectionUtils.isEmpty(lawsTreeNodeModel.getChildren())) {
List<StandardTree> sub = getTree(lawsTreeNodeModel.getChildren());
if (!CollectionUtils.isEmpty(sub)) {
standardTree.setChildren(sub);
}
}
listStandardTreeAll.add(standardTree);
}
}
}
private List<StandardTree> getTree(List<LawsTreeNodeModel> listEnterprise){
if(CollectionUtils.isEmpty(listEnterprise)){
return Collections.emptyList();
}
List<StandardTree> list = new ArrayList<>();
for (LawsTreeNodeModel treeNodeModel : listEnterprise) {
StandardTree obj = new StandardTree();
obj.setNodeCode(treeNodeModel.getNodeCode());
obj.setNodeName(treeNodeModel.getNodeName());
List<LawsTreeNodeModel> listSub = treeNodeModel.getChildren();
if(!CollectionUtils.isEmpty(listSub)){
List<StandardTree> listStandardTree = getTree(listSub);
if(!CollectionUtils.isEmpty(listStandardTree)){
obj.setChildren(listStandardTree);
}
}
list.add(obj);
}
return list;
}
@Override
public Result<IPage<StandardPageVO>> getByLawsStandardPage(JSONObject json, HttpServletRequest req) {
// 验证token
String token = req.getHeader(X_ACCESS_TOKEN);
if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){
return Result.error(SYS_ERR);
}
JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS)));
if(Objects.isNull(requests)){
return Result.error(ADD_NOT_NULL);
}
String pageNoKey = "pageNo";
String pageSizeKey = "pageSize";
if(!requests.containsKey(pageNoKey) || !requests.containsKey(pageSizeKey) ){
return Result.error(ADD_NOT_NULL);
}
try {
Long.parseLong(requests.get(pageNoKey).toString());
Long.parseLong(requests.get(pageSizeKey).toString());
}catch (Exception e){
return Result.error(ADD_NOT_NULL);
}
QueryWrapper<StandardPageVO> queryStandardPageVO = new QueryWrapper<>();
setQuery(requests, queryStandardPageVO);
String columnKey = "column";
if(requests.containsKey(columnKey) && !StringUtils.isBlank(requests.get(columnKey).toString())){
String[] column = requests.get(columnKey).toString().split(",");
String[] order = null;
String orderKey = "order";
if(requests.containsKey(orderKey) && StringUtils.isBlank(requests.get(orderKey).toString())){
order = requests.get(orderKey).toString().split(",");
if(column.length != order.length){
return Result.error("排序参数异常");
}
}
setOrder(queryStandardPageVO, column, order);
}
Page<StandardPageVO> page = new Page<>(Long.parseLong(requests.get(pageNoKey).toString()),
Long.parseLong(requests.get(pageSizeKey).toString()));
IPage<StandardPageVO> pageList =lawsStandardMapper.getByLawsStandardPage(page,queryStandardPageVO);
getListStandardPageVO(pageList);
return Result.OK(pageList);
}
private void setQuery(JSONObject requests, QueryWrapper<StandardPageVO> queryStandardPageVO) {
String nodeCodeKey = "nodeCode";
if(requests.containsKey(nodeCodeKey) && !StringUtils.isEmpty(requests.get(nodeCodeKey).toString())){
String nodeCode = requests.get(nodeCodeKey).toString();
queryStandardPageVO.eq(!StringUtils.isEmpty(nodeCode),"l.node_code",nodeCode);
}
if(requests.containsKey(STANDARD_NUMBER) && !StringUtils.isEmpty(requests.get(STANDARD_NUMBER).toString())){
String standardNumber = requests.get(STANDARD_NUMBER).toString();
queryStandardPageVO.like("standard_number",standardNumber);
}
if(requests.containsKey(STANDARD_NAME) && !StringUtils.isEmpty(requests.get(STANDARD_NAME).toString())){
String standardName = requests.get(STANDARD_NAME).toString();
queryStandardPageVO.like("standard_name",standardName);
}
}
private void setOrder(QueryWrapper<StandardPageVO> queryStandardPageVO, String[] column, String[] order) {
for (int i = 0; i < column.length; i++) {
if(Objects.isNull(order)){
queryStandardPageVO.orderByDesc(column[i]);
}else{
if(Objects.equals(order[i],"asc") || Objects.equals(order[i],"ASC")){
queryStandardPageVO.orderByAsc(column[i]);
}else{
queryStandardPageVO.orderByDesc(column[i]);
}
}
}
}
private void getListStandardPageVO(IPage<StandardPageVO> pageList) {
List<StandardPageVO> listStandardPageVO = pageList.getRecords();
if(CollectionUtils.isEmpty(listStandardPageVO)){
return;
}
List<String> listFileId = listStandardPageVO.stream().map(StandardPageVO::getId).collect(Collectors.toList());
QueryWrapper<OSSFile> queryOssFile = new QueryWrapper<>();
queryOssFile.eq("lower(right(url, 4))",".pdf");
queryOssFile.lambda().in(OSSFile::getStandardId,listFileId);
queryOssFile.lambda().eq(OSSFile::getStandardFileType,PUBLISH_OF_ORIGINAL);
queryOssFile.lambda().orderByDesc(OSSFile::getCreateTime);
List<OSSFile> listOssFile = ossFileService.list(queryOssFile);
List<StandardPageVO> listStandardPageVOPartName = listStandardPageVO.stream().filter(o->!StringUtils.isBlank(o.getPartCategoryNum())).collect(Collectors.toList());
List<PartName> listPartName = new ArrayList<>();
if(!CollectionUtils.isEmpty(listStandardPageVOPartName)){
List<String> listPartCategoryNum = listStandardPageVOPartName.stream().map(StandardPageVO::getPartCategoryNum).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listPartCategoryNum)){
// 零件号查询
LambdaQueryWrapper<PartName> queryPartName = new LambdaQueryWrapper<>();
queryPartName.in(PartName::getCode, Arrays.stream(String.join(",",listPartCategoryNum).split(",")).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList()));
listPartName = partNameService.list(queryPartName);
}
}
for (StandardPageVO standardPageVO : listStandardPageVO) {
standardPageVO.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", standardPageVO.getStandardState()));
if(!CollectionUtils.isEmpty(listOssFile)){
List<OSSFile> listOssFileOne = listOssFile.stream().filter(o-> Objects.equals(o.getStandardId(),standardPageVO.getId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listOssFileOne)){
listOssFileOne = listOssFileOne.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList());
standardPageVO.setStandardUrl(listOssFileOne.get(0).getUrl());
}
}
// 零件号查询
if(!CollectionUtils.isEmpty(listPartName)){
List<PartName> listPartNameNew = listPartName.stream().filter(o->Arrays.asList(standardPageVO.getPartCategoryNum().split(",")).contains(o.getCode())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listPartNameNew)){
List<String> listName = listPartNameNew.stream().map(PartName::getName).collect(Collectors.toList());
standardPageVO.setPartCategoryName(String.join(",",listName));
}
}
}
}
}
@@ -0,0 +1,64 @@
package com.jero.modules.docking.srms.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @author lqt
* @version 1.0
* @date 2024/1/19 14:58
*/
@Data
public class StandardPageVO implements Serializable {
/**
* id
*/
private String id;
/**
* 零部件-分类内部码(精准查询)
*/
private String partCategoryNum;
/**
* 零部件-分类名称
*/
private String partCategoryName;
/**
* 标准编号
*/
private String standardNumber;
/**
* 标准名称
*/
private String standardName;
/**
* 标准英文名称
*/
private String standardEnglishName;
/**
* 标准状态
*/
private String standardState;
/**
* 标准状态
*/
private String standardState_dictText;
/**
* 发布日期(转成字符串传)
* 示例:2024-01-05
*/
private String releaseDate;
/**
* 实施日期
* 示例:2024-01-05
*/
private String implementationDate;
/**
* 标准跳转链接,即发布稿查看链接(url+at信息),试验存在
*/
private String standardUrl;
}
@@ -0,0 +1,27 @@
package com.jero.modules.docking.srms.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author lqt
* @version 1.0
* @date 2024/1/21 18:44
*/
@Data
public class StandardTree implements Serializable {
/**
* 节点编码
*/
private String nodeCode;
/**
* 节点名称
*/
private String nodeName;
/**
* 子集
*/
private List<StandardTree> children;
}