dev-lml #3

Merged
chencc merged 3 commits from dev-lml into main-stable 2 weeks ago
  1. 6
      common/common-botp/pom.xml
  2. 10
      common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java
  3. 5
      common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingBusinessMapper.java
  4. 4
      common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingFormulaMapper.java
  5. 4
      common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingRulesMapper.java
  6. 2
      common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingBusinessMapper.xml
  7. 2
      common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingFormulaMapper.xml
  8. 2
      common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingRulesMapper.xml
  9. 11
      common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java
  10. 12
      common/common-botp/src/main/java/apelet/common/botp/model/ConvertFieldmappingEntry.java
  11. 3
      common/common-botp/src/main/java/apelet/common/botp/model/ConvertRelation.java
  12. 21
      common/common-botp/src/main/java/apelet/common/botp/model/ConvertRule.java
  13. 2
      common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingBusiness.java
  14. 8
      common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingFormula.java
  15. 26
      common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingRules.java
  16. 8
      common/common-botp/src/main/java/apelet/common/botp/plugin/ReverseWritingPlugIn.java
  17. 4
      common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingBusinessService.java
  18. 4
      common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingFormulaService.java
  19. 6
      common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingRulesService.java
  20. 9
      common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingBusinessServiceImpl.java
  21. 9
      common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingFormulaServiceImpl.java
  22. 21
      common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java
  23. 8
      common/common-online/src/main/java/apelet/common/online/dto/OnlinePluginExecuteDto.java
  24. 226
      common/common-online/src/main/java/apelet/common/online/plugin/pre/AuditOperationServicePlugIn.java
  25. 12
      common/common-online/src/main/java/apelet/common/online/plugin/pre/RevokeOperationServicePlugIn.java
  26. 208
      common/common-online/src/main/java/apelet/common/online/plugin/pre/SaveOperationServicePlugIn.java
  27. 40
      common/common-online/src/main/java/apelet/common/online/service/impl/OnlineOperationServiceImpl.java
  28. 1
      common/pom.xml

6
common/common-botp/pom.xml

