yangyj 3 år sedan
förälder
incheckning
17399107fc

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaBean.java

@@ -16,4 +16,5 @@ public class FormulaBean {
     private String remark;
     private Long wbsId;
     private Long elementId;
+    private String map;
 }

+ 27 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsParamBean.java

@@ -0,0 +1,27 @@
+package org.springblade.manager.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/17 17:09
+ * @description TODO
+ */
+@Data
+public class WbsParamBean {
+    @ApiModelProperty(value = "名称",required =true)
+    private  String name;
+    @ApiModelProperty(value = "流水号,修改必传")
+    private  Long id;
+    @ApiModelProperty(value = "参数码")
+    private  String k;
+    @ApiModelProperty(value = "参数内容,普通参数才需要")
+    private  String v;
+    @ApiModelProperty(value = "节点id,普通参数才需要")
+    private Long wbsId;
+    @ApiModelProperty(value = "描述说明")
+    private  String remark;
+    @ApiModelProperty(value = "类型:0参数名称字典,1普通参数")
+    private  Integer type;
+}

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/Formula.java

@@ -27,4 +27,5 @@ public class Formula extends BaseEntity {
    private Long wbsId;
    @Size(max = 20)
    private Long elementId;
+   private String map;
 }

+ 24 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsParam.java

@@ -0,0 +1,24 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/17 16:48
+ * @description TODO
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("m_wbs_param")
+public class WbsParam  extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+    private  String name;
+    private  String k;
+    private  String v;
+    private  String remark;
+    private  Integer type;
+    private  Long wbsId;
+}

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

@@ -42,6 +42,9 @@ public class FormulaController {
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "新增或修改", notes = "传入")
     public R save(@RequestBody Formula f) {
+        if(this.service.count(Wrappers.<Formula>query().lambda().eq(Formula::getElementId,f.getElementId()))>0){
+            return R.status(false);
+        }
         return R.status(service.save(f));
     }
 
@@ -62,6 +65,17 @@ public class FormulaController {
         return R.status(false);
     }
 
+    @PostMapping("/saveOrUpdate")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "保存或修改公式脚本", notes = "保存或修改公式脚本")
+    public R saveOrUpdate( @RequestBody Formula f) {
+        if(f.getId()==null){
+         return    save(f);
+        }else{
+          return   update(Objects.requireNonNull(BeanUtil.copy(f, FormulaBean.class)));
+        }
+    }
+
     /**
      * 删除
      */
@@ -82,7 +96,7 @@ public class FormulaController {
         if(detail!=null){
            return R.data(BeanUtil.copy(detail,FormulaBean.class));
         }
-        return R.fail("无数据");
+        return R.success("无数据");
     }
 
     @ApiOperationSupport(order = 8)

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

