Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 2 years ago
parent
commit
d3c388f19a

+ 39 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserViewProjectContractController.java

@@ -16,17 +16,22 @@ import org.springblade.business.service.IDefaultProjectService;
 import org.springblade.business.vo.UserVO;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.feign.*;
 import org.springblade.manager.vo.ContractInfoVO;
 import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.manager.vo.ProjectInfoWbsTypeVO;
+import org.springblade.system.entity.Role;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -44,6 +49,8 @@ import java.util.stream.Collectors;
 @Api(tags = "客户端首页")
 public class UserViewProjectContractController {
 
+    private final JdbcTemplate jdbcTemplate;
+
     private final ProjectClient projectClient;
 
     private final ContractClient contractClient;
@@ -129,6 +136,29 @@ public class UserViewProjectContractController {
         //获取合同段ID
         List<String> contractIds = userDownAll.stream().map(SaveUserInfoByProjectDTO::getContractId).distinct().collect(Collectors.toList());
 
+        //获取当前用户角色信息(如果是监理,那么将不查看施工合同段的信息) roleId = 1537246384519335938L = 监理方下所有角色信息
+        String roleIds = SecureUtil.getUser().getRoleId();
+        List<Role> roleList = jdbcTemplate.query("select id from blade_role where parent_id = 1537246384519335938 and is_deleted = 0", new BeanPropertyRowMapper<>(Role.class));
+        List<String> roleIdsJL = roleList.stream().map(Role::getId).map(String::valueOf).collect(Collectors.toList());
+        String[] split = roleIds.split(",");
+        boolean var = true;
+        if (split.length == 1) {
+            //当前用户只有一个角色
+            if (!roleIdsJL.contains(roleIds)) {
+                //角色不属于监理
+                var = false;
+            }
+        } else {
+            //当前用户属于多个角色
+            for (String roleId : split) {
+                if (!roleIdsJL.contains(roleId)) {
+                    //角色不属于监理
+                    var = false;
+                    break;
+                }
+            }
+        }
+
         //获取项目列表
         List<ProjectInfo> projectInfos = this.projectClient.queryProjectList(projectIds);
         if (projectInfos != null && projectInfos.size() != 0) {
@@ -136,6 +166,11 @@ public class UserViewProjectContractController {
             //获取当前所有合同段
             List<ContractInfo> contractInfos = this.contractClient.queryContractListByIds(longProjectIds);
 
+            //如果是监理,那么移除施工合同段信息
+            if (var) {
+                contractInfos.removeIf(next -> next.getContractType() == 1);
+            }
+
             //转换VO
             List<ProjectInfoVO> projectInfoVOS = JSONArray.parseArray(JSONObject.toJSONString(projectInfos), ProjectInfoVO.class);
             if (contractInfos != null && contractInfos.size() != 0) {
@@ -173,6 +208,10 @@ public class UserViewProjectContractController {
                 //排序项目
                 projectInfoVOS.sort(Comparator.comparingInt(ProjectInfoVO::getIsDefault).reversed());
             }
+
+            //剔除没有合同段的项目
+            projectInfoVOS.removeIf(next -> next.getContractInfoList().size() == 0);
+
             return R.data(projectInfoVOS);
         }
         return R.data(-1, null, "数据查询失败");

+ 11 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -1,27 +1,20 @@
 package org.springblade.manager.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.aspose.cells.Worksheet;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
-import org.apache.commons.codec.Charsets;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
-import org.jsoup.select.Selector;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.manager.dto.WbsTreeContractDTO2;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ExcelTab;
@@ -39,14 +32,13 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 @RestController
 @AllArgsConstructor
@@ -60,7 +52,6 @@ public class WbsTreeContractController extends BladeController {
     private final IWbsTreeContractService iWbsTreeContractService;
     private final WbsTreeContractServiceImpl wbsTreeContractServiceImpl;
     private final ContractClient contractClient;
-    private final ExcelTabController excelTabController;
 
     @GetMapping("/search-node-tables")
     @ApiOperationSupport(order = 1)
@@ -256,23 +247,21 @@ public class WbsTreeContractController extends BladeController {
         if (tab != null && Objects.nonNull(tab.getExcelId())) {
             ExcelTab excelTab = jdbcTemplate.queryForObject("select file_url,name from m_excel_tab where id = " + tab.getExcelId(), new BeanPropertyRowMapper<>(ExcelTab.class));
             if (excelTab != null) {
-                InputStream ossInputStream = CommonUtil.getOSSInputStream(excelTab.getFileUrl());
-                Workbook workbook = parseExcelFile(ossInputStream);
-                String fileName = new String(excelTab.getName().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
-                response.setContentType("application/vnd.ms-excel");
-                response.setCharacterEncoding("UTF-8");
-                response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + ".xlsx\"");
-                try (OutputStream toClient = new BufferedOutputStream(response.getOutputStream())) {
-                    workbook.write(toClient);
-                    toClient.flush();
-                } finally {
-                    workbook.close();
+                InputStream inputStream = CommonUtil.getOSSInputStream(excelTab.getFileUrl());
+                try (Workbook workbook = parseExcelFile(inputStream)) {
+                    response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+                    response.setCharacterEncoding("UTF-8");
+                    response.setHeader("Content-disposition", ";filename=" + URLEncoder.encode(excelTab.getName().replace(" ", ""), "UTF-8") + ".xlsx");
+                    ServletOutputStream servletOutputStream = response.getOutputStream();
+                    workbook.write(servletOutputStream);
+                    servletOutputStream.flush();
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
             }
         }
     }
 
-
     //解析Excel文件并设置单元格格式为文本
     private Workbook parseExcelFile(InputStream inputStream) throws IOException, InvalidFormatException {
         Workbook workbook = WorkbookFactory.create(inputStream);

+ 35 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1590,24 +1590,43 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             if (!insertDataPrivateList.isEmpty()) {
                 Map<Long, List<WbsTreePrivate>> tabParentNodesGroup = insertDataPrivateList.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));
                 Set<Long> longs = tabParentNodesGroup.keySet();
-                //获取当前项目下合同段新增或者复制的节点
-                List<WbsTreeContract> addOrCopyNodes = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                //获取当前项目下合同段 新增、复制、原始节点
+                List<WbsTreeContract> addOrCopyOrYsNodes = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
                         .select(WbsTreeContract::getId, WbsTreeContract::getContractId, WbsTreeContract::getOldId)
-                        .in(WbsTreeContract::getOldId, longs).eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()));
-                List<WbsTreeContract> newAddOrCopyNodes = addOrCopyNodes.stream().distinct().collect(Collectors.toList());
-                for (WbsTreeContract addOrCopyNode : newAddOrCopyNodes) {
-                    //合同段节点的oldId=当前表的parentId,也就是说当前表的父级节点=合同段复制、新增出来节点
-                    List<WbsTreePrivate> tabs = tabParentNodesGroup.get(Long.parseLong(addOrCopyNode.getOldId()));
-                    if (tabs.size() > 0) {
-                        List<WbsTreeContract> wbsTreeContractList = BeanUtil.copyProperties(tabs, WbsTreeContract.class);
-                        for (WbsTreeContract wbsTreeContract : wbsTreeContractList) {
-                            wbsTreeContract.setIsDeleted(0);
-                            wbsTreeContract.setStatus(1);
-                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
-                            wbsTreeContract.setParentId(addOrCopyNode.getId());
-                            wbsTreeContract.setContractId(addOrCopyNode.getContractId());
+                        .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                        .and(obj -> obj.in(WbsTreeContract::getOldId, longs).or().in(WbsTreeContract::getId, longs))
+                );
+                List<WbsTreeContract> newAddOrCopyOrYsNodes = addOrCopyOrYsNodes.stream().distinct().collect(Collectors.toList());
+                for (WbsTreeContract addOrCopyOrYsNode : newAddOrCopyOrYsNodes) {
+                    if (StringUtils.isNotEmpty(addOrCopyOrYsNode.getOldId())) {
+                        //复制、新增节点
+                        //合同段节点的oldId=当前表的parentId,也就是说当前表的父级节点=合同段复制、新增出来节点
+                        List<WbsTreePrivate> tabs = tabParentNodesGroup.get(Long.parseLong(addOrCopyOrYsNode.getOldId()));
+                        if (tabs.size() > 0) {
+                            List<WbsTreeContract> wbsTreeContractList = BeanUtil.copyProperties(tabs, WbsTreeContract.class);
+                            for (WbsTreeContract wbsTreeContract : wbsTreeContractList) {
+                                wbsTreeContract.setIsDeleted(0);
+                                wbsTreeContract.setStatus(1);
+                                wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
+                                wbsTreeContract.setParentId(addOrCopyOrYsNode.getId());
+                                wbsTreeContract.setContractId(addOrCopyOrYsNode.getContractId());
+                            }
+                            insertDataContractList.addAll(wbsTreeContractList);
+                        }
+                    } else {
+                        //原始节点id=表parentId
+                        List<WbsTreePrivate> tabs = tabParentNodesGroup.get((addOrCopyOrYsNode.getId()));
+                        if (tabs.size() > 0) {
+                            List<WbsTreeContract> wbsTreeContractList = BeanUtil.copyProperties(tabs, WbsTreeContract.class);
+                            for (WbsTreeContract wbsTreeContract : wbsTreeContractList) {
+                                wbsTreeContract.setIsDeleted(0);
+                                wbsTreeContract.setStatus(1);
+                                wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
+                                wbsTreeContract.setParentId(addOrCopyOrYsNode.getId());
+                                wbsTreeContract.setContractId(addOrCopyOrYsNode.getContractId());
+                            }
+                            insertDataContractList.addAll(wbsTreeContractList);
                         }
-                        insertDataContractList.addAll(wbsTreeContractList);
                     }
                 }
             }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/ExcelParser.java

@@ -7,7 +7,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.text.SimpleDateFormat;
 import java.util.LinkedHashMap;
 import java.util.Map;