From 160c6266d36f295a5237a5bd197be5879a82e269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Fri, 19 Jan 2024 17:15:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0srms=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/service/ILoginService.java | 7 + .../system/service/impl/LoginServiceImpl.java | 23 ++ .../srms/controller/SrmsApiController.java | 88 +++++++ .../docking/srms/dto/ByFileListRequests.java | 27 ++ .../docking/srms/dto/ByTokenRequests.java | 27 ++ .../modules/docking/srms/dto/StandardVO.java | 41 +++ .../srms/mapper/LawsStandardMapper.java | 28 ++ .../srms/mapper/xml/LawsStandardMapper.xml | 69 +++++ .../docking/srms/service/SrmsApiService.java | 35 +++ .../srms/service/impl/SrmsApiServiceImpl.java | 245 ++++++++++++++++++ .../modules/docking/srms/vo/ByFileRows.java | 63 +++++ .../docking/srms/vo/DocumentSplitDetail.java | 35 +++ .../docking/srms/vo/SarFileSplitMenu.java | 37 +++ .../modules/docking/srms/vo/SplitResult.java | 24 ++ .../modules/docking/utils/ResponsesUtil.java | 48 ++++ .../service/ISarFileSplitMenuEOService.java | 2 + .../impl/SarFileSplitMenuEOServiceImpl.java | 45 ++++ .../src/main/resources/application-dev.yml | 7 + 18 files changed, 851 insertions(+) create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/StandardVO.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/ILoginService.java b/laws-module-system/src/main/java/com/jero/modules/system/service/ILoginService.java index ff3610b9..24e398cf 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/ILoginService.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/ILoginService.java @@ -113,4 +113,11 @@ public interface ILoginService{ * @return com.jero.common.api.vo.Result */ public Result getRSAPublicKey(); + + /** + * srms获取token + * @param username 用户名 + * @return + */ + public Result srmsByToken(String username); } diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java index 143e4a9f..7fff47bd 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java @@ -625,6 +625,8 @@ public class LoginServiceImpl implements ILoginService { return result; } + + /** * 用户信息 * @@ -706,4 +708,25 @@ public class LoginServiceImpl implements ILoginService { result.setMessage("登录成功"); return result; } + + @Override + public Result srmsByToken(String userName) { + // 获取用户信息 + SysUser sysUser = sysUserService.getUserByName(userName); + // 校验用户是否有效 + Result result = sysUserService.checkUserIsEffective(sysUser); + if(!result.isSuccess()) { + return result; + } + if (checkSysPermission(sysUser.getUsername())) { + return Result.error("该用户无权限,请联系管理员"); + } + //用户登录信息 + userInfo(sysUser, result); + //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + LoginUser loginUser = new LoginUser(); + BeanUtils.copyProperties(sysUser, loginUser); + baseCommonService.addLog(USER_NAME + userName + LOGIN_SUCCEED, CommonConstant.LOG_TYPE_1, null,loginUser); + return result; + } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java new file mode 100644 index 00000000..d300c8d8 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java @@ -0,0 +1,88 @@ +package com.jero.modules.docking.srms.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.modules.docking.srms.service.SrmsApiService; +import com.jero.modules.docking.srms.vo.ByFileRows; +import com.jero.modules.docking.utils.ResponsesUtil; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 9:52 + */ +@Slf4j +@RestController +@RequestMapping("/srms") +public class SrmsApiController { + @Resource + private SrmsApiService srmsApiService; + + private static final String MESSAGE_HEADER = MESSAGE_HEADER; + + @ApiOperation("获取token") + @PostMapping("/getByToken") + public JSONObject getByToken(@RequestBody JSONObject json){ + try { + Result re = srmsApiService.getByToken(json); + if(!re.isSuccess()){ + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage())); + } + String token = re.getResult().get("token").toString(); + JSONObject jsonResponses = ResponsesUtil.getJsonOk(); + jsonResponses.put("token",token); + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); + }catch (Exception e){ + log.error("获取token异常:",e); + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败")); + } + } + + @ApiOperation("标准法规文档查询") + @PostMapping("/getByLawsFileList") + public JSONObject getByLawsFileList(@RequestBody JSONObject json, HttpServletRequest req){ + try { + Result> re = srmsApiService.getByLawsFileList(json,req); + if(!re.isSuccess()){ + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage())); + } + List list = re.getResult(); + JSONObject jsonResponses = ResponsesUtil.getJsonOk(); + jsonResponses.put("Rows",list); + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); + }catch (Exception e){ + log.error("获取token异常:",e); + return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败")); + } + } + +// @ApiOperation("设计导航-产品设计条款查询") +// @PostMapping("/getByLawsDesignNavigation") +// public JSONObject getByLawsDesignNavigation(@RequestBody JSONObject json, HttpServletRequest req){ +// try { +// Result re = srmsApiService.getByLawsFileList(json,req); +// if(!re.isSuccess()){ +// return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage())); +// } +// JSONArray jsonArray = re.getResult(); +// JSONObject jsonResponses = ResponsesUtil.getJsonOk(); +// jsonResponses.put("Rows",jsonArray); +// return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); +// }catch (Exception e){ +// log.error("获取token异常:",e); +// return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败")); +// } +// } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java new file mode 100644 index 00000000..9c571fc5 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java @@ -0,0 +1,27 @@ +package com.jero.modules.docking.srms.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 10:10 + */ +@Data +public class ByFileListRequests implements Serializable { + + /** + * 工号(唯一值) + */ + private String partCategoryNum; + /** + * 系统的key值(对接时SRMS提供) + */ + private String partCategoryName; + /** + * 系统对应秘钥(对接时SRMS提供) + */ + private String secret; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java new file mode 100644 index 00000000..903a93ea --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java @@ -0,0 +1,27 @@ +package com.jero.modules.docking.srms.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 10:10 + */ +@Data +public class ByTokenRequests implements Serializable { + + /** + * 工号(唯一值) + */ + private String username; + /** + * 系统的key值(对接时SRMS提供) + */ + private String appkey; + /** + * 系统对应秘钥(对接时SRMS提供) + */ + private String secret; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/StandardVO.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/StandardVO.java new file mode 100644 index 00000000..36c543e9 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/StandardVO.java @@ -0,0 +1,41 @@ +package com.jero.modules.docking.srms.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/19 14:58 + */ +@Data +public class StandardVO implements Serializable { + + /** + * 零部件-分类内部码(精准查询) + */ + private String partCategoryNum; + /** + * 零部件-分类名称 + */ + private String partCategoryName; + /** + * 标准编号 + */ + private String standardNumber; + /** + * 标准名称 + */ + private String standardName; + /** + * 标准状态 + */ + private String standardState; + /** + * 是否存在拆分信息,1 成功 2 null + */ + private String hasSplit; + + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java new file mode 100644 index 00000000..9eb2a97e --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java @@ -0,0 +1,28 @@ +package com.jero.modules.docking.srms.mapper; + +import com.jero.modules.docking.srms.dto.StandardVO; +import com.jero.modules.docking.srms.vo.ByFileRows; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description: ASMS国内法规 + * @Author: jero-boot + * @Date: 2023-10-20 + * @Version: V1.0 + */ +@Mapper +public interface LawsStandardMapper{ + + /** + * + * @author LQT + * @date 2024/1/19 15:43 + * @param standard + * @return java.util.List + */ + List getStandard(@Param("standard") StandardVO standard); + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml new file mode 100644 index 00000000..a05fcd9d --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml @@ -0,0 +1,69 @@ + + + + + + diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java new file mode 100644 index 00000000..af4ca3f9 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java @@ -0,0 +1,35 @@ +package com.jero.modules.docking.srms.service; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.modules.docking.srms.vo.ByFileRows; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 9:49 + */ +public interface SrmsApiService { + + /** + * 获取token + * @author LQT + * @date 2024/1/18 15:41 + * @param json + * @return com.jero.common.api.vo.Result + */ + Result getByToken(JSONObject json); + + /** + * 标准法规文档查询 + * @author LQT + * @date 2024/1/18 16:59 + * @param json + * @param req + * @return com.alibaba.fastjson.JSONObject + */ + Result> getByLawsFileList(JSONObject json, HttpServletRequest req); +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java new file mode 100644 index 00000000..c26cd20c --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java @@ -0,0 +1,245 @@ +package com.jero.modules.docking.srms.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.common.api.vo.Result; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.util.JwtUtil; +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.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.laws.documenttool.entity.LawsDocumentSplit; +import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; +import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; +import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.split.entity.SarFileSplitInfoEO; +import com.jero.modules.split.entity.SarFileSplitMenuEO; +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 lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 9:53 + */ +@Slf4j +@Service +public class SrmsApiServiceImpl implements SrmsApiService { + + @Resource + private ILoginService loginService; + @Resource + private RedisUtil redisUtil; + @Resource + private ILawsDomesticStandardService lawsDomesticStandardService; + @Resource + private ILawsOverseasStandardService lawsOverseasStandardService; + @Resource + private ILawsEnterpriseStandardService lawsEnterpriseStandardService; + @Resource + private ISarFileSplitMenuEOService sarFileSplitMenuEOService; + @Resource + private ISarFileSplitInfoService sarFileSplitInfoService; + @Resource + private LawsDocumentSplitMapper lawsDocumentSplitMapper; + @Resource + private LawsStandardMapper lawsStandardMapper; + + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private IOSSFileService ossFileService; + + @Value("${srms.app_key}") + private String appKey; + @Value("${srms.secret}") + private String secret; + + private static final String SRMS_TOKEN = "srms_token_"; + + + @Override + public Result getByToken(JSONObject json) { + try { + ByTokenRequests byTokenRequests = JSON.parseObject(JSON.toJSONString(json.get("Requests")),ByTokenRequests.class); + // 验证数据必填项 + if(StringUtils.isAllBlank(byTokenRequests.getUsername()) + || StringUtils.isBlank(byTokenRequests.getAppkey()) + || StringUtils.isBlank(byTokenRequests.getSecret())){ + return Result.error("必填项不能为空"); + } + if(!Objects.equals(appKey,byTokenRequests.getAppkey()) || !Objects.equals(secret,byTokenRequests.getSecret())){ + return Result.error("系统验证失败"); + } + Result re = Result.OK(); + String tokenKey = SRMS_TOKEN + byTokenRequests.getUsername(); + // 验证用户是否存在token,存在不再重复获取 + if(redisUtil.hasKey(tokenKey)){ + JSONObject js = new JSONObject(); + js.put("token",redisUtil.get(tokenKey)); + re.setResult(js); + }else{ + re = loginService.srmsByToken(byTokenRequests.getUsername()); + String token = re.getResult().get("token").toString(); + redisUtil.set(tokenKey,token,JwtUtil.EXPIRE_TIME / 1000); + } + return re; + }catch (Exception e){ + log.error("获取token异常:",e); + return Result.error("操作失败"); + } + } + + @Override + public Result> getByLawsFileList(JSONObject json, HttpServletRequest req) { + try { + // 验证token + String token = req.getHeader("X-Access-Token"); + if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){ + Result.error("系统验证失败"); + } + JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get("Requests"))); + StandardVO standardVO = new StandardVO(); + // 零部件-分类内部码(精准查询) + String partCategoryNum = getStr(requests, "partCategoryNum"); + if(StringUtils.isBlank(partCategoryNum)){ + Result.error("零部件-分类内部码不能为空"); + } + standardVO.setPartCategoryNum(partCategoryNum); + // 零部件-分类名称 + String partCategoryName = getStr(requests, "partCategoryName"); + standardVO.setPartCategoryName(partCategoryName); + // 标准编号 + String standardNumber = getStr(requests, "standardNumber"); + standardVO.setStandardNumber(standardNumber); + // 标准名称 + String standardName = getStr(requests, "standardName"); + standardVO.setStandardName(standardName); + // 标准状态 + String standardState = getStr(requests, "standardState"); + standardVO.setStandardState(standardState); + // 是否存在拆分信息,默认false; true-是,false-否 + if(!Objects.isNull(requests.get("hasSplit"))){ + Boolean hasSplit = Boolean.parseBoolean(requests.get("hasSplit").toString()); + if(hasSplit){ + standardVO.setHasSplit("1"); + }else{ + standardVO.setHasSplit("2"); + } + } + // 备用字段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 listByFileRows = lawsStandardMapper.getStandard(standardVO); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if(!CollectionUtils.isEmpty(listByFileRows)){ + List listFileId = listByFileRows.stream().map(ByFileRows::getId).collect(Collectors.toList()); + LambdaQueryWrapper queryOssFile = new LambdaQueryWrapper<>(); + queryOssFile.in(OSSFile::getStandardId,listFileId); + queryOssFile.eq(OSSFile::getStandardFileType,"publish_of_original"); + queryOssFile.orderByDesc(OSSFile::getCreateTime); + List listOssFile = ossFileService.list(queryOssFile); + for (ByFileRows byFileRows : listByFileRows) { + byFileRows.setPartCategoryNum(partCategoryNum); + byFileRows.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", byFileRows.getStandardState())); + if(!CollectionUtils.isEmpty(listOssFile)){ + List listFile = listOssFile.stream().filter(o->Objects.equals(o.getStandardId(),byFileRows.getId())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listFile)){ + listFile = listFile.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); + byFileRows.setStandardUrl(listFile.get(0).getUrl()); + } + } + LambdaQueryWrapper querySarFileSplitInfoEo = new LambdaQueryWrapper<>(); + querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getStandardId,byFileRows.getId()); + querySarFileSplitInfoEo.isNull(SarFileSplitInfoEO::getPublishBeforeId); + 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 getList = sarFileSplitMenuEOService.queryByApiList(page); + if(!CollectionUtils.isEmpty(getList)){ + List 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 listIds = listSarFileSplitMenu.stream().map(SarFileSplitMenu::getId).collect(Collectors.toList()); + LambdaQueryWrapper queryLawsDocumentSplit = new LambdaQueryWrapper<>(); + queryLawsDocumentSplit.in(LawsDocumentSplit::getMenuId,listIds); + queryLawsDocumentSplit.eq(LawsDocumentSplit::getDelFlag,"0"); + List listLawsDocumentSplit = lawsDocumentSplitMapper.selectList(queryLawsDocumentSplit); + if(!CollectionUtils.isEmpty(listLawsDocumentSplit)){ + List listDocumentSplitDetail = JSON.parseArray(JSON.toJSONString(listLawsDocumentSplit),DocumentSplitDetail.class); + splitResult.setDocumentSplitDetail(listDocumentSplitDetail); + } + + List 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); + } + } + } + } + return Result.OK(listByFileRows); + }catch (Exception e){ + log.error("标准法规文档查询异常:",e); + return Result.error("操作失败" + e.getMessage()); + } + } + + private String getStr(JSONObject requests, String partCategoryNum) { + return requests.containsKey(partCategoryNum) ? requests.get(partCategoryNum).toString() : ""; + } + + private List createChildList(SarFileSplitMenu testTree, List treeList) { + return treeList.stream().filter(v -> testTree.getId().equals(v.getPid())) + .peek(v -> v.setChildren(createChildList(v, treeList))) + .collect(Collectors.toList()); + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java new file mode 100644 index 00000000..2ba7e0d0 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java @@ -0,0 +1,63 @@ +package com.jero.modules.docking.srms.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/19 8:51 + */ +@Data +public class ByFileRows 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; + + private SplitResult splitResult; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java new file mode 100644 index 00000000..0cb5df25 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java @@ -0,0 +1,35 @@ +package com.jero.modules.docking.srms.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/19 8:58 + */ +@Data +public class DocumentSplitDetail implements Serializable { + + /** + * 条款主键 + */ + private String id; + /** + * 目录id 和sarFileSplitMenuEO中对应 + */ + private String menuId; + /** + * 条款内容 + */ + private String itemContent; + /** + * 条款号 + */ + private String itemNum; + /** + * 条款标题 + */ + private String itemTitle; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java new file mode 100644 index 00000000..f147e09a --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java @@ -0,0 +1,37 @@ +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/19 13:55 + */ +@Data +public class SarFileSplitMenu implements Serializable { + + /** + * id + */ + private String id; + /** + * + */ + private String itemName; + /** + * + */ + private String name; + /** + * + */ + private String pid; + + /** + * + */ + private List children; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java new file mode 100644 index 00000000..c12b6fac --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java @@ -0,0 +1,24 @@ +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/19 8:57 + */ +@Data +public class SplitResult implements Serializable { + + /** + * 文档拆分详情 + */ + private List documentSplitDetail; + /** + * 条款信息的全部内容 + */ + private String sarFileSplitMenuEO; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java new file mode 100644 index 00000000..ca2c43d8 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java @@ -0,0 +1,48 @@ +package com.jero.modules.docking.utils; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.constant.CommonConstant; + +/** + * @author lqt + * @version 1.0 + * @date 2024/1/18 14:45 + */ +public class ResponsesUtil { + + + public static JSONObject getJsonResult(Object jsonMessageHeader,JSONObject jsonResponses) { + JSONObject json = new JSONObject(); + json.put("MessageHeader",jsonMessageHeader); + json.put("Responses",jsonResponses); + return json; + } + + public static JSONObject getJsonOk() { + return getJsonOk(""); + } + + public static JSONObject getJsonOk(String message) { + JSONObject jsonResponses = new JSONObject(); + jsonResponses.put("srmsCode",CommonConstant.SC_OK_200); + jsonResponses.put("message",message); + jsonResponses.put("success",true); + jsonResponses.put("timestamp",System.currentTimeMillis()); + return jsonResponses; + } + + public static JSONObject getJsonErr() { + return getJsonErr(""); + } + + public static JSONObject getJsonErr(String message) { + JSONObject jsonResponses = new JSONObject(); + jsonResponses.put("srmsCode",CommonConstant.SC_INTERNAL_SERVER_ERROR_500); + jsonResponses.put("message",message); + jsonResponses.put("success",false); + jsonResponses.put("timestamp",System.currentTimeMillis()); + return jsonResponses; + } + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/ISarFileSplitMenuEOService.java b/laws-modules/src/main/java/com/jero/modules/split/service/ISarFileSplitMenuEOService.java index c3e8a567..07647548 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/ISarFileSplitMenuEOService.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/ISarFileSplitMenuEOService.java @@ -47,6 +47,8 @@ public interface ISarFileSplitMenuEOService extends IService List queryByList(SarFileSplitMenuEOPage page); + List queryByApiList(SarFileSplitMenuEOPage page); + int queryByCount(SarFileSplitMenuEOPage page); List queryByPage(SarFileSplitMenuEOPage page); diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java index 990cab04..73e3328f 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitMenuEOServiceImpl.java @@ -223,6 +223,51 @@ public class SarFileSplitMenuEOServiceImpl extends ServiceImpl v.setChildren(createChildList(v, finalResult))).collect(Collectors.toList()); } + @Override + public List queryByApiList(SarFileSplitMenuEOPage page) { + String itemName; + if (StringUtils.isNotBlank(page.getName())){ + itemName = page.getName(); + page.setName(null); + } else { + itemName = ""; + } + List result = dao.queryByList(page); + + // 处理数据是否可以上下移动标识 + for (SarFileSplitMenuEO sarFileSplitMenuEO : result) { + // 如果数据的同级别 该数据是第一条数据,不能向上移动, 该数据是最后一条数据 不能向下移动, 如果该级别只有这一条数据,不可向上或向下移动 + boolean moveUpFlag = false; + boolean moveDownFlag = false; + Long displaySeq = sarFileSplitMenuEO.getDisplaySeq(); + for (SarFileSplitMenuEO fileSplitMenuEO : result) { + if(StringUtils.equals(sarFileSplitMenuEO.getPId(),fileSplitMenuEO.getPId())){ + if(displaySeq > fileSplitMenuEO.getDisplaySeq()){ + moveUpFlag = true; + }else if(displaySeq < fileSplitMenuEO.getDisplaySeq()){ + moveDownFlag = true; + } + } + } + sarFileSplitMenuEO.setMoveUpFlag(moveUpFlag); + sarFileSplitMenuEO.setMoveDownFlag(moveDownFlag); + } + + // 关键字查询 + if (StringUtils.isNotBlank(itemName) && !result.isEmpty()){ + List trees = result.stream() + .filter(v -> (StringUtils.isNotBlank(v.getItemName()) + && v.getItemName().contains(itemName)) || v.getName().contains(itemName)) + .collect(Collectors.toList()); + // 递归查找所有符合项的父节点 + List newTrees = new ArrayList<>(trees); + queryTreeFather(result, trees, newTrees); + // 过滤重复项 + result = newTrees.stream().distinct().collect(Collectors.toList()); + } + return result; + } + private void queryTreeFather(List treeList, List trees, List newTrees) { for (SarFileSplitMenuEO tree : trees) { // 父节点 diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index ca8c3b0b..79c02353 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -476,3 +476,10 @@ watermark: margin: top: 100 left: 60 + +# srms 接口对接 +srms: + # 系统的key值 + app_key: eeabe117f06a4d99a15582a143d3be54 + # 系统对应秘钥 + secret: 7ddbafa5b7ba4104bff5ffae9d775998