@@ -0,0 +1,128 @@
+package org.springblade.manager.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+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.BeanUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.dto.FormulaBean;
+import org.springblade.manager.dto.WbsParamBean;
+import org.springblade.manager.entity.Formula;
+import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.service.IWbsParamService;
+import org.springblade.manager.wrapper.FormulaWrapper;
+import org.springblade.manager.wrapper.WbsParamWrapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/17 17:06
+ * @description TODO
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/param")
+@Api(value = "节点参数", tags = "节点参数")
+public class WbsParamController {
+    private final IWbsParamService service;
+
+    /**
+     * 保存或修改
+     * @param wp
+     * @return
+     */
+    @PostMapping("/saveOrUpdate")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "保存或修改参数", notes = "保存或修改参数")
+    public R saveOrUpdate(@RequestBody WbsParamBean wp) {
+        if(wp.getId()==null){
+            WbsParam e= new WbsParam();
+            BeanUtils.copyProperties(wp,e);
+            return R.status(this.service.save(e));
+        }else{
+            WbsParam old = this.service.getById(wp.getId());
+            if(old!=null){
+                BeanUtils.copyProperties(wp,old);
+                return R.status(service.updateById(old));
+            }
+            return R.status(false);
+        }
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "删除", notes = "传入id集合")
+    public R remove(@ApiParam(value="需要删除的Id,多个用逗号逗号分开",required = true)@RequestParam String ids) {
+        return R.status(this.service.deleteLogic(Func.toLongList(ids)));
+    }
+    /**
+     * 查询单条
+     */
+    @ApiOperationSupport(order =3)
+    @ApiOperation(value = "查看详情", notes = "传入id")
+    @GetMapping("/detail")
+    @ApiIgnore
+    public R<WbsParamBean> detail(WbsParam wp) {
+        WbsParam detail = service.getOne(Condition.getQueryWrapper(wp));
+        if(detail!=null){
+            return R.data(BeanUtil.copy(detail,WbsParamBean.class));
+        }
+        return R.success("无数据");
+    }
+
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "节点参数列表(翻页)", notes = "节点参数列表(翻页)")
+    @GetMapping("/page")
+    public IPage<WbsParamBean> list( WbsParamBean param,  Query query) {
+        LambdaQueryWrapper<WbsParam> queryWrapper = Wrappers.<WbsParam>query().lambda();
+        IPage<WbsParam> pages  = this.service.page(Condition.getPage(query),queryWrapper);
+        return WbsParamWrapper.build().pageVO(pages);
+    }
+
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "获取名称字典", notes = "获取名称字典")
+    @GetMapping("/keymap")
+    public R<List<WbsParamBean>> list2() {
+        LambdaQueryWrapper<WbsParam> queryWrapper = Wrappers.<WbsParam>query().lambda().eq(WbsParam::getType,0);
+        List<WbsParamBean> list = new ArrayList<>();
+        List<WbsParam> data =  this.service.list(queryWrapper);
+        if(CollectionUtil.isNotEmpty(data)){
+            list = WbsParamWrapper.build().listVO(this.service.list(queryWrapper));
+        }
+        return R.data(list);
+    }
+
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "节点参数列表", notes = "节点参数列表")
+    @GetMapping("/list")
+    public R<List<WbsParamBean>> list3(@ApiParam(value = "wbs节点id", required = true) Long wbsId) {
+        LambdaQueryWrapper<WbsParam> queryWrapper = Wrappers.<WbsParam>query().lambda().eq(WbsParam::getWbsId,wbsId).eq(WbsParam::getType,1);
+        List<WbsParamBean> list = new ArrayList<>();
+        List<WbsParam> data =  this.service.list(queryWrapper);
+        if(CollectionUtil.isNotEmpty(data)){
+            list = WbsParamWrapper.build().listVO(this.service.list(queryWrapper));
+        }
+        return R.data(list);
+    }
+
+
+
+}

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/FormulaMapper.xml

@@ -17,6 +17,7 @@
         <result column="remark" property="remark"/>
         <result column="wbsId" property="wbs_id"/>
         <result column="elementId" property="element_id"/>
+        <result column="map" property="map"/>
     </resultMap>
 
 </mapper>

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.java

@@ -0,0 +1,7 @@
+package org.springblade.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.manager.entity.WbsParam;
+
+public interface WbsParamMapper extends BaseMapper<WbsParam> {
+}

+ 21 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.manager.mapper.WbsParamMapper">
+    <resultMap id="ResultMap" type="org.springblade.manager.entity.WbsParam">
+        <result column="id" property="id"/>
+        <result column="createUser" property="create_user"/>
+        <result column="createDept" property="create_dept"/>
+        <result column="createTime" property="create_time"/>
+        <result column="updateUser" property="update_user"/>
+        <result column="updateTime" property="update_time"/>
+        <result column="status" property="status"/>
+        <result column="isDeleted" property="is_deleted"/>
+        <result column="name" property="name"/>
+        <result column="k" property="k"/>
+        <result column="v" property="v"/>
+        <result column="wbsId" property="wbs_id"/>
+        <result column="remark" property="remark"/>
+        <result column="type" property="type"/>
+    </resultMap>
+
+</mapper>

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsParamService.java

