Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 1 năm trước cách đây
mục cha
commit
b0222d1e50

+ 15 - 18
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractTreeDrawingsController.java

@@ -25,10 +25,13 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.ContractTreeDrawings;
+import org.springblade.business.service.IInformationQueryService;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.business.service.IContractTreeDrawingsService;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -48,6 +51,9 @@ public class ContractTreeDrawingsController extends BladeController {
 
     private final IContractTreeDrawingsService contractTreeDrawingsService;
 
+
+
+
     /**
      * 保存或修改节点上传的图纸记录
      *
@@ -63,25 +69,10 @@ public class ContractTreeDrawingsController extends BladeController {
             @ApiImplicitParam(name = "fileUrl", value = "文件url", required = true),
             @ApiImplicitParam(name = "id", value = "节点的drawingsId")
     })
-    public R<String> saveOrUpdateContractTreeDrawings(@RequestParam String primaryKeyId, @RequestParam String fileUrl,String id) {
-        //当前提交用户
-        BladeUser user = AuthUtil.getUser();
-        if (!"-1".equals(id) && StringUtils.isNotEmpty(id)) {
-            //修改
-            this.contractTreeDrawingsService.update(Wrappers.<ContractTreeDrawings>lambdaUpdate()
-                    .set(ContractTreeDrawings::getFileUrl, fileUrl).set(ContractTreeDrawings::getUpdateUser, user.getUserId())
-                    .set(ContractTreeDrawings::getUpdateTime, new Date())
-                    .eq(ContractTreeDrawings::getId, id));
+    public R<Long> saveOrUpdateContractTreeDrawings(@RequestParam String primaryKeyId, @RequestParam String fileUrl,Long id) {
 
-            return R.data(id);
-        } else {
-            //新增
-            ContractTreeDrawings drawings = new ContractTreeDrawings(primaryKeyId, fileUrl, user.getUserId(), user.getDeptId());
-            drawings.setId(SnowFlakeUtil.getId());
-            this.contractTreeDrawingsService.save(drawings);
 
-            return R.data(drawings.getId().toString());
-        }
+        return contractTreeDrawingsService.saveOrUpdateContractTreeDrawings(primaryKeyId,fileUrl,id);
     }
 
     /**
@@ -94,8 +85,14 @@ public class ContractTreeDrawingsController extends BladeController {
             @ApiImplicitParam(name = "primaryKeyId", value = "节点primaryKeyId", required = true)
     })
     public R<String> getTreeDrawings(Long primaryKeyId){
+        if (primaryKeyId == null || primaryKeyId == -1){
+            return R.fail("图纸id错误");
+        }
         ContractTreeDrawings one = contractTreeDrawingsService.getOne(new LambdaQueryWrapper<ContractTreeDrawings>()
-                .eq(ContractTreeDrawings::getProcessId, primaryKeyId));
+                .eq(ContractTreeDrawings::getId, primaryKeyId));
+        if (one == null || StringUtils.isBlank(one.getFileUrl())){
+            return R.fail("暂未查询到当前节点下图纸");
+        }
         return R.data(one.getFileUrl());
     }
 

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractTreeDrawingsMapper.java

@@ -39,4 +39,5 @@ public interface ContractTreeDrawingsMapper extends BaseMapper<ContractTreeDrawi
      */
     List<ContractTreeDrawingsVO> selectContractTreeDrawingsPage(IPage page, ContractTreeDrawingsVO contractTreeDrawings);
 
+    void deleteByNodeId(@Param("id") String primaryKeyId);
 }

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractTreeDrawingsMapper.xml

@@ -15,6 +15,10 @@
         <result column="process_id" property="processId"/>
         <result column="file_url" property="fileUrl"/>
     </resultMap>
+    <delete id="deleteByNodeId">
+        DELETE FROM u_contract_tree_drawings
+        WHERE process_id = #{id}
+    </delete>
 
     <select id="queryCurrentNodeDrawings" resultMap="contractTreeDrawingsResultMap">
         select id, file_url from u_contract_tree_drawings where is_deleted = 0 and process_id = #{primaryKeyId}

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IContractTreeDrawingsService.java

@@ -20,6 +20,7 @@ import org.springblade.business.entity.ContractTreeDrawings;
 import org.springblade.business.vo.ContractTreeDrawingsVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.tool.api.R;
 
 /**
  * 服务类
@@ -42,4 +43,5 @@ public interface IContractTreeDrawingsService extends BaseService<ContractTreeDr
      */
     IPage<ContractTreeDrawingsVO> selectContractTreeDrawingsPage(IPage<ContractTreeDrawingsVO> page, ContractTreeDrawingsVO contractTreeDrawings);
 
+    R<Long> saveOrUpdateContractTreeDrawings(String primaryKeyId, String fileUrl, Long id);
 }

+ 35 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractTreeDrawingsServiceImpl.java

@@ -16,11 +16,20 @@
  */
 package org.springblade.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
 import org.springblade.business.entity.ContractTreeDrawings;
