liuyc 2 жил өмнө
parent
commit
2860489201

+ 2 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -1,8 +1,6 @@
 package org.springblade.manager.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -12,12 +10,9 @@ import javax.validation.Valid;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.ProjectInfoDTO;
 import org.springblade.manager.entity.ContractInfo;
-import org.springblade.manager.entity.WbsInfo;
-import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -28,11 +23,8 @@ import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.wrapper.ProjectInfoWrapper;
 import org.springblade.core.boot.ctrl.BladeController;
 
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 @RestController
 @AllArgsConstructor
@@ -240,12 +232,13 @@ public class ProjectInfoController extends BladeController {
 
     /**
      * 保存或修改分配项目级wbs树
+     * @return
      */
     @PostMapping("/submit-wbsTree-project")
     @ApiOperationSupport(order = 12)
     @ApiOperation(value = "保存或修改分配项目级wbs树", notes = "传入WbsTreeContractDTO")
     public R<Object> submitWbsTreeInProject(@RequestBody WbsTreeContractDTO pawDTO) {
-        return R.status(wbsTreeService.submitWbsTreeInProject(pawDTO));
+        return wbsTreeService.submitWbsTreeInProject(pawDTO);
     }
 
     /**

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -44,7 +44,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 
-    boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO);
+    R<Object> submitWbsTreeInProject(WbsTreeContractDTO pawDTO);
 
     WbsTreeAllListVO findWbsTreeList(Integer type);
 

+ 37 - 39
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -902,7 +902,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
     @Override
     public boolean syncNodeParam(String projectId, String pKeyId) {
-       // projectId = null;//暂不执行
+        // projectId = null;//暂不执行
         if (StringUtils.isNotEmpty(projectId) && StringUtils.isNotEmpty(pKeyId)) {
             ProjectInfo projectInfo = projectInfoMapper.selectById(projectId);
             //当前选择同步的节点信息
@@ -920,21 +920,21 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                 List<WbsTreePrivate> selectNodeAndChildNodes = Optional.ofNullable(this.getChildNodes(selectNodeNow)).orElse(new ArrayList<>());
                 selectNodeAndChildNodes.add(selectNodeNow);
-                List<Long> sourceNodeIds = jdbcTemplate.queryForList("select p_key_id from m_wbs_tree_private where id in("+selectNodeAndChildNodes.stream().map(WbsTreePrivate::getId).map(Object::toString).collect(Collectors.joining(","))+") and  is_deleted=0 and project_id ="+sourceRootNode.getProjectId(),Long.class);
+                List<Long> sourceNodeIds = jdbcTemplate.queryForList("select p_key_id from m_wbs_tree_private where id in(" + selectNodeAndChildNodes.stream().map(WbsTreePrivate::getId).map(Object::toString).collect(Collectors.joining(",")) + ") and  is_deleted=0 and project_id =" + sourceRootNode.getProjectId(), Long.class);
                 List<Long> distNodeIds = selectNodeAndChildNodes.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
                 List<Map<String, Object>> sourceListMap = this.jdbcTemplate.queryForList("select a.id,a.name ,a.k,a.v,a.remark,a.node_id nodeId ,b.id privateId,a.update_time updateTime  " +
-                        "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in("+sourceNodeIds.stream().map(Object::toString).collect(Collectors.joining(","))+") and a.is_deleted=0  and a.type=1 ",  Long.parseLong(sourceRootNode.getProjectId()));
+                        "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in(" + sourceNodeIds.stream().map(Object::toString).collect(Collectors.joining(",")) + ") and a.is_deleted=0  and a.type=1 ", Long.parseLong(sourceRootNode.getProjectId()));
                 List<Map<String, Object>> distListMap = this.jdbcTemplate.queryForList("select a.id,a.name,a.k,a.v,a.remark,a.node_id nodeId ,b.id privateId,a.update_time updateTime  " +
-                        "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in("+distNodeIds.stream().map(Object::toString).collect(Collectors.joining(","))+") and a.is_deleted=0  and a.type=1 ", Long.parseLong(projectId));
+                        "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in(" + distNodeIds.stream().map(Object::toString).collect(Collectors.joining(",")) + ") and a.is_deleted=0  and a.type=1 ", Long.parseLong(projectId));
 
                 /*存在多个同名参数;保留日期最新那个参数*/
-                BinaryOperator<Map<String,Object>> mapBinaryOperator= (m1, m2) -> {
-                    LocalDateTime sldt = ((Timestamp)m1.get("updateTime")).toLocalDateTime();
-                    LocalDateTime tldt = ((Timestamp)m2.get("updateTime")).toLocalDateTime();
-                    return sldt.isAfter(tldt)?m1:m2;
+                BinaryOperator<Map<String, Object>> mapBinaryOperator = (m1, m2) -> {
+                    LocalDateTime sldt = ((Timestamp) m1.get("updateTime")).toLocalDateTime();
+                    LocalDateTime tldt = ((Timestamp) m2.get("updateTime")).toLocalDateTime();
+                    return sldt.isAfter(tldt) ? m1 : m2;
                 };
-                Map<String, Map<String, Object>> sourceMap = sourceListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m,mapBinaryOperator));
-                Map<String, Map<String, Object>> distMap = distListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m,mapBinaryOperator));
+                Map<String, Map<String, Object>> sourceMap = sourceListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m, mapBinaryOperator));
+                Map<String, Map<String, Object>> distMap = distListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m, mapBinaryOperator));
                 /*比较的结果*/
                 Map<String, Map<String, Object>> updateMap = new HashMap<>();
                 Map<String, Map<String, Object>> insertMap = new HashMap<>();