@@ -0,0 +1,13 @@
+package org.springblade.manager.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.entity.WbsInfo;
+import org.springblade.manager.entity.WbsParam;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/17 17:02
+ * @description TODO
+ */
+public interface IWbsParamService  extends BaseService<WbsParam> {
+}

+ 37 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -33,36 +33,61 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
              Map<Boolean,List<FormData>> map = list.stream().collect(Collectors.partitioningBy(e->e!=null&&e.getFormula().getFormula().contains("E[")));
              /*有依赖的*/
              List<FormData> rely= map.get(true);
+             if(CollectionUtil.isNotEmpty(rely)){
+                  sort(rely,((rely.size()+1)/2)*rely.size());
+             }
              /*没有依赖的*/
              List<FormData> simple=map.get(false);
 
+
     }
 
 
-    public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=\\])";
+
 
     /**
      * 依赖排序
      */
-    public   void sort( List<FormData> list,List<FormData> data,List<FormData> queue,FormData current){
-        if(current!=null){
-            Pattern p = Pattern.compile(ELE_CODE_REG);
-            Matcher m =p.matcher(current.getFormula().getFormula());
+    public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=\\])";
+    public static final  Pattern P = Pattern.compile(ELE_CODE_REG);
+    public  static void sort( List<FormData> list,int n){
+        System.out.println("剩余计算次数:"+n+"次");
+        if(move(list)&&n>0){
+            sort(list,--n);
+        }
+    }
+    public  static Boolean move( List<FormData> list){
+        for(int i=0;i<list.size();i++){
+            FormData f=list.get(i);
+            Matcher m =P.matcher(f.getFormula().getFormula());
             List<String> cp =  new ArrayList<>();
             while (m.find()){
                 cp.add(m.group());
             }
-           Map<Boolean,List<FormData>>  map= list.stream().collect(Collectors.partitioningBy(e->cp.contains(e.getEKey())));
+            Map<Boolean,List<FormData>>  map= list.stream().skip(i+1).collect(Collectors.partitioningBy(e->cp.contains(e.getEKey())));
             List<FormData> match =map.get(true);
             if(CollectionUtil.isNotEmpty(match)){
-                data.addAll(match);
-            }
-            List<FormData> remain =map.get(false);
-            if(CollectionUtil.isNotEmpty(remain)){
-                list.clear();
-                list.addAll(remain);
+                for(FormData r:match){
+                    list.remove(r);
+                }
+                list.addAll(0,match);
+                return true;
             }
         }
+        return false;
+
     }
 
+
+
 }
+
+
+
+
+
+
+
+
+
+

+ 18 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -0,0 +1,18 @@
+package org.springblade.manager.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.mapper.WbsParamMapper;
+import org.springblade.manager.service.IWbsParamService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/17 17:00
+ * @description TODO
+ */
+@Service
+@AllArgsConstructor
+public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsParam> implements IWbsParamService {
+}

+ 25 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/WbsParamWrapper.java

@@ -0,0 +1,25 @@
+package org.springblade.manager.wrapper;
+
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.manager.dto.WbsParamBean;
+import org.springblade.manager.entity.WbsParam;
+
+import java.util.Objects;
+
+/**
+ * @author yangyj
+
+ * @Date 2022/6/17 17:28
+ * @description TODO
+ */
+public class WbsParamWrapper extends BaseEntityWrapper<WbsParam, WbsParamBean> {
+    public static WbsParamWrapper build() {
+        return new WbsParamWrapper();
+    }
+    @Override
+    public WbsParamBean entityVO(WbsParam entity) {
+        return  Objects.requireNonNull(BeanUtil.copy(entity, WbsParamBean.class));
+    }
+}