liuyc 2 년 전
부모
커밋
e3fa636f80

+ 4 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1703,8 +1703,10 @@ public class ExcelTabController extends BladeController {
         }
         try {
             //单个 pdf加载
-            for (TableInfo tableInfo : tableInfoList) {
-                excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+            if (tableInfoList != null) {
+                for (TableInfo tableInfo : tableInfoList) {
+                    excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+                }
             }
             // 合并pdf加载
             excelTabService.getBussPdfs(nodeid, classify, contractId, projectId);

+ 58 - 26
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -11,21 +11,28 @@ import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.excel.WbsFormElementBatchExcel;
 import org.springblade.manager.excel.WbsTreeExcel;
 import org.springblade.manager.mapper.WbsInfoMapper;
+import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IFormulaService;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.vo.*;
 import org.springblade.system.cache.DictCache;
+import org.springblade.system.entity.Role;
 import org.springblade.system.enums.DictEnum;
+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.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -50,7 +57,11 @@ public class WbsTreeController extends BladeController {
     private final IWbsTreeService wbsTreeService;
     private final IWbsFormElementService wbsFormElementService;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
+    private final WbsTreeContractMapper wbsTreeContractMapper;
     private final WbsInfoMapper wbsInfoMapper;
+    private final JdbcTemplate jdbcTemplate;
+    private final IUserClient iUserClient;
+    private final ISysClient iSysClient;
 
     /**
      * 详情
@@ -170,29 +181,50 @@ public class WbsTreeController extends BladeController {
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
     public R removeTableById(@RequestParam("id") String id) {
         if (StringUtils.isNotEmpty(id)) {
-            /*List<WbsFormElementVO> wbsFormElements = wbsTreeService.selectFormElements(id,null); //此处nodeId为后续其他开发加的,不知道有什么用,所以传null
-            if (wbsFormElements.size() > 0) {
-                throw new ServiceException("该表单中存在元素,删除失败");
-            }*/
-            Long wbsTreePrivates = wbsTreePrivateMapper.selectCount(Wrappers.<WbsTreePrivate>query().lambda()
-                    .eq(WbsTreePrivate::getStatus, 1)
-                    .eq(WbsTreePrivate::getId, id));
-            if (wbsTreePrivates > 0L) {
-                throw new ServiceException("该表单已被项目引用,删除失败");
+            boolean var = false;
+            if (ObjectUtil.isEmpty(AuthUtil.getUser())) {
+                throw new ServiceException("获取当前用户信息失败");
+            }
+            User user = iUserClient.userInfoById(AuthUtil.getUserId()).getData();
+            if (user == null) {
+                throw new ServiceException("获取当前用户信息失败");
+            } else {
+                String[] roles = user.getRoleId().split(",");
+                for (String roleId : roles) {
+                    Role data = iSysClient.getRole(Long.parseLong(roleId)).getData();
+                    if (data.getRoleName().equals("超级管理员") && data.getRoleAlias().equals("administrator")) {
+                        var = true;
+                        break;
+                    }
+                }
             }
-            if (wbsTreeService.removeTableById(id)) {
-                //如果当前节点没有表单,那么修改is_exist_form = 0
-                WbsTree wbsTreeZi = wbsTreeService.getBaseMapper().selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, id));
-                if (wbsTreeZi != null) {
-                    WbsTree wbsTreeFu = wbsTreeService.getBaseMapper().selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreeZi.getParentId()));
-                    if (wbsTreeFu != null) {
-                        List<WbsTree> nodes = wbsTreeService.getBaseMapper().selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getParentId, wbsTreeFu.getId()));
-                        if (nodes.size() == 0) {
-                            wbsTreeService.update(Wrappers.<WbsTree>lambdaUpdate().set(WbsTree::getIsExistForm, 0).eq(WbsTree::getId, wbsTreeFu.getId()));
+
+            if (var) {
+                if (wbsTreeService.removeTableById(id)) {
+                    //如果当前节点没有表单,那么修改is_exist_form = 0
+                    WbsTree wbsTreeZi = wbsTreeService.getBaseMapper().selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, id));
+                    if (wbsTreeZi != null) {
+                        WbsTree wbsTreeFu = wbsTreeService.getBaseMapper().selectOne(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getId, wbsTreeZi.getParentId()));
+                        if (wbsTreeFu != null) {
+                            List<WbsTree> nodes = wbsTreeService.getBaseMapper().selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getParentId, wbsTreeFu.getId()));
+                            if (nodes.size() == 0) {
+                                wbsTreeService.update(Wrappers.<WbsTree>lambdaUpdate().set(WbsTree::getIsExistForm, 0).eq(WbsTree::getId, wbsTreeFu.getId()));
+                            }
                         }
                     }