@@ -944,8 +944,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         Map<String, Object> u = distMap.get(k);
                         String t = Func.toStr(u.get("v"));
                         if (!s.equals(t)) {
-                            LocalDateTime sldt = ((Timestamp)v.get("updateTime")).toLocalDateTime();
-                            LocalDateTime tldt = ((Timestamp)u.get("updateTime")).toLocalDateTime();
+                            LocalDateTime sldt = ((Timestamp) v.get("updateTime")).toLocalDateTime();
+                            LocalDateTime tldt = ((Timestamp) u.get("updateTime")).toLocalDateTime();
                             /*假如内容不一样,且模版最后更新时间更晚,则覆盖*/
                             if (sldt.isAfter(tldt)) {
                                 u.put("v", s);
@@ -969,7 +969,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 }
                 List<WbsParam> insertList = new ArrayList<>();
                 if (!insertMap.isEmpty()) {
-                    List<WbsTreePrivate> targetList = Optional.ofNullable(this.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId,projectId).in(WbsTreePrivate::getId, insertMap.values().stream().map(m -> m.get("privateId")).collect(Collectors.toList())))).orElse(new ArrayList<>());
+                    List<WbsTreePrivate> targetList = Optional.ofNullable(this.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId).in(WbsTreePrivate::getId, insertMap.values().stream().map(m -> m.get("privateId")).collect(Collectors.toList())))).orElse(new ArrayList<>());
                     targetList.forEach(e -> {
                         Map<String, Object> kmp = insertMap.get(e.getId().toString());
                         if (kmp != null) {
@@ -1008,26 +1008,26 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 "select c.e_name as name ,c.id,a.p_key_id pKeyId from m_wbs_tree_private a " +
                                         "inner join m_wbs_tree_private b on (a.id=b.parent_id and a.wbs_id=b.wbs_id) " +
                                         "inner join m_wbs_form_element c on  b.init_table_id=c.f_id " +
-                                        "where  b.project_id=" + projectId + " and a.p_key_id in("+String.join(",",nodeIds)+")  and b.is_deleted=0 and c.is_deleted=0 ");
+                                        "where  b.project_id=" + projectId + " and a.p_key_id in(" + String.join(",", nodeIds) + ")  and b.is_deleted=0 and c.is_deleted=0 ");
 
                         Map<String, List<Map<String, Object>>> groupElementNode = listMaps.stream().collect(Collectors.groupingBy(e -> Func.toStr(e.get("pKeyId"))));
                         List<ElementFormulaMapping> insertEfm = new ArrayList<>();
                         insertList.forEach(p -> {
                             List<Map<String, Object>> elementMap = groupElementNode.get(p.getNodeId().toString());
                             Formula formula = insertFormulaMap.get(p.getId());
-                           if(Func.isNotEmpty(elementMap)) {
-                               elementMap.forEach(m -> {
-                                   if (com.mixsmart.utils.StringUtils.handleNull(m.get("name")).contains(p.getName())) {
-                                       /*匹配名称,且该元素没有绑定任何节点参数公式*/
-                                       ElementFormulaMapping efm = new ElementFormulaMapping();
-                                       efm.setScope(FormulaBean.PARAM);
-                                       efm.setParamId(p.getId());
-                                       efm.setElementId(Long.parseLong(m.get("id").toString()));
-                                       efm.setFormulaId(formula.getId());
-                                       insertEfm.add(efm);
-                                   }
-                               });
-                           }
+                            if (Func.isNotEmpty(elementMap)) {
+                                elementMap.forEach(m -> {
+                                    if (com.mixsmart.utils.StringUtils.handleNull(m.get("name")).contains(p.getName())) {
+                                        /*匹配名称,且该元素没有绑定任何节点参数公式*/
+                                        ElementFormulaMapping efm = new ElementFormulaMapping();
+                                        efm.setScope(FormulaBean.PARAM);
+                                        efm.setParamId(p.getId());
+                                        efm.setElementId(Long.parseLong(m.get("id").toString()));
+                                        efm.setFormulaId(formula.getId());
+                                        insertEfm.add(efm);
+                                    }
+                                });
+                            }
                         });
                         if (insertFormulaMap.size() > 0) {
                             this.formulaService.saveBatch(insertFormulaMap.values(), 1000);
@@ -1044,8 +1044,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
 
-
-
     @Override
     public R<String> syncPrivateProjectFormula(Long projectId, Long pKeyId) {
         if (projectId != null && pKeyId != null) {
@@ -1625,7 +1623,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     @Async
     @Override
     public void batchResetHtmlUrl(List<WbsTreePrivate> wbsTreePrivateList) throws IOException, InterruptedException {
-        Thread.sleep(10000L);
+        //Thread.sleep(10000L);
         if (wbsTreePrivateList != null) {
             //存在htmlUrl才重新保存
             wbsTreePrivateList = wbsTreePrivateList.stream().filter(wtp -> StringUtils.isNotBlank(wtp.getHtmlUrl())).collect(Collectors.toList());
@@ -1634,12 +1632,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             for (WbsTreePrivate tree : wbsTreePrivateList) {
                 String[] split = tree.getHtmlUrl().split("/");
                 File file_in = ResourceUtil.getFile(tree.getHtmlUrl());
-//                File file_in = ResourceUtil.getFile("C:\\Users\\泓创研发01\\Desktop\\privateUrl\\"+split[split.length-1]);
-                if (!file_in.exists() || file_in == null || file_in.length() == 0) {
+                //File file_in = ResourceUtil.getFile("C:\\Users\\泓创研发01\\Desktop\\privateUrl\\"+split[split.length-1]);
+                if (!file_in.exists() || file_in.length() == 0) {
                     continue;
                 }
                 String htmlUrl = file_path + "/privateUrlCopy/" + split[split.length - 1];
-//                String htmlUrl = "C:\\Users\\泓创研发01\\Desktop\\privateUrlCopy\\" + split[split.length-1];
+                //String htmlUrl = "C:\\Users\\泓创研发01\\Desktop\\privateUrlCopy\\" + split[split.length-1];
                 File file_out = ResourceUtil.getFile(htmlUrl);
                 FileUtil.copy(file_in, file_out);
                 tree.setHtmlUrl(htmlUrl);
@@ -1650,7 +1648,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 for (List<WbsTreePrivate> list : splitList) {
                     baseMapper.updateBatchByPKeyId(list);
                 }
-            } else {
+            } else if (wbsTreePrivateList.size() > 0) {
                 baseMapper.updateBatchByPKeyId(wbsTreePrivateList);
             }
         }
@@ -2167,14 +2165,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         }
         doc.select("Col").remove();
         /*Echart*/
-        chart(table,wbsTreePrivate);
+        chart(table, wbsTreePrivate);
         if (fileInputStream != null) {
             fileInputStream.close();
         }
         return R.data(table + "");
     }
 
-    private void  chart(Element table,WbsTreePrivate wtp){
+    private void chart(Element table, WbsTreePrivate wtp) {
         try {
             List<Map<String, Object>> configList = this.jdbcTemplate.queryForList("select d.rely ,b.e_key ekey from m_wbs_tree_private a join  m_wbs_form_element b on a.init_table_id=b.f_id join m_element_formula_mapping c on b.id=c.element_id join m_formula d on c.formula_id=d.id  where p_key_id=" + wtp.getPKeyId() + " and b.is_deleted=0 and d.formula like 'FC.chart%' limit 1");
             if (Func.isNotEmpty(configList)) {
@@ -2187,13 +2185,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 String keyname = inputElement.attr("keyname");
                 Element echartElement = new Element("hc-echart");
                 echartElement.attr(":option", "formData." + keyname)
-                .attr("keyname", keyname)
-                .attr(":ref","(el) => setChartRefs(el, '"+wtp.getPKeyId()+"' , '"+keyname+"')");
+                        .attr("keyname", keyname)
+                        .attr(":ref", "(el) => setChartRefs(el, '" + wtp.getPKeyId() + "' , '" + keyname + "')");
                 inputElement.replaceWith(echartElement);
                 table.select("el-input[keyname^=" + ky + "__").forEach(e -> e.attr("@blur", "getRegularExpression($event,'','请输入字符串',22,1, 'chart', 1, 0)"));
                 table.select("el-input[keyname^=" + kx + "__").forEach(e -> e.attr("@blur", "getRegularExpression($event,'','请输入字符串',22,1, 'chart', 0, 1)"));
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
 

+ 17 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -10,6 +10,7 @@ import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.*;
@@ -658,11 +659,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
+    public R<Object> submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         try {
             if (StringUtils.isEmpty(pawDTO.getWbsId())) {
-                throw new ServiceException("请正确选择一个wbs模板");
+                return R.fail(400, "未获取到wbsId,请选择一个正确的wbs模板!");
             }
+
             String wbsTreeIds = pawDTO.getWbsTreeIds();
             String[] ids = wbsTreeIds.split(",");
             List<String> idList = Arrays.asList(ids);
@@ -829,13 +831,20 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                 .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                                 .and(obj -> obj.eq(WbsTreePrivate::getType, 1).or().eq(WbsTreePrivate::getType, 2))
                         );
-                        List<WbsTreePrivate> wbsTreePrivatesTableDLOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId()).eq(WbsTreePrivate::getType, 10).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getParentId, -10).isNull(WbsTreePrivate::getWbsId));
+                        List<WbsTreePrivate> wbsTreePrivatesTableDLOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                .eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId())
+                                .eq(WbsTreePrivate::getType, 10).eq(WbsTreePrivate::getStatus, 1)
+                                .eq(WbsTreePrivate::getParentId, -10).isNull(WbsTreePrivate::getWbsId));
+
                         wbsTreePrivatesNodeAndTab.addAll(wbsTreePrivatesTableDLOld);
 
                         //获取当前项目下的所有独立表
                         List<WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
                                 .select(WbsTreePrivate::getId)
-                                .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 10).eq(WbsTreePrivate::getParentId, -10).eq(WbsTreePrivate::getStatus, 1));
+                                .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
+                                .eq(WbsTreePrivate::getType, 10)
+                                .eq(WbsTreePrivate::getParentId, -10)
+                                .eq(WbsTreePrivate::getStatus, 1));
 
                         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivatesNodeAndTab) {
                             if (wbsTreePrivate.getType() == 1 || wbsTreePrivate.getType() == 2) {
@@ -907,8 +916,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             wbsTreePrivateService.insertBatch(addList, 1000);
                         }
 
-                        //异步修改htmlUrl ,数据都在insertData2里
-                        wbsTreePrivateService.batchResetHtmlUrl(insertData2);
+                        //异步修改htmlUrl
+                        //wbsTreePrivateService.batchResetHtmlUrl(insertData2);
 
                         //修改状态
                         if (pawDTO.getWbsType() == 1) {
@@ -928,11 +937,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
                 }
             }
-            return true;
+            return R.success("操作成功");
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return false;
+        return R.fail("操作失败");
     }
 
     @Async