@ -17,17 +17,17 @@
<dependency> <dependency>
<groupId>apelet</groupId> <groupId>apelet</groupId>
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>1.0.0</version> <version>${common-core.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>apelet</groupId> <groupId>apelet</groupId>
<artifactId>common-generator</artifactId> <artifactId>common-generator</artifactId>
<version>1.0.3</version> <version>1.0.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>apelet</groupId> <groupId>apelet</groupId>
<artifactId>common-online</artifactId> <artifactId>common-online</artifactId>
<version>1.0.3</version> <version>1.0.6</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>

10
common/common-generator/src/main/java/apelet/common/generator/controller/ReverseWritingRulesController.java → common/common-botp/src/main/java/apelet/common/botp/controller/ReverseWritingRulesController.java

@ -1,5 +1,11 @@
package apelet.common.generator.controller; package apelet.common.botp.controller;
import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.model.ReverseWritingRules;
import apelet.common.botp.service.IReverseWritingBusinessService;
import apelet.common.botp.service.IReverseWritingFormulaService;
import apelet.common.botp.service.IReverseWritingRulesService;
import apelet.common.core.annotation.MyRequestBody; import apelet.common.core.annotation.MyRequestBody;
import apelet.common.core.constant.ErrorCodeEnum; import apelet.common.core.constant.ErrorCodeEnum;
import apelet.common.core.exception.MyRuntimeException; import apelet.common.core.exception.MyRuntimeException;
@ -7,7 +13,7 @@ import apelet.common.core.object.MyPageData;
import apelet.common.core.object.MyPageParam; import apelet.common.core.object.MyPageParam;
import apelet.common.core.object.ResponseResult; import apelet.common.core.object.ResponseResult;
import apelet.common.core.util.MyPageUtil; import apelet.common.core.util.MyPageUtil;
import apelet.common.generator.dto.ReverseWritingRulesDto; import apelet.common.botp.dto.ReverseWritingRulesDto;
import apelet.common.generator.model.*; import apelet.common.generator.model.*;
import apelet.common.generator.service.*; import apelet.common.generator.service.*;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;

5
common/common-generator/src/main/java/apelet/common/generator/dao/ReverseWritingBusinessMapper.java → common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingBusinessMapper.java

@ -1,6 +1,7 @@
package apelet.common.generator.dao; package apelet.common.botp.dao;
import apelet.common.generator.model.ReverseWritingBusiness;
import apelet.common.botp.model.ReverseWritingBusiness;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ReverseWritingBusinessMapper extends BaseMapper<ReverseWritingBusiness> { public interface ReverseWritingBusinessMapper extends BaseMapper<ReverseWritingBusiness> {

4
common/common-generator/src/main/java/apelet/common/generator/dao/ReverseWritingFormulaMapper.java → common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingFormulaMapper.java

@ -1,6 +1,6 @@
package apelet.common.generator.dao; package apelet.common.botp.dao;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingFormula;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ReverseWritingFormulaMapper extends BaseMapper<ReverseWritingFormula> { public interface ReverseWritingFormulaMapper extends BaseMapper<ReverseWritingFormula> {

4
common/common-generator/src/main/java/apelet/common/generator/dao/ReverseWritingRulesMapper.java → common/common-botp/src/main/java/apelet/common/botp/dao/ReverseWritingRulesMapper.java

@ -1,6 +1,6 @@
package apelet.common.generator.dao; package apelet.common.botp.dao;
import apelet.common.generator.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingRules;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; import java.util.List;

2
common/common-generator/src/main/java/apelet/common/generator/dao/mapper/ReverseWritingBusinessMapper.xml → common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingBusinessMapper.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="apelet.common.generator.dao.ReverseWritingBusinessMapper"> <mapper namespace="apelet.common.botp.dao.ReverseWritingBusinessMapper">
</mapper> </mapper>

2
common/common-generator/src/main/java/apelet/common/generator/dao/mapper/ReverseWritingFormulaMapper.xml → common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingFormulaMapper.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="apelet.common.generator.dao.ReverseWritingFormulaMapper"> <mapper namespace="apelet.common.botp.dao.ReverseWritingFormulaMapper">
</mapper> </mapper>

2
common/common-generator/src/main/java/apelet/common/generator/dao/mapper/ReverseWritingRulesMapper.xml → common/common-botp/src/main/java/apelet/common/botp/dao/mapper/ReverseWritingRulesMapper.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="apelet.common.generator.dao.ReverseWritingRulesMapper"> <mapper namespace="apelet.common.botp.dao.ReverseWritingRulesMapper">
<select id="getTableType" resultType="java.util.Map"> <select id="getTableType" resultType="java.util.Map">
SELECT cr.source_entity_id id ,fh.table_name name , fh.tableTxt SELECT cr.source_entity_id id ,fh.table_name name , fh.tableTxt

11
common/common-generator/src/main/java/apelet/common/generator/dto/ReverseWritingRulesDto.java → common/common-botp/src/main/java/apelet/common/botp/dto/ReverseWritingRulesDto.java

@ -1,15 +1,16 @@
package apelet.common.generator.dto; package apelet.common.botp.dto;
import apelet.common.generator.model.ReverseWritingBusiness;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.generator.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.model.ReverseWritingRules;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
@Data @Data
public class ReverseWritingRulesDto extends ReverseWritingRules implements Serializable { public class ReverseWritingRulesDto extends ReverseWritingRules implements Serializable {
/** /**
* 来源单据名称 * 来源单据名称

12
common/common-botp/src/main/java/apelet/common/botp/model/ConvertFieldmappingEntry.java

@ -65,6 +65,18 @@ public class ConvertFieldmappingEntry extends BaseModel {
@Schema(description = "父表id") @Schema(description = "父表id")
private String parentId; private String parentId;
@Excel(name = "合并方式", width = 15)
@Schema(description = "合并方式(1:直接取 2:求和 3:拼接),默认为1")
private String mergeMethod;
@Excel(name = "目标分录", width = 15)
@Schema(description = "目标分录")
private String entryTarget;
@Excel(name = "执行顺序", width = 15)
@Schema(description = "执行顺序,数字越小越先执行")
private Integer serialNumber;
@RelationGlobalDict( @RelationGlobalDict(
masterIdField = "parentId", masterIdField = "parentId",
dictCode = "parent_id") dictCode = "parent_id")

3
common/common-botp/src/main/java/apelet/common/botp/model/ConvertRelation.java

@ -44,4 +44,7 @@ public class ConvertRelation extends BaseModel {
@Schema(description = "目标单id") @Schema(description = "目标单id")
private String targetId; private String targetId;
@Excel(name = "`本次实际使用的规则版本", width = 15)
@Schema(description = "`本次实际使用的规则版本")
private Integer ruleVersion;
} }

21
common/common-botp/src/main/java/apelet/common/botp/model/ConvertRule.java

@ -158,6 +158,27 @@ public class ConvertRule extends BaseModel {
@Schema(description = "下游在线编辑界面(关联在线表单界面(OnlineForm))") @Schema(description = "下游在线编辑界面(关联在线表单界面(OnlineForm))")
private Long downEditInterface; private Long downEditInterface;
@Excel(name = "分单策略", width = 15)
@Schema(description = "分单策略(1:一对一 2:多对一 3:按规则分组合并),默认为1")
private String splitMergeStrategy;
@Excel(name = "分单字段", width = 15)
@Schema(description = "分单字段")
private String groupByField;
@Excel(name = "规则启用条件", width = 15)
@Schema(description = "规则启用条件,,留空 = 始终启用")
private String enableConditionJson;
@Excel(name = "选单过滤条件", width = 15)
@Schema(description = "选单过滤策略,留空 = 全部通过")
private String selectFilterJson;
@Excel(name = "规则版本", width = 15)
@Schema(description = "规则版本")
private Integer ruleVersion;
@RelationDict( @RelationDict(
masterIdField = "downEditInterface", masterIdField = "downEditInterface",
equalOneToOneRelationField = "onlineForm", equalOneToOneRelationField = "onlineForm",

2
common/common-generator/src/main/java/apelet/common/generator/model/ReverseWritingBusiness.java → common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingBusiness.java

@ -1,4 +1,4 @@
package apelet.common.generator.model; package apelet.common.botp.model;
import apelet.common.core.base.model.BaseModel; import apelet.common.core.base.model.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

8
common/common-generator/src/main/java/apelet/common/generator/model/ReverseWritingFormula.java → common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingFormula.java

@ -1,4 +1,4 @@
package apelet.common.generator.model; package apelet.common.botp.model;
import apelet.common.core.base.model.BaseModel; import apelet.common.core.base.model.BaseModel;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
@ -74,4 +74,10 @@ public class ReverseWritingFormula extends BaseModel implements Serializable {
*/ */
private int enable; private int enable;
/**
* 执行顺序,数字越小越先执行
*/
private Integer execOrder;
} }

26
common/common-generator/src/main/java/apelet/common/generator/model/ReverseWritingRules.java → common/common-botp/src/main/java/apelet/common/botp/model/ReverseWritingRules.java

@ -1,4 +1,4 @@
package apelet.common.generator.model; package apelet.common.botp.model;
import apelet.common.core.base.model.BaseModel; import apelet.common.core.base.model.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -51,4 +51,28 @@ public class ReverseWritingRules extends BaseModel implements Serializable {
*/ */
private int enable; private int enable;
/**
* 超额检查公式,留空 = 不检查
*/
private String excessCheckJson;
/**
* 超额动作 1:拦截报错 2:仅告警
*/
private String excessAction;
/**
* 源单行关闭条件,留空=不关闭
*/
private String sourceCloseJson;
/**
* 撤销回滚 1:是 0:否 默认是
*/
private Integer rollbackOnRevoke;
/**
* 规则版本
*/
private Integer ruleVersion;
} }

8
common/common-botp/src/main/java/apelet/common/botp/plugin/ReverseWritingPlugIn.java

@ -4,10 +4,10 @@ import apelet.common.core.exception.MyRuntimeException;
import apelet.common.core.object.ObjectCollection; import apelet.common.core.object.ObjectCollection;
import apelet.common.core.object.ObjectValue; import apelet.common.core.object.ObjectValue;
import apelet.common.core.util.ApplicationContextHolder; import apelet.common.core.util.ApplicationContextHolder;
import apelet.common.generator.dto.ReverseWritingRulesDto; import apelet.common.botp.dto.ReverseWritingRulesDto;
import apelet.common.generator.model.ReverseWritingBusiness; import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.generator.service.impl.ReverseWritingRulesServiceImpl; import apelet.common.botp.service.impl.ReverseWritingRulesServiceImpl;
import apelet.common.generator.utils.OrmGenDataSourceUtil; import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.service.impl.OnlineFormServiceImpl; import apelet.common.online.service.impl.OnlineFormServiceImpl;
import apelet.common.online.util.Jexl3Util; import apelet.common.online.util.Jexl3Util;

4
common/common-generator/src/main/java/apelet/common/generator/service/IReverseWritingBusinessService.java → common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingBusinessService.java

@ -1,6 +1,6 @@
package apelet.common.generator.service; package apelet.common.botp.service;
import apelet.common.generator.model.ReverseWritingBusiness; import apelet.common.botp.model.ReverseWritingBusiness;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface IReverseWritingBusinessService extends IService<ReverseWritingBusiness> { public interface IReverseWritingBusinessService extends IService<ReverseWritingBusiness> {

4
common/common-generator/src/main/java/apelet/common/generator/service/IReverseWritingFormulaService.java → common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingFormulaService.java

@ -1,6 +1,6 @@
package apelet.common.generator.service; package apelet.common.botp.service;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingFormula;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface IReverseWritingFormulaService extends IService<ReverseWritingFormula> { public interface IReverseWritingFormulaService extends IService<ReverseWritingFormula> {

6
common/common-generator/src/main/java/apelet/common/generator/service/IReverseWritingRulesService.java → common/common-botp/src/main/java/apelet/common/botp/service/IReverseWritingRulesService.java

@ -1,8 +1,8 @@
package apelet.common.generator.service; package apelet.common.botp.service;
import apelet.common.generator.dto.ReverseWritingRulesDto; import apelet.common.botp.dto.ReverseWritingRulesDto;
import apelet.common.generator.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingRules;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;

9
common/common-generator/src/main/java/apelet/common/generator/service/impl/ReverseWritingBusinessServiceImpl.java → common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingBusinessServiceImpl.java

@ -1,8 +1,9 @@
package apelet.common.generator.service.impl; package apelet.common.botp.service.impl;
import apelet.common.generator.dao.ReverseWritingBusinessMapper;
import apelet.common.generator.model.ReverseWritingBusiness; import apelet.common.botp.dao.ReverseWritingBusinessMapper;
import apelet.common.generator.service.IReverseWritingBusinessService; import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.botp.service.IReverseWritingBusinessService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

9
common/common-generator/src/main/java/apelet/common/generator/service/impl/ReverseWritingFormulaServiceImpl.java → common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingFormulaServiceImpl.java

@ -1,8 +1,9 @@
package apelet.common.generator.service.impl; package apelet.common.botp.service.impl;
import apelet.common.generator.dao.ReverseWritingFormulaMapper;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.dao.ReverseWritingFormulaMapper;
import apelet.common.generator.service.IReverseWritingFormulaService; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.botp.service.IReverseWritingFormulaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

21
common/common-generator/src/main/java/apelet/common/generator/service/impl/ReverseWritingRulesServiceImpl.java → common/common-botp/src/main/java/apelet/common/botp/service/impl/ReverseWritingRulesServiceImpl.java

@ -1,13 +1,14 @@
package apelet.common.generator.service.impl; package apelet.common.botp.service.impl;
import apelet.common.generator.dao.ReverseWritingRulesMapper;
import apelet.common.generator.dto.ReverseWritingRulesDto; import apelet.common.botp.dao.ReverseWritingRulesMapper;
import apelet.common.generator.model.ReverseWritingBusiness; import apelet.common.botp.dto.ReverseWritingRulesDto;
import apelet.common.generator.model.ReverseWritingFormula; import apelet.common.botp.model.ReverseWritingBusiness;
import apelet.common.generator.model.ReverseWritingRules; import apelet.common.botp.model.ReverseWritingFormula;
import apelet.common.generator.service.IReverseWritingBusinessService; import apelet.common.botp.model.ReverseWritingRules;
import apelet.common.generator.service.IReverseWritingFormulaService; import apelet.common.botp.service.IReverseWritingBusinessService;
import apelet.common.generator.service.IReverseWritingRulesService; import apelet.common.botp.service.IReverseWritingFormulaService;
import apelet.common.botp.service.IReverseWritingRulesService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;

8
common/common-online/src/main/java/apelet/common/online/dto/OnlinePluginExecuteDto.java

@ -6,6 +6,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Map;
/** /**
* 在线表单插件操作执行dto * 在线表单插件操作执行dto
@ -31,4 +32,11 @@ public class OnlinePluginExecuteDto {
@Schema(description = "billId") @Schema(description = "billId")
@NotNull(message = "数据验证失败,formId不能为空!") @NotNull(message = "数据验证失败,formId不能为空!")
private String billId; private String billId;
@Schema(description = "是否选择全部")
private Boolean isSelectAll;
@Schema(description = "列表筛选条件")
private Map<String, Object> queryParams;
} }

226
common/common-online/src/main/java/apelet/common/online/plugin/pre/AuditOperationServicePlugIn.java

@ -1,26 +1,12 @@
package apelet.common.online.plugin.pre; package apelet.common.online.plugin.pre;
import apelet.common.core.exception.MyRuntimeException;
import apelet.common.core.object.ObjectCollection;
import apelet.common.core.object.ObjectValue;
import apelet.common.core.util.ApplicationContextHolder; import apelet.common.core.util.ApplicationContextHolder;
import apelet.common.generator.model.*; import apelet.common.generator.service.IOnlFormHeadService;
import apelet.common.generator.service.*;
import apelet.common.generator.service.impl.ReverseWritingBusinessServiceImpl;
import apelet.common.generator.utils.OrmGenDataSourceUtil; import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.plugin.BeginOperationTransactionArgs;
import apelet.common.online.plugin.OperationServicePlugIn; import apelet.common.online.plugin.OperationServicePlugIn;
import apelet.common.online.plugin.OperationServicePlugInArgs; import apelet.common.online.plugin.OperationServicePlugInArgs;
import apelet.common.online.service.OnlineFormService;
import apelet.common.online.service.OnlineOperationService;
import apelet.common.online.service.impl.OnlineFormServiceImpl; import apelet.common.online.service.impl.OnlineFormServiceImpl;
import apelet.common.online.util.Jexl3Util; import apelet.common.online.util.Jexl3Util;
import apelet.common.orm.impl.Selector;
import apelet.common.orm.impl.SelectorItem;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.*;
/** /**
* @author Soon * @author Soon
@ -30,9 +16,9 @@ import java.util.*;
public class AuditOperationServicePlugIn extends OperationServicePlugIn { public class AuditOperationServicePlugIn extends OperationServicePlugIn {
private OnlineFormServiceImpl onlineFormService; private OnlineFormServiceImpl onlineFormService;
private IReverseWritingRulesService reverseWritingRulesService; // private IReverseWritingRulesService reverseWritingRulesService;
private IReverseWritingBusinessService businessService; // private IReverseWritingBusinessService businessService;
private IReverseWritingFormulaService formulaService; // private IReverseWritingFormulaService formulaService;
private OrmGenDataSourceUtil ormGenDataSourceUtil; private OrmGenDataSourceUtil ormGenDataSourceUtil;
private IOnlFormHeadService onlFormHeadService; private IOnlFormHeadService onlFormHeadService;
private Jexl3Util jexl3Util; private Jexl3Util jexl3Util;
@ -40,9 +26,9 @@ public class AuditOperationServicePlugIn extends OperationServicePlugIn {
public AuditOperationServicePlugIn() { public AuditOperationServicePlugIn() {
onlineFormService = ApplicationContextHolder.getBean("onlineFormService"); onlineFormService = ApplicationContextHolder.getBean("onlineFormService");
reverseWritingRulesService = ApplicationContextHolder.getBean("reverseWritingRulesServiceImpl"); // reverseWritingRulesService = ApplicationContextHolder.getBean("reverseWritingRulesServiceImpl");
businessService = ApplicationContextHolder.getBean("reverseWritingBusinessServiceImpl"); // businessService = ApplicationContextHolder.getBean("reverseWritingBusinessServiceImpl");
formulaService = ApplicationContextHolder.getBean("reverseWritingFormulaServiceImpl"); // formulaService = ApplicationContextHolder.getBean("reverseWritingFormulaServiceImpl");
ormGenDataSourceUtil = ApplicationContextHolder.getBean("ormGenDataSourceUtil"); ormGenDataSourceUtil = ApplicationContextHolder.getBean("ormGenDataSourceUtil");
onlFormHeadService = ApplicationContextHolder.getBean("onlFormHeadServiceImpl"); onlFormHeadService = ApplicationContextHolder.getBean("onlFormHeadServiceImpl");
jexl3Util = ApplicationContextHolder.getBean("jexl3Util"); jexl3Util = ApplicationContextHolder.getBean("jexl3Util");
@ -55,103 +41,103 @@ public class AuditOperationServicePlugIn extends OperationServicePlugIn {
e.addFiledKey("billstatus"); e.addFiledKey("billstatus");
} }
@Override // @Override
public void beginOperationTransaction(BeginOperationTransactionArgs e) { // public void beginOperationTransaction(BeginOperationTransactionArgs e) {
//
ObjectValue objectValue = e.getModel(); // ObjectValue objectValue = e.getModel();
if (!objectValue.get("billstatus").equals("B")) { // if (!objectValue.get("billstatus").equals("B")) {
throw new RuntimeException("只有提交状态才能审核"); // throw new RuntimeException("只有提交状态才能审核");
} // }
try { // try {
objectValue.put("billstatus", "C"); // objectValue.put("billstatus", "C");
Selector selector = new Selector(); // Selector selector = new Selector();
selector.getList().add(new SelectorItem("billstatus")); // selector.getList().add(new SelectorItem("billstatus"));
ormGenDataSourceUtil().update(objectValue.getTableName(), objectValue, selector); // ormGenDataSourceUtil().update(objectValue.getTableName(), objectValue, selector);
//
OnlFormHead onlFormHead = onlFormHeadService.getOne(new LambdaQueryWrapper<OnlFormHead>().eq(OnlFormHead::getTableName, objectValue.getTableName())); // OnlFormHead onlFormHead = onlFormHeadService.getOne(new LambdaQueryWrapper<OnlFormHead>().eq(OnlFormHead::getTableName, objectValue.getTableName()));
List<ReverseWritingRules> list = reverseWritingRulesService.list( // List<ReverseWritingRules> list = reverseWritingRulesService.list(
new LambdaQueryWrapper<ReverseWritingRules>() // new LambdaQueryWrapper<ReverseWritingRules>()
.eq(ReverseWritingRules::getTargetDoc, onlFormHead.getId()) // .eq(ReverseWritingRules::getTargetDoc, onlFormHead.getId())
.eq(ReverseWritingRules::getTriggerTiming, 2) // .eq(ReverseWritingRules::getTriggerTiming, 2)
.eq(ReverseWritingRules::getEnable, 1) // .eq(ReverseWritingRules::getEnable, 1)
); // );
if (list.isEmpty()) { // if (list.isEmpty()) {
return; // return;
} // }
objectValue = ormGenDataSourceUtil.queryOne(objectValue.getTableName(), objectValue.getLong("id")); // objectValue = ormGenDataSourceUtil.queryOne(objectValue.getTableName(), objectValue.getLong("id"));
//
//
for (ReverseWritingRules rules : list) { // for (ReverseWritingRules rules : list) {
List<ReverseWritingBusiness> businesses = businessService.list( // List<ReverseWritingBusiness> businesses = businessService.list(
new LambdaQueryWrapper<ReverseWritingBusiness>() // new LambdaQueryWrapper<ReverseWritingBusiness>()
.eq(ReverseWritingBusiness::getRulesId, rules.getId()) // .eq(ReverseWritingBusiness::getRulesId, rules.getId())
.eq(ReverseWritingBusiness::getEnable, 1) // .eq(ReverseWritingBusiness::getEnable, 1)
); // );
List<ReverseWritingFormula> formulaList = formulaService.list( // List<ReverseWritingFormula> formulaList = formulaService.list(
new LambdaQueryWrapper<ReverseWritingFormula>() // new LambdaQueryWrapper<ReverseWritingFormula>()
.eq(ReverseWritingFormula::getRulesId, rules.getId()) // .eq(ReverseWritingFormula::getRulesId, rules.getId())
.eq(ReverseWritingFormula::getEnable, 1) // .eq(ReverseWritingFormula::getEnable, 1)
); // );
OnlFormHead srcForm = onlFormHeadService.getOne( // OnlFormHead srcForm = onlFormHeadService.getOne(
new LambdaQueryWrapper<OnlFormHead>().eq(OnlFormHead::getId, rules.getSourceDocuments()) // new LambdaQueryWrapper<OnlFormHead>().eq(OnlFormHead::getId, rules.getSourceDocuments())
); // );
if (objectValue.getValues().containsKey("srcbillid")) { // if (objectValue.getValues().containsKey("srcbillid")) {
//
} else { // } else {
Map map = objectValue.getValues(); // Map map = objectValue.getValues();
for (Object key : map.keySet()) { // for (Object key : map.keySet()) {
if (map.get(key) instanceof ObjectCollection) { // if (map.get(key) instanceof ObjectCollection) {
ObjectCollection entryList = (ObjectCollection) map.get(key); // ObjectCollection entryList = (ObjectCollection) map.get(key);
Iterator iterator = entryList.iterator(); // Iterator iterator = entryList.iterator();
while (iterator.hasNext()) { // while (iterator.hasNext()) {
ObjectValue next = (ObjectValue) iterator.next(); // ObjectValue next = (ObjectValue) iterator.next();
if (next.containsKey("srcbillid")) { // if (next.containsKey("srcbillid")) {
ObjectValue srcObjectValue = ormGenDataSourceUtil.queryOne(srcForm.getTableName(), next.getLong("srcbillid")); // ObjectValue srcObjectValue = ormGenDataSourceUtil.queryOne(srcForm.getTableName(), next.getLong("srcbillid"));
ObjectValue finalObjectValue = objectValue; // ObjectValue finalObjectValue = objectValue;
businesses.forEach(b -> { // businesses.forEach(b -> {
try { // try {
boolean bool = (boolean) onlineFormService.func(b.getPreconditionsEnglish(), JSON.parseObject(b.getPreconditionsJson()), finalObjectValue); // boolean bool = (boolean) onlineFormService.func(b.getPreconditionsEnglish(), JSON.parseObject(b.getPreconditionsJson()), finalObjectValue);
String expressionTransl = bool ? b.getEstablishedEnglish() : b.getNotEstablishedEnglish(); // String expressionTransl = bool ? b.getEstablishedEnglish() : b.getNotEstablishedEnglish();
String jsonObj = bool ? b.getEstablishedJson() : b.getNotEstablishedJson(); // String jsonObj = bool ? b.getEstablishedJson() : b.getNotEstablishedJson();
List<String> split = Arrays.asList(expressionTransl.split("=")); // List<String> split = Arrays.asList(expressionTransl.split("="));
String fun = ""; // String fun = "";
for (String s : split) { // for (String s : split) {
s = s.trim(); // s = s.trim();
if (s.startsWith("$") && s.endsWith("$")) { // if (s.startsWith("$") && s.endsWith("$")) {
fun = s; // fun = s;
} // }
} // }
fun = jexl3Util.getMySplit("\\$(.*?)\\$", fun); // fun = jexl3Util.getMySplit("\\$(.*?)\\$", fun);
List<String> funParam = Arrays.asList(jexl3Util.getMySplit("\\((.*?)\\)", fun).split(",")); // List<String> funParam = Arrays.asList(jexl3Util.getMySplit("\\((.*?)\\)", fun).split(","));
Object[] objects = jexl3Util.getFunParam(funParam, finalObjectValue); // Object[] objects = jexl3Util.getFunParam(funParam, finalObjectValue);
Object o = onlineFormService.executeFunction(JSON.parseObject(jsonObj), fun, objects); // Object o = onlineFormService.executeFunction(JSON.parseObject(jsonObj), fun, objects);
ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null); // ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null);
} catch (Exception ex) { // } catch (Exception ex) {
throw new RuntimeException(ex); // throw new RuntimeException(ex);
} // }
}); // });
formulaList.forEach(f -> { // formulaList.forEach(f -> {
//
try { // try {
ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null); // ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null);
} catch (Exception ex) { // } catch (Exception ex) {
throw new RuntimeException(ex); // throw new RuntimeException(ex);
} // }
}); // });
} // }
} // }
} // }
} // }
//
} // }
} // }
//
//
// 审核反写规则 // // 审核反写规则
//
} catch (Exception e1) { // } catch (Exception e1) {
throw new MyRuntimeException(e1); // throw new MyRuntimeException(e1);
} // }
//
} // }
} }

12
common/common-online/src/main/java/apelet/common/online/plugin/pre/RevokeOperationServicePlugIn.java

@ -10,9 +10,9 @@ import apelet.common.flow.model.FlowWorkOrder;
import apelet.common.flow.service.FlowApiService; import apelet.common.flow.service.FlowApiService;
import apelet.common.generator.model.OnlFormHead; import apelet.common.generator.model.OnlFormHead;
import apelet.common.generator.service.IOnlFormHeadService; import apelet.common.generator.service.IOnlFormHeadService;
import apelet.common.generator.service.IReverseWritingBusinessService; //import apelet.common.generator.service.IReverseWritingBusinessService;
import apelet.common.generator.service.IReverseWritingFormulaService; //import apelet.common.generator.service.IReverseWritingFormulaService;
import apelet.common.generator.service.IReverseWritingRulesService; //import apelet.common.generator.service.IReverseWritingRulesService;
import apelet.common.generator.utils.OrmGenDataSourceUtil; import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.plugin.BeginOperationTransactionArgs; import apelet.common.online.plugin.BeginOperationTransactionArgs;
import apelet.common.online.plugin.OperationServicePlugIn; import apelet.common.online.plugin.OperationServicePlugIn;
@ -31,9 +31,9 @@ import java.util.HashMap;
*/ */
public class RevokeOperationServicePlugIn extends OperationServicePlugIn { public class RevokeOperationServicePlugIn extends OperationServicePlugIn {
private IReverseWritingRulesService reverseWritingRulesService; // private IReverseWritingRulesService reverseWritingRulesService;
private IReverseWritingBusinessService businessService; // private IReverseWritingBusinessService businessService;
private IReverseWritingFormulaService formulaService; // private IReverseWritingFormulaService formulaService;
private OnlineFormServiceImpl onlineFormService; private OnlineFormServiceImpl onlineFormService;
private OrmGenDataSourceUtil ormGenDataSourceUtil; private OrmGenDataSourceUtil ormGenDataSourceUtil;
private IOnlFormHeadService onlFormHeadService; private IOnlFormHeadService onlFormHeadService;

208
common/common-online/src/main/java/apelet/common/online/plugin/pre/SaveOperationServicePlugIn.java

@ -50,18 +50,18 @@ public class SaveOperationServicePlugIn extends OperationServicePlugIn {
private CommonRedisUtil commonRedisUtil; private CommonRedisUtil commonRedisUtil;
private IReverseWritingRulesService reverseWritingRulesService; // private IReverseWritingRulesService reverseWritingRulesService;
private IReverseWritingBusinessService businessService; // private IReverseWritingBusinessService businessService;
private IReverseWritingFormulaService formulaService; // private IReverseWritingFormulaService formulaService;
public SaveOperationServicePlugIn() { public SaveOperationServicePlugIn() {
ormGenDataSourceUtil = ApplicationContextHolder.getBean("ormGenDataSourceUtil"); ormGenDataSourceUtil = ApplicationContextHolder.getBean("ormGenDataSourceUtil");
onlFormHeadService = ApplicationContextHolder.getBean("onlFormHeadServiceImpl"); onlFormHeadService = ApplicationContextHolder.getBean("onlFormHeadServiceImpl");
onlineFormService = ApplicationContextHolder.getBean("onlineFormService"); onlineFormService = ApplicationContextHolder.getBean("onlineFormService");
reverseWritingRulesService = ApplicationContextHolder.getBean("reverseWritingRulesServiceImpl"); // reverseWritingRulesService = ApplicationContextHolder.getBean("reverseWritingRulesServiceImpl");
businessService = ApplicationContextHolder.getBean("reverseWritingBusinessServiceImpl"); // businessService = ApplicationContextHolder.getBean("reverseWritingBusinessServiceImpl");
formulaService = ApplicationContextHolder.getBean("reverseWritingFormulaServiceImpl"); // formulaService = ApplicationContextHolder.getBean("reverseWritingFormulaServiceImpl");
jexl3Util = ApplicationContextHolder.getBean("jexl3Util"); jexl3Util = ApplicationContextHolder.getBean("jexl3Util");
commonRedisUtil = ApplicationContextHolder.getBean("commonRedisUtil"); commonRedisUtil = ApplicationContextHolder.getBean("commonRedisUtil");
onlineTableService = ApplicationContextHolder.getBean("onlineTableService"); onlineTableService = ApplicationContextHolder.getBean("onlineTableService");
@ -121,109 +121,109 @@ public class SaveOperationServicePlugIn extends OperationServicePlugIn {
//objectValue.put("create_user_id", jsonObject); //objectValue.put("create_user_id", jsonObject);
objectValue = ormGenDataSourceUtil.addNew(objectValue.getTableName(), objectValue); objectValue = ormGenDataSourceUtil.addNew(objectValue.getTableName(), objectValue);
} }
reverseWriting(objectValue, onlFormHead); // reverseWriting(objectValue, onlFormHead);
return objectValue; return objectValue;
} }
// 反写规则 // 反写规则
void reverseWriting(ObjectValue objectValue, OnlFormHead onlFormHead) { // void reverseWriting(ObjectValue objectValue, OnlFormHead onlFormHead) {
// 判断是否存在源单单据ID // // 判断是否存在源单单据ID
if (StringUtils.isEmpty(objectValue.getString("srcbillid"))) { // if (StringUtils.isEmpty(objectValue.getString("srcbillid"))) {
return; // return;
} // }
// 反写规则 // // 反写规则
List<ReverseWritingRules> rules = reverseWritingRulesService.list( // List<ReverseWritingRules> rules = reverseWritingRulesService.list(
new LambdaQueryWrapper<ReverseWritingRules>() // new LambdaQueryWrapper<ReverseWritingRules>()
.eq(ReverseWritingRules::getEnable, 1) // .eq(ReverseWritingRules::getEnable, 1)
.eq(ReverseWritingRules::getTriggerTiming, 1) // .eq(ReverseWritingRules::getTriggerTiming, 1)
.eq(ReverseWritingRules::getTargetDoc, onlFormHead.getId())); // .eq(ReverseWritingRules::getTargetDoc, onlFormHead.getId()));
ObjectValue finalObjectValue = objectValue; // ObjectValue finalObjectValue = objectValue;
rules.forEach(rule -> { // rules.forEach(rule -> {
// 反写公式 // // 反写公式
List<ReverseWritingFormula> formulaList = formulaService.list( // List<ReverseWritingFormula> formulaList = formulaService.list(
new LambdaQueryWrapper<ReverseWritingFormula>() // new LambdaQueryWrapper<ReverseWritingFormula>()
.eq(ReverseWritingFormula::getEnable, 1) // .eq(ReverseWritingFormula::getEnable, 1)
.eq(ReverseWritingFormula::getRulesId, rule.getId())); // .eq(ReverseWritingFormula::getRulesId, rule.getId()));
for (ReverseWritingFormula formula : formulaList) { // for (ReverseWritingFormula formula : formulaList) {
if (formula.getEnable() == 0) continue; // if (formula.getEnable() == 0) continue;
JSONObject conditionJson = JSON.parseObject(formula.getConditionJson()); // JSONObject conditionJson = JSON.parseObject(formula.getConditionJson());
String expressionTranslation = conditionJson.getString("expressionTranslation"); // String expressionTranslation = conditionJson.getString("expressionTranslation");
boolean funValue = (Boolean) onlineFormService.func(expressionTranslation, conditionJson, finalObjectValue); // boolean funValue = (Boolean) onlineFormService.func(expressionTranslation, conditionJson, finalObjectValue);
if (funValue) { // if (funValue) {
String sourceSingleField = formula.getSourceSingleField(); // String sourceSingleField = formula.getSourceSingleField();
String formulaField = formula.getFormulaEnglish(); // String formulaField = formula.getFormulaEnglish();
String[] s = sourceSingleField.split("\\."); // 上游单据 // String[] s = sourceSingleField.split("\\."); // 上游单据
String[] f = formulaField.split("\\."); // 下游单据 // String[] f = formulaField.split("\\."); // 下游单据
if (s[0].equals(s[1])) { // if (s[0].equals(s[1])) {
//修改表头 // //修改表头
ObjectValue srcObjectValue = new ObjectValue(s[1]); // ObjectValue srcObjectValue = new ObjectValue(s[1]);
srcObjectValue.put("id", finalObjectValue.getLong("srcbillid")); // srcObjectValue.put("id", finalObjectValue.getLong("srcbillid"));
srcObjectValue.put(s[2], finalObjectValue.get(s[2])); // srcObjectValue.put(s[2], finalObjectValue.get(s[2]));
try { // try {
ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null); // ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null);
} catch (Exception e) { // } catch (Exception e) {
throw new RuntimeException(e); // throw new RuntimeException(e);
} // }
} else { // } else {
//修改分录 // //修改分录
ObjectCollection collection = (ObjectCollection) finalObjectValue.get(f[1]); // ObjectCollection collection = (ObjectCollection) finalObjectValue.get(f[1]);
Iterator iterator = collection.iterator(); // Iterator iterator = collection.iterator();
while (iterator.hasNext()) { // while (iterator.hasNext()) {
ObjectValue next = (ObjectValue) iterator.next(); // ObjectValue next = (ObjectValue) iterator.next();
Object value = getValue(formula.getFormulaJson(), next); // Object value = getValue(formula.getFormulaJson(), next);
// 反写原单据 // // 反写原单据
ObjectValue srcObjectValue = new ObjectValue(s[1]); // ObjectValue srcObjectValue = new ObjectValue(s[1]);
srcObjectValue.put("id", next.getLong("srcbillentryid")); // srcObjectValue.put("id", next.getLong("srcbillentryid"));
srcObjectValue.put(s[2], value); // srcObjectValue.put(s[2], value);
try { // try {
ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null); // ormGenDataSourceUtil.update(srcObjectValue.getTableName(), srcObjectValue, null);
} catch (Exception e) { // } catch (Exception e) {
throw new RuntimeException(e); // throw new RuntimeException(e);
} // }
} // }
} // }
} // }
} // }
// 业务规则 // // 业务规则
List<ReverseWritingBusiness> businessList = businessService.list( // List<ReverseWritingBusiness> businessList = businessService.list(
new LambdaQueryWrapper<ReverseWritingBusiness>() // new LambdaQueryWrapper<ReverseWritingBusiness>()
.eq(ReverseWritingBusiness::getEnable, 1) // .eq(ReverseWritingBusiness::getEnable, 1)
.eq(ReverseWritingBusiness::getRulesId, rule.getId())); // .eq(ReverseWritingBusiness::getRulesId, rule.getId()));
for (ReverseWritingBusiness business : businessList) { // for (ReverseWritingBusiness business : businessList) {
if (business.getEnable() == 0) continue; // if (business.getEnable() == 0) continue;
String preconditionsEnglish = business.getPreconditionsEnglish(); // String preconditionsEnglish = business.getPreconditionsEnglish();
JSONObject jsonObject = JSONObject.parseObject(business.getPreconditionsJson()); // JSONObject jsonObject = JSONObject.parseObject(business.getPreconditionsJson());
boolean p = (Boolean) onlineFormService.func(preconditionsEnglish, jsonObject, finalObjectValue); // boolean p = (Boolean) onlineFormService.func(preconditionsEnglish, jsonObject, finalObjectValue);
String expression; // String expression;
JSONObject expressionJson; // JSONObject expressionJson;
if (p) { // if (p) {
expression = business.getEstablishedEnglish(); // expression = business.getEstablishedEnglish();
expressionJson = JSON.parseObject(business.getEstablishedJson()); // expressionJson = JSON.parseObject(business.getEstablishedJson());
} else { // } else {
expression = business.getNotEstablishedEnglish(); // expression = business.getNotEstablishedEnglish();
expressionJson = JSON.parseObject(business.getNotEstablishedJson()); // expressionJson = JSON.parseObject(business.getNotEstablishedJson());
} // }
List<String> split = Arrays.asList(expression.split("=")); // List<String> split = Arrays.asList(expression.split("="));
String fun = ""; // String fun = "";
String tableName = ""; // String tableName = "";
for (String s : split) { // for (String s : split) {
s = s.trim(); // s = s.trim();
tableName = s.split("\\.")[0]; // tableName = s.split("\\.")[0];
if (s.startsWith("$") && s.endsWith("$")) { // if (s.startsWith("$") && s.endsWith("$")) {
fun = s; // fun = s;
} // }
} // }
ObjectValue srcObjectValue = ormGenDataSourceUtil.queryOne(tableName, objectValue.getLong("srcbillid"), null); // ObjectValue srcObjectValue = ormGenDataSourceUtil.queryOne(tableName, objectValue.getLong("srcbillid"), null);
fun = jexl3Util.getMySplit("\\$(.*?)\\$", fun); // fun = jexl3Util.getMySplit("\\$(.*?)\\$", fun);
List<String> funParam = Arrays.asList(jexl3Util.getMySplit("\\((.*?)\\)", fun).split(",")); // List<String> funParam = Arrays.asList(jexl3Util.getMySplit("\\((.*?)\\)", fun).split(","));
Object[] objects = jexl3Util.getFunParam(funParam, srcObjectValue); // Object[] objects = jexl3Util.getFunParam(funParam, srcObjectValue);
Object o = onlineFormService.executeFunction(expressionJson, fun, objects); // Object o = onlineFormService.executeFunction(expressionJson, fun, objects);
System.out.println(o); // System.out.println(o);
} // }
//
}); // });
} // }
Object getValue(String json, ObjectValue objectValue) { Object getValue(String json, ObjectValue objectValue) {
// 计算反写公式 // 计算反写公式

40
common/common-online/src/main/java/apelet/common/online/service/impl/OnlineOperationServiceImpl.java

@ -53,6 +53,7 @@ import apelet.common.orm.impl.*;
import apelet.common.redis.util.CommonRedisUtil; import apelet.common.redis.util.CommonRedisUtil;
import apelet.common.sequence.wrapper.IdGeneratorWrapper; import apelet.common.sequence.wrapper.IdGeneratorWrapper;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
@ -1085,6 +1086,15 @@ public class OnlineOperationServiceImpl implements OnlineOperationService {
} }
OnlineTable onlineTable = onlineTableService.getOnlineTableFromCache(onlineForm.getMasterTableId()); OnlineTable onlineTable = onlineTableService.getOnlineTableFromCache(onlineForm.getMasterTableId());
OnlFormHead onlFormHead = onlFormHeadService.getHeadTableNameCache(onlineTable.getTableName()); OnlFormHead onlFormHead = onlFormHeadService.getHeadTableNameCache(onlineTable.getTableName());
if (BooleanUtil.isTrue(onlinePluginExecuteDto.getIsSelectAll())) {
List<String> allBillIds = this.queryAllBillIds(onlineTable, onlinePluginExecuteDto.getQueryParams());
if (CollUtil.isEmpty(allBillIds)) {
OperationResult empty = new OperationResult();
empty.setMessage("没有符合条件的数据!");
return empty;
}
onlinePluginExecuteDto.setBillId(CollUtil.join(allBillIds, ","));
}
// executePlugin 是所有按钮的统一入口,附件的写入/清理必须按插件类型分别设闸, // executePlugin 是所有按钮的统一入口,附件的写入/清理必须按插件类型分别设闸,
// 否则「审核」这类只提交部分字段的按钮会把附件全量覆盖掉,「删除」则不会清理附件。 // 否则「审核」这类只提交部分字段的按钮会把附件全量覆盖掉,「删除」则不会清理附件。
boolean saveOperation = this.containsPlugin(sortDtoList, SaveOperationServicePlugIn.class); boolean saveOperation = this.containsPlugin(sortDtoList, SaveOperationServicePlugIn.class);
@ -1122,6 +1132,36 @@ public class OnlineOperationServiceImpl implements OnlineOperationService {
} }
/** /**
* 按列表筛选条件查询主表全部主键,用于"选择全部按钮"。
* queryParams 为 {列名: 值} 的等值条件;为空表示无筛选(即整表)。
*/
private List<String> queryAllBillIds(OnlineTable masterTable, Map<String, Object> queryParams) {
List<String> billIds = new ArrayList<>();
Filter filter = new Filter();
if (MapUtil.isNotEmpty(queryParams)) {
queryParams.forEach((column, value) -> {
if (value == null || "".equals(value)) {
return; // 空条件不过滤,与列表查询语义保持一致
}
filter.add(new FilterItem(column, FilterItem.equals, value));
});
}
Selector selector = new Selector();
selector.getList().add(new SelectorItem("id"));
ObjectCollection collection = ormGenDataSourceUtil.query(masterTable.getTableName(), filter, selector);
if (collection == null || collection.isEmpty()){
return new ArrayList<>();
}
for (int i = 0; i < collection.size(); i++) {
Object id = collection.getObject(i).get("id");
if (id != null) {
billIds.add(id.toString());
}
}
return billIds;
}
/**
* 判断当前按钮绑定的插件中是否包含指定插件。 * 判断当前按钮绑定的插件中是否包含指定插件。
* <p>按钮与插件的绑定是 widgetJson 中 pluginList[].class 的全限定类名(见 QuickFormWidgetUtil#setSaveButtonEnabled), * <p>按钮与插件的绑定是 widgetJson 中 pluginList[].class 的全限定类名(见 QuickFormWidgetUtil#setSaveButtonEnabled),
* 用类名判断比用中文 buttonName 可靠。</p> * 用类名判断比用中文 buttonName 可靠。</p>

1
common/pom.xml

@ -15,6 +15,7 @@
<module>common-flow</module> <module>common-flow</module>
<module>common-flow-online</module> <module>common-flow-online</module>
<module>common-online</module> <module>common-online</module>
<module>common-botp</module>
<module>common-tenant</module> <module>common-tenant</module>
<module>common-tenant-online</module> <module>common-tenant-online</module>

Loading…
Cancel
Save