+
+                    //删除对应到项目合同段的表
+                    List<Long> projectPKeyIds = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .select(WbsTreePrivate::getPKeyId).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getId, id)).stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
+                    List<Long> contractPKeyIds = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                            .select(WbsTreeContract::getPKeyId).eq(WbsTreeContract::getStatus, 1).eq(WbsTreeContract::getType, 2).and(obj -> obj.eq(WbsTreeContract::getId, id).or().eq(WbsTreeContract::getOldId, id))).stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
+                    jdbcTemplate.execute("update m_wbs_tree_private set is_deleted = 1 where p_key_id in(" + StringUtils.join(projectPKeyIds, ",") + ")");
+                    jdbcTemplate.execute("update m_wbs_tree_contract set is_deleted = 1 where p_key_id in(" + StringUtils.join(contractPKeyIds, ",") + ")");
+
+                    return R.success("删除成功");
                 }
-                return R.success("删除成功");
+            } else {
+                throw new ServiceException("没有管理员权限,操作失败");
             }
         }
         return R.fail("删除失败");
@@ -205,13 +237,13 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据表单id查询所有元素", notes = "传入表单id")
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
-    public R<List<WbsFormElementVO>> selectFormElements(@RequestParam("id") String id, String nodeId, String search,Integer type) {
+    public R<List<WbsFormElementVO>> selectFormElements(@RequestParam("id") String id, String nodeId, String search, Integer type) {
         List<WbsFormElementVO> wbsFormElements = null;
         if (StringUtils.isNotEmpty(id)) {
-//            if(StringUtils.isNotEmpty(nodeId)){
-//                id=nodeId;
-//            }
-            wbsFormElements = wbsTreeService.selectFormElements(id,nodeId,type);
+            /*if(StringUtils.isNotEmpty(nodeId)){
+                id=nodeId;
+            }*/
+            wbsFormElements = wbsTreeService.selectFormElements(id, nodeId, type);
             if (wbsFormElements.size() > 0) {
                 if (StringUtils.isNotEmpty(search)) {
                     wbsFormElements = wbsFormElements.stream().filter(e -> e.getEName().contains(search)).collect(Collectors.toList());
@@ -392,10 +424,10 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "根据表单id查询所有元素", notes = "传入表单id")
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
-    public R<List<WbsFormElementVO>> selectPrivateFormElements(@RequestParam("id") String id,String eName) {
+    public R<List<WbsFormElementVO>> selectPrivateFormElements(@RequestParam("id") String id, String eName) {
         List<WbsFormElementVO> wbsFormElements = null;
         if (StringUtils.isNotEmpty(id)) {
-            wbsFormElements = wbsTreeService.selectPrivateFormElements(id,eName);
+            wbsFormElements = wbsTreeService.selectPrivateFormElements(id, eName);
             if (wbsFormElements.size() > 0) {
                 return R.data(wbsFormElements);
             }

+ 3 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -346,16 +346,11 @@ public class WbsTreePrivateController extends BladeController {
     public R removeTableByCondition(@RequestParam("id") String id,
                                     @RequestParam("wbsId") String wbsId,
                                     @RequestParam("projectId") String projectId) {
-        Long wbsTreeContracts = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>query().lambda()
-                .eq(WbsTreeContract::getProjectId, projectId)
-                .eq(WbsTreeContract::getWbsId, wbsId)
-                .eq(WbsTreeContract::getId, id)
-        );
-        if (wbsTreeContracts > 0L) {
+        Long row = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, projectId).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getId, id));
+        if (row > 0L) {
             throw new ServiceException("当前表单被合同段引用中,删除失败");
         }
-        boolean result = wbsTreePrivateService.removeTableByCondition(id, wbsId, projectId);
-        if (result) {
+        if (wbsTreePrivateService.removeTableByCondition(id, wbsId, projectId)) {
             return R.success("删除成功");
         }
         return R.fail("删除失败");

+ 1 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -591,8 +591,7 @@
     <update id="updateDeletedByIds">
         UPDATE m_wbs_tree_contract
         SET is_deleted = 1
-        WHERE status = 1
-        AND type = 2
+        WHERE type = 2
         AND p_key_id in
         <foreach item="ids" collection="ids" open="(" close=")" separator=",">
             #{ids}

+ 1 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -175,8 +175,7 @@
     <update id="updateDeletedByCondition">
         UPDATE m_wbs_tree_private
         SET is_deleted = 1
-        WHERE status = 1
-          AND type = 2
+        WHERE type = 2
           AND id = #{id}
           AND wbs_id = #{wbsId}
           AND project_id = #{projectId}

+ 5 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1487,12 +1487,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         workbook.write(outputStream);
         FileUtils.setExcelScaleToPdf(excelPath, pdfPath);
         BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
-        //
-        TableFile tableFile1 = tableFileService.getBaseMapper().selectOne(Wrappers.<TableFile>query().lambda()
-                .eq(TableFile::getTabId, pkeyId + "").eq(TableFile::getType, 1));
+
+        TableFile tableFile1 = tableFileService.getBaseMapper().selectList(Wrappers.<TableFile>query().lambda().eq(TableFile::getTabId, pkeyId + "").eq(TableFile::getType, 1)).stream().findAny().orElse(null);
         if (tableFile1 != null) {
-            tableFile1.setDomainPdfUrl(bladeFile.getLink());
-            tableFileService.saveOrUpdate(tableFile1);
+            /*tableFile1.setDomainPdfUrl(bladeFile.getLink());
+            tableFileService.saveOrUpdate(tableFile1);*/
+            tableFileService.update(Wrappers.<TableFile>lambdaUpdate().set(TableFile::getDomainPdfUrl,bladeFile.getLink()).eq(TableFile::getId,tableFile1.getId()));
         } else {
             TableFile tableFile = new TableFile();
             String fileExtension = FileUtil.getFileExtension(wbsTreeContract.getFullName() + ".pdf");

+ 3 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -180,19 +180,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public boolean removeTableByCondition(String id, String wbsId, String projectId) {
-        List<WbsTreeContract> wbsTreeContractsTable = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                .eq(WbsTreeContract::getProjectId, projectId)
-                .eq(WbsTreeContract::getId, id)
-                .eq(WbsTreeContract::getWbsId, wbsId)
-                .eq(WbsTreeContract::getType, 2)
-                .eq(WbsTreeContract::getStatus, 1));
-        List<Long> ids = wbsTreeContractsTable.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
 
-        //删除项目表
         baseMapper.updateDeletedByCondition(id, wbsId, projectId);
-        //删除当前项目下合同段的表
+
+        List<WbsTreeContract> wbsTreeContractsTable = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().select(WbsTreeContract::getPKeyId).eq(WbsTreeContract::getProjectId, projectId).eq(WbsTreeContract::getId, id).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getType, 2).eq(WbsTreeContract::getStatus, 1));
+        List<Long> ids = wbsTreeContractsTable.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
         if (ids.size() > 0) {
             wbsTreeContractMapper.updateDeletedByIds(ids);
         }