123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- package cn.cslg.pas.service.business;
- import cn.cslg.pas.common.dto.business.TreeNodeDTO;
- import cn.cslg.pas.common.model.cronModel.*;
- import cn.cslg.pas.common.model.request.GroupRequest;
- import cn.cslg.pas.common.model.request.QueryRequest;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.common.vo.business.TreeNodeVO;
- import cn.cslg.pas.domain.business.AssoTreeNodeFile;
- import cn.cslg.pas.domain.business.TreeNode;
- import cn.cslg.pas.exception.UnLoginException;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.factorys.businessFactory.Business;
- import cn.cslg.pas.mapper.TreeNodeMapper;
- import cn.cslg.pas.service.common.FileManagerService;
- import cn.cslg.pas.service.permissions.PermissionService;
- import cn.cslg.pas.service.query.FormatQueryService;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * 架构的Service层
- * @Author xiexiang
- * @Date 2023/10/26
- */
- @Service
- @Slf4j
- public class TreeNodeService extends ServiceImpl<TreeNodeMapper, TreeNode> implements Business {
- @Autowired
- private TreeNodeMapper treeNodeMapper;
- @Autowired
- private AssoTreeNodeFileService assoTreeNodeFileService;
- @Autowired
- private FileManagerService fileManagerService;
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- @Autowired
- private FormatQueryService formatQueryService;
- @Autowired
- private PermissionService permissionService;
- @Override
- public Object queryMessage(QueryRequest queryRequest) throws Exception {
- List<String> sqls = formatQueryService.reSqls(queryRequest,"treeNode");
- //根据sql查询产品架构信息
- List<TreeNodeVO> treeNodeVOS = treeNodeMapper.getTreeNode(sqls.get(0),sqls.get(1),sqls.get(2));
- //装载产品类别信息
- this.loadTreeNode(treeNodeVOS);
- Records records = new Records();
- records.setCurrent(queryRequest.getCurrent());
- records.setSize(queryRequest.getSize());
- records.setData(treeNodeVOS);
- // records.setTotal(total);
- return records;
- }
- /**
- * 新增架构
- * @param object
- * @param files
- * @return
- */
- @Override
- public Object addMessage(Object object, List<MultipartFile> files) {
- //object to treeNode
- TreeNodeDTO treeNodeDTO = (TreeNodeDTO)object;
- //获取登录人信息
- PersonnelVO personnelVO = new PersonnelVO();
- try {
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- }
- catch (Exception e)
- {
- throw new UnLoginException("未登录");
- }
- treeNodeDTO.setName(treeNodeDTO.getName().trim());
- //根据名称查询是否重复
- String name = treeNodeDTO.getName();
- LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TreeNode::getName, name);
- List<TreeNode> treeNodes = this.list(queryWrapper);
- if(treeNodes != null && treeNodes.size() != 0){
- throw new XiaoShiException("参数错误");
- }
- //赋值
- TreeNode treeNode = new TreeNode();
- BeanUtils.copyProperties(treeNodeDTO, treeNode);
- treeNode.setCreateId("1");
- //数据入表
- treeNode.insert();
- //处理文件
- if(files != null && files.size() != 0){
- try {
- List<String> guids = fileManagerService.uploadFileGetGuid(files);
- List<AssoTreeNodeFile> assoTreeNodeFiles = new ArrayList<>();
- for(String item:guids){
- AssoTreeNodeFile assoTreeNodeFile = new AssoTreeNodeFile();
- assoTreeNodeFile.setTreeNodeId(treeNode.getId());
- assoTreeNodeFile.setFileGuid(item);
- assoTreeNodeFile.setCreateId(personnelVO.getGuid());
- assoTreeNodeFiles.add(assoTreeNodeFile);
- }
- if(assoTreeNodeFiles != null && assoTreeNodeFiles.size() != 0){
- assoTreeNodeFileService.saveBatch(assoTreeNodeFiles);
- }
- } catch (Exception e) {
- }
- }
- //返回id
- return treeNode.getId();
- }
- /**
- * 删除架构
- * @param ids
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Object deleteMessage(List<Integer> ids) throws IOException {
- //根据架构id删除架构和文件关联
- LambdaQueryWrapper<AssoTreeNodeFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(AssoTreeNodeFile::getTreeNodeId, ids);
- List<AssoTreeNodeFile> assoTreeNodeFiles = assoTreeNodeFileService.list(queryWrapper);
- List<String> guids = assoTreeNodeFiles.stream().map(AssoTreeNodeFile::getFileGuid).collect(Collectors.toList());
- //TODO 根据guids删除文件
- if(guids.size() != 0){
- fileManagerService.deleteFileFromFMS(guids);
- }
- //删除架构和文件关联表
- assoTreeNodeFiles.remove(queryWrapper);
- //根据架构id删除架构数据
- this.removeBatchByIds(ids);
- return ids;
- }
- /**
- * 更新架构
- * @param object
- * @param files
- * @return
- */
- @Override
- public Object updateMessage(Object object, List<MultipartFile> files) {
- //object to treeNode
- TreeNodeDTO treeNodeDTO = (TreeNodeDTO)object;
- //获取登录人信息
- PersonnelVO personnelVO;
- try {
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- } catch (Exception e) {
- throw new UnLoginException("未登录");
- }
- treeNodeDTO.setName(treeNodeDTO.getName().trim());
- //根据名称查询是否重复
- String name = treeNodeDTO.getName();
- LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TreeNode::getName, name);
- List<TreeNode> treeNodes = this.list(queryWrapper);
- if(treeNodes == null && treeNodes.size() == 0){
- return null;
- }
- //赋值
- TreeNode treeNode = this.getById(treeNodeDTO.getId());
- BeanUtils.copyProperties(treeNodeDTO, treeNode);
- treeNode.setCreateId(null);
- //数据入表
- treeNode.insert();
- //处理文件
- if(files != null && files.size() != 0){
- try {
- List<String> guids = fileManagerService.uploadFileGetGuid(files);
- List<AssoTreeNodeFile> assoTreeNodeFiles = new ArrayList<>();
- for(String item:guids){
- AssoTreeNodeFile assoTreeNodeFile = new AssoTreeNodeFile();
- assoTreeNodeFile.setTreeNodeId(treeNode.getId());
- assoTreeNodeFile.setFileGuid(item);
- //TODO
- assoTreeNodeFile.setCreateId(null);
- assoTreeNodeFiles.add(assoTreeNodeFile);
- }
- if(assoTreeNodeFiles != null && assoTreeNodeFiles.size() != 0){
- assoTreeNodeFileService.saveBatch(assoTreeNodeFiles);
- }
- } catch (Exception e) {
- }
- }
- //返回id
- return treeNode.getId();
- }
- @Override
- public GroupVO getGroup(GroupRequest groupRequest,String tableName) throws Exception {
- return null;
- }
- private void loadTreeNode(List<TreeNodeVO> treeNodeVOS) throws IOException {
- List<String> createIds = new ArrayList<>();
- List<Integer> ids = new ArrayList<>();
- treeNodeVOS.forEach(
- item -> {
- if(item.getCreateId() != null){
- createIds.add(item.getCreateId());
- }
- if (item.getId() != null) {
- ids.add(item.getId());
- }
- }
- );
- List<Personnel> personnels = new ArrayList<>();
- List<String> guids = new ArrayList<>();
- List<SystemFile> systemFiles = new ArrayList<>();
- List<AssoTreeNodeFile> assoTreeNodeFiles = new ArrayList<>();
- if (ids.size() != 0) {
- //根据架构id获得架构与文件关联表
- LambdaQueryWrapper<AssoTreeNodeFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(AssoTreeNodeFile::getTreeNodeId, ids);
- assoTreeNodeFiles = assoTreeNodeFileService.list(queryWrapper);
- guids = assoTreeNodeFiles.stream().map(AssoTreeNodeFile::getFileGuid).collect(Collectors.toList());
- }
- //查询创建人名称
- if (createIds.size() != 0) {
- String res = permissionService.getPersonnelByIdsFromPCS(createIds);
- JSONObject jsonObject = JSONObject.parseObject(res);
- personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
- }
- //查询文件
- if (guids.size() != 0) {
- String res = fileManagerService.getSystemFileFromFMS(guids);
- JSONObject jsonObject = JSONObject.parseObject(res);
- systemFiles = JSONObject.parseArray(jsonObject.getString("data"), SystemFile.class);
- }
- //装载信息
- for(TreeNodeVO treeNodeVO:treeNodeVOS){
- //装载人员信息
- //TODO
- // Personnel personnel = personnels.stream().filter(item -> item.getId().equals(treeNodeVO.getCreateId())).findFirst().orElse(null);
- // if(personnel != null){
- // treeNodeVO.setCreateName(personnel.getPersonnelName());
- // }
- //装载文件信息
- List<AssoTreeNodeFile> assoTreeNodeFilesTemp = assoTreeNodeFiles.stream().filter(item -> item.getTreeNodeId().equals(treeNodeVO.getId())).collect(Collectors.toList());
- if(assoTreeNodeFilesTemp.size() != 0){
- List<String> guidTemp = assoTreeNodeFilesTemp.stream().map(AssoTreeNodeFile::getFileGuid).collect(Collectors.toList());
- if (guidTemp.size() != 0) {
- List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
- if (systemFileTemp.size() != 0) {
- treeNodeVO.setSystemFileList(systemFileTemp);
- }
- }
- }
- }
- }
- }
|