+import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.vo.ContractTreeDrawingsVO;
 import org.springblade.business.mapper.ContractTreeDrawingsMapper;
 import org.springblade.business.service.IContractTreeDrawingsService;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -31,8 +40,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2022-06-14
  */
 @Service
+@AllArgsConstructor
 public class ContractTreeDrawingsServiceImpl extends BaseServiceImpl<ContractTreeDrawingsMapper, ContractTreeDrawings> implements IContractTreeDrawingsService {
 
+    private final IInformationQueryService queryService;
+
+    private final WbsTreeContractClient contractClient;
+
     @Override
     public ContractTreeDrawings queryCurrentNodeDrawings(String primaryKeyId) {
         return this.baseMapper.queryCurrentNodeDrawings(primaryKeyId);
@@ -43,4 +57,25 @@ public class ContractTreeDrawingsServiceImpl extends BaseServiceImpl<ContractTre
         return page.setRecords(baseMapper.selectContractTreeDrawingsPage(page, contractTreeDrawings));
     }
 
+    @Override
+    public R<Long> saveOrUpdateContractTreeDrawings(String primaryKeyId, String fileUrl, Long id) {
+        //当前提交用户
+        BladeUser user = AuthUtil.getUser();
+        if (id != null && id != -1) {
+            //如果存在图纸,则删除当前节点下所有图纸
+            baseMapper.deleteByNodeId(primaryKeyId);
+        }
+        //新增
+        ContractTreeDrawings drawings = new ContractTreeDrawings(primaryKeyId, fileUrl, user.getUserId(), user.getDeptId());
+        drawings.setId(SnowFlakeUtil.getId());
+        id = drawings.getId();
+        this.save(drawings);
+        WbsTreeContract Contract = contractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(primaryKeyId));
+        if (Contract == null){
+            return R.fail("未找到当前节点信息");
+        }
+        queryService.delAsyncWbsTree(Contract.getContractId());
+        return R.data(id);
+    }
+
 }

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

@@ -1820,7 +1820,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
     })
     public R getBussDataInfo(Long pkeyId) throws FileNotFoundException {
-        return R.data(excelTabService.getBussDataInfo(pkeyId, 0));
+        return R.data(excelTabService.getBussDataInfo(pkeyId, 0,true));
     }
 
 
