yangyj 2 лет назад
Родитель
Сommit
6f823253ea

+ 3 - 1
.idea/compiler.xml

@@ -21,7 +21,8 @@
         <module name="blade-xxljob-admin" />
         <module name="blade-desk" />
         <module name="blade-flow-api" />
-        <module name="blade-develop" />
+        <module name="blade-business" />
+        <module name="blade-desk-api" />
         <module name="blade-report" />
         <module name="blade-system-api" />
         <module name="blade-auth" />
@@ -31,6 +32,7 @@
         <module name="blade-user-api" />
         <module name="blade-resource" />
         <module name="blade-dict-api" />
+        <module name="blade-business-api" />
         <module name="blade-resource-api" />
       </profile>
     </annotationProcessing>

+ 54 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -0,0 +1,54 @@
+package org.springblade.manager.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.manager.entity.Formula;
+
+import java.util.List;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/15 15:02
+ * @description TODO
+ */
+@Data
+public class FormData {
+    /**
+     * 元素key
+     */
+    private String eKey;
+    /**
+     * 元素名称
+     */
+    private String eName;
+
+    /**
+     * 元素类型
+     */
+    private Integer eType;
+
+    /**
+     * 元素长度
+     */
+    private Integer eLength;
+
+    /**
+     * 允许偏差值
+     */
+    private String eAllowDeviation;
+    /**
+     * 内容
+     */
+    private List<Object[][]> values;
+    /**
+     * 公式脚本
+     */
+    private Formula formula;
+    /**
+     * 业务组
+     */
+    private  Integer groupId;
+
+
+}

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

@@ -0,0 +1,19 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.Size;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/14 16:27
+ * @description TODO
+ */
+@Data
+public class FormulaBean {
+    private Long id;
+    private String formula;
+    private String remark;
+    private Long wbsId;
+    private Long elementId;
+}

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

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

+ 50 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -1,15 +1,28 @@
 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 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.Func;
+import org.springblade.manager.dto.FormulaBean;
 import org.springblade.manager.entity.Formula;
-import org.springblade.manager.service.impl.FormulaService;
+import org.springblade.manager.service.impl.FormulaServiceImpl;
+import org.springblade.manager.wrapper.FormulaWrapper;
+import org.springblade.system.user.entity.User;
+import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * @author yangyj
@@ -21,14 +34,14 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/formula")
 @Api(value = "公式脚本", tags = "公式脚本")
 public class FormulaController {
-    private final FormulaService service;
+    private final FormulaServiceImpl service;
     /**
      * 新增或修改
      */
     @PostMapping("/save")
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "新增或修改", notes = "传入")
-    public R save(Formula f) {
+    public R save(@RequestBody Formula f) {
         return R.status(service.save(f));
     }
 
@@ -38,8 +51,15 @@ public class FormulaController {
     @PostMapping("/update")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "修改", notes = "传入脚本")
-    public R update( Formula f) {
-        return R.status(service.updateById(f));
+    public R update( @RequestBody FormulaBean f) {
+        if(f.getId()!=null){
+            Formula old = this.service.getById(f.getId());
+            if(old!=null){
+                BeanUtils.copyProperties(f,old);
+                return R.status(service.updateById(old));
+            }
+        }
+        return R.status(false);
     }
 
     /**
@@ -57,10 +77,33 @@ public class FormulaController {
     @ApiOperationSupport(order =7)
     @ApiOperation(value = "查看详情", notes = "传入id")
     @GetMapping("/detail")
-    public R<Formula> detail(Formula f) {
+    public R<FormulaBean> detail(Formula f) {
         Formula detail = service.getOne(Condition.getQueryWrapper(f));
-        return R.data(detail);
+        if(detail!=null){
+           return R.data(BeanUtil.copy(detail,FormulaBean.class));
+        }
+        return R.fail("无数据");
+    }
+
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "公式翻页查询", notes = "公式翻页查询")
+    @GetMapping("/page")
+    public IPage<FormulaBean> userSearch(@ApiIgnore FormulaBean param, @ApiIgnore Query query) {
+        LambdaQueryWrapper<Formula> queryWrapper = Wrappers.<Formula>query().lambda();
+        if(Func.isNotEmpty(param.getWbsId())){
+            queryWrapper.eq(Formula::getWbsId,param.getWbsId());
+        }
+        if(Func.isNotEmpty(param.getFormula())){
+            queryWrapper.like(Formula::getFormula,param.getFormula());
+        }
+        if(Func.isNotEmpty(param.getRemark())){
+            queryWrapper.like(Formula::getRemark,param.getRemark());
+        }
+        IPage<Formula> pages  = this.service.page(Condition.getPage(query),queryWrapper);
+         return FormulaWrapper.build().pageVO(pages);
     }
 
 
+
+
 }

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

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

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -0,0 +1,11 @@
+package org.springblade.manager.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.entity.Formula;
+
+/**
+ * @author yangyj
+ */
+public interface IFormulaService extends BaseService<Formula> {
+
+}

+ 0 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaService.java

@@ -1,16 +0,0 @@
-package org.springblade.manager.service.impl;
-
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.mapper.FormulaMapper;
-import org.springframework.stereotype.Service;
-
-/**
- * @author yangyj
- * @Date 2022/6/9 14:29
- * @description TODO
- */
-@Service
-public class FormulaService extends BaseServiceImpl<FormulaMapper, Formula> {
-}

+ 68 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -0,0 +1,68 @@
+package org.springblade.manager.service.impl;
+
+
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.manager.dto.FormData;
+import org.springblade.manager.entity.Formula;
+import org.springblade.manager.entity.WbsFormElement;
+import org.springblade.manager.mapper.FormulaMapper;
+import org.springblade.manager.service.IFormulaService;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/9 14:29
+ * @description TODO
+ */
+@Service
+public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula> implements IFormulaService {
+    /**
+     * @Description
+     * @Param [variables, list:表单数据, formulas:同一个wbsId]
+     * @return void
+     * @Author yangyj
+     * @Date 2022.06.15 16:34
+     **/
+    public void execute(Map variables, List<FormData> list,List<Formula> formulas ){
+             Map<Boolean,List<FormData>> map = list.stream().collect(Collectors.partitioningBy(e->e!=null&&e.getFormula().getFormula().contains("E[")));
+             /*有依赖的*/
+             List<FormData> rely= map.get(true);
+             /*没有依赖的*/
+             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());
+            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())));
+            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);
+            }
+        }
+    }
+
+}

+ 24 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/FormulaWrapper.java

@@ -0,0 +1,24 @@
+package org.springblade.manager.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.manager.dto.FormulaBean;
+import org.springblade.manager.entity.Formula;
+import org.springblade.system.user.vo.UserVO;
+
+import java.util.Objects;
+
+/**
+ * @author yangyj
+ * @Date 2022/6/14 17:33
+ * @description TODO
+ */
+public class FormulaWrapper extends BaseEntityWrapper<Formula,FormulaBean> {
+    public static FormulaWrapper build() {
+        return new FormulaWrapper();
+    }
+    @Override
+    public FormulaBean entityVO(Formula entity) {
+        return  Objects.requireNonNull(BeanUtil.copy(entity, FormulaBean.class));
+    }
+}