@@ -2146,7 +2146,7 @@ public class ExcelTabController extends BladeController {
                 JSONArray extra = new JSONArray();
                 for (Long pk : tableAllIds) {
                     if (!exclude.contains(pk)) {
-                        Map<String, Object> jo = this.excelTabService.getBussDataInfo(pk, 1,false);
+                        Map<String, Object> jo = this.excelTabService.getBussDataInfo(pk, 1);
                         if (ObjectUtils.isNotEmpty(jo)) {
                             jo.put("pkeyId", pk);
                             extra.add(jo);

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

@@ -263,7 +263,7 @@ public class WbsParamController {
     @ApiOperation(value = "节点参数列表", notes = "节点参数列表")
     @GetMapping("/list")
     public R<List<WbsParamBean>> list3(@ApiParam(value = "节点id", required = true) Long wbsId) {
-        this.service.duplicate(wbsId);
+        /*this.service.duplicate(wbsId);*/
         List<WbsParam> data = this.service.list(Wrappers.<WbsParam>lambdaQuery()
                 .select(WbsParam::getId, WbsParam::getName, WbsParam::getK, WbsParam::getV, WbsParam::getRemark, WbsParam::getNodeId, WbsParam::getProjectId)
                 .eq(WbsParam::getNodeId, wbsId)

+ 3 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -4,10 +4,7 @@ import org.jsoup.nodes.Document;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.FormData;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.entity.WbsInfo;
-import org.springblade.manager.entity.WbsTreeContract;
-import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
@@ -113,4 +110,6 @@ public interface IFormulaService extends BaseService<Formula> {
 
     /**表单数据加载的时候执行节点参数*/
     R<Object> evaluate(Long pkeyId);
+    /**获取当前节点的参数wbsNodeId:WBS级id ,wtpPkeyId:项目级PkeyId*/
+    List<WbsParam> getNodeWps(Long wbsNodeId,Long wtpPkeyId);
 }

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

@@ -1242,10 +1242,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public Map<String,Object> getBussDataInfo(Long pkeyId, int type) {
-        return this.getBussDataInfo(pkeyId,type,true);
+        /*只有默认不执行表单公式isFormLoading==false*/
+        return this.getBussDataInfo(pkeyId,type,false);
     }
     @Override
     public Map<String,Object> getBussDataInfo(Long pkeyId, int type,Boolean isFormLoading) {
+        /*需要加载表单公式的时候isFormLoading==true*/
         Document document=null;
         Map<String, Object> reData = new HashMap<>();
 
@@ -1504,7 +1506,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         reData.put("tabGroupId", wbsTreeContract.getTabGroupId());
         /*表单公式*/
-        if(!isFormLoading) {
+        if(isFormLoading) {
             this.formulaService.paramFormula(wbsTreeContract, reData, document);
         }
         return reData;

+ 28 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -684,7 +684,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
      **/
     public Map<String,Object> getWpMap(Long wbsNodeId,Long wtpPkeyId){
         Map<String,Object> result = new HashMap<>(100);
-        List<WbsParam> total = new ArrayList<>();
+        List<WbsParam> total=this.getNodeWps(wbsNodeId,wtpPkeyId);
+    /*    List<WbsParam> total = new ArrayList<>();
         List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wbsNodeId).eq(WbsParam::getType,1));
         if(Func.isNotEmpty(wpsPublic)){
             total.addAll(wpsPublic);
@@ -692,7 +693,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtpPkeyId).eq(WbsParam::getType,1));
         if(Func.isNotEmpty(wpsPrivate)){
             total.addAll(wpsPrivate);
-        }
+        }*/
         Map<String,String> logMap =new HashMap<>();
         if(CollectionUtil.isNotEmpty(total)){
             /*同名参数私有覆盖公用*/
@@ -704,10 +705,28 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         this.tec.getLog().put(FormulaLog.PARAM,result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";")));
         /*元素动态绑定*/
         /*绑定节点参数公式*/
+      /*  total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());*/
         this.bindParamFormula(total);
         return result;
     }
 
+    @Override
+    public List<WbsParam> getNodeWps(Long wbsNodeId, Long wtpPkeyId) {
+        List<WbsParam> total = new ArrayList<>();
+        List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wbsNodeId).eq(WbsParam::getType,1));
+        if(Func.isNotEmpty(wpsPublic)){
+            total.addAll(wpsPublic);
+        }
+        List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtpPkeyId).eq(WbsParam::getType,1));
+        if(Func.isNotEmpty(wpsPrivate)){
+            total.addAll(wpsPrivate);
+        }
+        if(total.size()>0) {
+            total = new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());
+        }
+        return total;
+    }
+
     public void bindParamFormula(List<WbsParam> total){
         Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
         /*查找无绑定公式且单元格只有一个的当前表单元素*/
@@ -1167,7 +1186,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         JSONArray dataArray = new JSONArray();
         for (NodeTable data : subTabList) {
             /*自动挂载附表情况下,装配TableInfo数据*/
-            Map<String, Object>  data1 = excelTabService.getBussDataInfo(data.getPKeyId(), 1);
+            Map<String, Object>  data1 = this.excelTabService.getBussDataInfo(data.getPKeyId(), 1);
             data1.put("pkeyId",data.getPKeyId());
             dataArray.add(data1);
         }
@@ -2328,24 +2347,23 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             WbsTreePrivate publicWtp = this.getOriginWtp(privatePkeyId);
 
             Map<String,Object> result = new HashMap<>(100);
-            List<WbsParam> total = new ArrayList<>();
-            List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,publicWtp.getId()).eq(WbsParam::getType,1));
+            List<WbsParam> total = this.getNodeWps(publicWtp.getId(),privatePkeyId);
+/*            List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,publicWtp.getId()).eq(WbsParam::getType,1));
             if(Func.isNotEmpty(wpsPublic)){
                 total.addAll(wpsPublic);
             }
             List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,privatePkeyId).eq(WbsParam::getType,1));
             if(Func.isNotEmpty(wpsPrivate)){
                 total.addAll(wpsPrivate);
-            }
+            }*/
             if(CollectionUtil.isNotEmpty(total)){
-                /*同名参数私有覆盖公用*/
                 for(WbsParam p:total){
                     result.put(p.getK(),p.getV());
                 }
             }else{
                 return;
             }
-
+           /* total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());*/
             Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
              //元素动态绑定  获取已配置节点公式   未查明的bug暂时关闭
             Map<Long,String> paramIdKeyMap=  total.stream().collect(Collectors.toMap(WbsParam::getId,WbsParam::getK));
@@ -2366,9 +2384,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
            // 检查是否可以自动绑定参数公式
             List<FormData> notFormulaFds=fds.stream().filter(f->f.getFormulaId()==null).collect(Collectors.toList());
             if(notFormulaFds.size()>0){
+                List<WbsParam> finalTotal = total;
                 notFormulaFds.forEach(e->{
                     //暂时用参数名称是否包含元素名称作为匹配规则
-                    total.stream().filter(p->e.getEName().contains(p.getName().replaceAll("【[\\u4E00-\\u9FFF]+】|\\s+",""))).findAny().ifPresent(d->{
+                    finalTotal.stream().filter(p->e.getEName().contains(p.getName().replaceAll("【[\\u4E00-\\u9FFF]+】|\\s+",""))).findAny().ifPresent(d->{
                         Formula tf= formulaIdMap.get(d.getK());
                         if(tf!=null&&e.getId()!=null) {
                             e.setFormula(tf);