fanxp пре 1 година
родитељ
комит
f0ad70512d

+ 11 - 9
docker-compose.yml

@@ -8,16 +8,18 @@ services:
     image: registry.yingcaibx.com/tl/api:latest
     restart: always
     container_name: tl_api
-    environment:
-      - SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL=jdbc:mysql://172.28.175.70:3306/tl?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#    environment:
+#      - SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL=jdbc:mysql://172.28.175.70:3306/tl?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #      - MQTT-SERVER=tcp://172.28.175.70:1883
+    ports:
+      - 8001:8080
     networks:
-      - docker_networks_default
-    deploy: #限制资源使用
-      resources:
-        limits:
-          cpus: '0.50'
-          memory: 2048M
+      - dockertest_bx_default
+#    deploy: #限制资源使用
+#      resources:
+#        limits:
+#          cpus: '0.50'
+#          memory: 2048M
     labels:
       - "traefik.http.routers.tl_api.rule=Host(`test.tl.web.yingcaibx.com`) && PathPrefix(`/api`)"
       - "traefik.http.routers.tl_api.middlewares=tl_api-stripprefix"
@@ -26,5 +28,5 @@ services:
       - "traefik.http.routers.tl_api.tls.certresolver=yxt"
 
 networks:
-  docker_networks_default:
+  dockertest_bx_default:
     external: true

+ 32 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfOaPullNode.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.liteflow.node;
+
+import afu.org.checkerframework.checker.oigj.qual.O;
+import com.xjrsoft.module.oa.service.IWfOaPullService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * 收文流程结束处理
+ */
+@Component("wf_oa_pull_node")
+public class WfOaPullNode extends NodeComponent {
+    @Autowired
+    private IWfOaPullService wfOaPullService;
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Optional<String> formKey = params.keySet().stream().filter(f -> f.contains("form_")).findFirst();
+        if (formKey.isPresent()) {
+            Map<String, Object> formData = (Map<String, Object>) params.get(formKey.get());
+            Long id = (Long) formData.get("id");
+            System.out.println(id);
+        }
+        System.out.println("wf_oa_pull_node");
+    }
+}

+ 15 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfOaPushNode.java

@@ -0,0 +1,15 @@
+package com.xjrsoft.module.liteflow.node;
+
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.stereotype.Component;
+
+/**
+ * 发文流程结束处理
+ */
+@Component("wf_oa_push_node")
+public class WfOaPushNode extends NodeComponent {
+    @Override
+    public void process() throws Exception {
+        System.out.println("wf_oa_push_node");
+    }
+}

+ 10 - 0
src/main/java/com/xjrsoft/module/liteflow/node/util.java

@@ -0,0 +1,10 @@
+package com.xjrsoft.module.liteflow.node;
+
+public class util {
+
+//    public Long getFormDataId() {
+//
+//    }
+//
+//    public Map<>
+}

+ 110 - 0
src/main/java/com/xjrsoft/module/oa/entity/WfOaPull.java

@@ -0,0 +1,110 @@
+package com.xjrsoft.module.oa.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+* @title: 文件收发表
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Data
+@TableName("wf_oa_pull")
+@ApiModel(value = "文件收发表对象", description = "文件收发表")
+public class WfOaPull implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 来文标题
+    */
+    @ApiModelProperty("来文标题")
+    private String title;
+    /**
+    * 收文编号
+    */
+    @ApiModelProperty("收文编号")
+    private String number;
+    /**
+    * 缓急
+    */
+    @ApiModelProperty("缓急")
+    private String urgency;
+    /**
+    * 来文字号
+    */
+    @ApiModelProperty("来文字号")
+    private String pullNumber;
+    /**
+    * 来文日期
+    */
+    @ApiModelProperty("来文日期")
+    private LocalDateTime pullDate;
+    /**
+    * 来文机关
+    */
+    @ApiModelProperty("来文机关")
+    private String institution;
+    /**
+    * 密级
+    */
+    @ApiModelProperty("密级")
+    private String classification;
+    /**
+    * 拟办意见
+    */
+    @ApiModelProperty("拟办意见")
+    private String opinion;
+    /**
+    * 领导批示
+    */
+    @ApiModelProperty("领导批示")
+    private String leaderOpinion;
+    /**
+    * 部门办理情况
+    */
+    @ApiModelProperty("部门办理情况")
+    private String organHandleStatus;
+    /**
+    * 收文机构
+    */
+    @ApiModelProperty("收文机构")
+    private String pullOrgan;
+    /**
+    * 收文人
+    */
+    @ApiModelProperty("收文人")
+    private String personName;
+    /**
+    * 公文附件
+    */
+    @ApiModelProperty("公文附件")
+    private String files;
+    /**
+    * 隐藏组件
+    */
+    @ApiModelProperty("隐藏组件")
+    private String isend;
+
+
+}

+ 120 - 0
src/main/java/com/xjrsoft/module/oa/entity/WfOaPush.java

@@ -0,0 +1,120 @@
+package com.xjrsoft.module.oa.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+* @title: 公文发布
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Data
+@TableName("wf_oa_push")
+@ApiModel(value = "公文发布对象", description = "公文发布")
+public class WfOaPush implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 发文名称
+    */
+    @ApiModelProperty("发文名称")
+    private String name;
+    /**
+    * 发文人
+    */
+    @ApiModelProperty("发文人")
+    private String userName;
+    /**
+    * 说明
+    */
+    @ApiModelProperty("说明")
+    private String remark;
+    /**
+    * 发文字号
+    */
+    @ApiModelProperty("发文字号")
+    private String number;
+    /**
+    * 拟稿人
+    */
+    @ApiModelProperty("拟稿人")
+    private String drafters;
+    /**
+    * 接收人
+    */
+    @ApiModelProperty("接收人")
+    private String recipients;
+    /**
+    * 发文单位意见
+    */
+    @ApiModelProperty("发文单位意见")
+    private String institution;
+    /**
+    * 会办单位意见
+    */
+    @ApiModelProperty("会办单位意见")
+    private String backOpinion;
+    /**
+    * 主题词
+    */
+    @ApiModelProperty("主题词")
+    private String tags;
+    /**
+    * 秘密等级
+    */
+    @ApiModelProperty("秘密等级")
+    private String secretLevel;
+    /**
+    * 保密期限
+    */
+    @ApiModelProperty("保密期限")
+    private String confidentialityPeriod;
+    /**
+    * 印发机关
+    */
+    @ApiModelProperty("印发机关")
+    private String issuingAuthority;
+    /**
+    * 紧急程度
+    */
+    @ApiModelProperty("紧急程度")
+    private String urgency;
+    /**
+    * 打印份数
+    */
+    @ApiModelProperty("打印份数")
+    private Double printNumber;
+    /**
+    * 印发日期
+    */
+    @ApiModelProperty("印发日期")
+    private LocalDateTime dateOfIssue;
+    /**
+    * 隐藏组件
+    */
+    @ApiModelProperty("隐藏组件")
+    private String status;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/oa/mapper/WfOaPullMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.oa.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.oa.entity.WfOaPull;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 文件收发表
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Mapper
+public interface WfOaPullMapper extends BaseMapper<WfOaPull> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/oa/mapper/WfOaPushMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.oa.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.oa.entity.WfOaPush;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 公文发布
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Mapper
+public interface WfOaPushMapper extends BaseMapper<WfOaPush> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/oa/service/IWfOaPullService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.oa.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.oa.entity.WfOaPull;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 文件收发表
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+
+public interface IWfOaPullService extends IService<WfOaPull> {
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/oa/service/IWfOaPushService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.oa.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.oa.entity.WfOaPush;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 公文发布
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+
+public interface IWfOaPushService extends IService<WfOaPush> {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/oa/service/impl/WfOaPullServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.oa.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.oa.entity.WfOaPull;
+import com.xjrsoft.module.oa.mapper.WfOaPullMapper;
+import com.xjrsoft.module.oa.service.IWfOaPullService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 文件收发表
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class WfOaPullServiceImpl extends ServiceImpl<WfOaPullMapper, WfOaPull> implements IWfOaPullService {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/oa/service/impl/WfOaPushServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.oa.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.oa.entity.WfOaPush;
+import com.xjrsoft.module.oa.mapper.WfOaPushMapper;
+import com.xjrsoft.module.oa.service.IWfOaPushService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 公文发布
+* @Author fanxp
+* @Date: 2023-11-02
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class WfOaPushServiceImpl extends ServiceImpl<WfOaPushMapper, WfOaPush> implements IWfOaPushService {
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/workflow/listener/ExecutionDelegate.java

@@ -16,6 +16,8 @@ import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.*;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.RedisUtil;
+import com.xjrsoft.module.liteflow.entity.XjrLiteflowChain;
+import com.xjrsoft.module.liteflow.service.IXjrLiteflowChainService;
 import com.xjrsoft.module.magicapi.service.IMagicApiService;
 import com.xjrsoft.module.magicapi.vo.MagicApiInfoVo;
 import com.xjrsoft.module.organization.entity.User;
@@ -24,6 +26,8 @@ import com.xjrsoft.module.workflow.entity.*;
 import com.xjrsoft.module.workflow.model.*;
 import com.xjrsoft.module.workflow.service.*;
 import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
+import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder;
+import com.yomahub.liteflow.core.FlowExecutor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.camunda.bpm.engine.HistoryService;
@@ -41,6 +45,7 @@ import org.camunda.bpm.engine.variable.Variables;
 import org.springframework.stereotype.Component;
 import org.ssssssss.magicapi.core.service.MagicAPIService;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -66,6 +71,10 @@ public class ExecutionDelegate implements ExecutionListener {
 
     private final IWorkflowCirculatedService circulatedService;
 
+    private final IXjrLiteflowChainService liteflowChainService;
+
+    private final FlowExecutor flowExecutor;
+
 //    private final IWorkflowSchemaService workflowSchemaService;
 
     @Override
@@ -794,6 +803,14 @@ public class ExecutionDelegate implements ExecutionListener {
             }
             //如果是规则引擎
             else {
+                nodeEventConfig.setLiteflowId("1719906259126775809");
+                String liteflowId = nodeEventConfig.getLiteflowId();
+                XjrLiteflowChain chain = liteflowChainService.getById(liteflowId);
+                // 更新规则
+                LiteFlowChainELBuilder.createChain().setChainName(chain.getChainName()).setEL(chain.getElData()).build();
+                // 执行规则
+                flowExecutor.execute2Resp(chain.getChainName(), null,varMap);
+
                 System.out.println("规则引擎");
             }
 

+ 2 - 0
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -33,6 +33,7 @@ import com.xjrsoft.module.form.dto.FormExecuteWorkflowUpdateDto;
 import com.xjrsoft.module.form.entity.FormTemplate;
 import com.xjrsoft.module.form.mapper.FormTemplateMapper;
 import com.xjrsoft.module.form.service.IFormExecuteService;
+import com.xjrsoft.module.liteflow.service.IXjrLiteflowChainService;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.service.IUserService;
@@ -122,6 +123,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
     private final IWorkflowFormRelationService formRelationService;
 
     private final IUserService userService;
+
     /**
      * 数据库存储xml字段的后缀
      */

+ 5 - 5
src/main/resources/application-dev.yml

@@ -9,14 +9,14 @@ spring:
       datasource:
         master:
           driver-class-name: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://8.142.26.206:3306/tl?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&autoReconnect=true&failOverReadOnly=false
+          url: jdbc:mysql://10.150.10.139:3306/tl?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&autoReconnect=true&failOverReadOnly=false
           username: root
           password: Zwr~-f6H,u6QE^]C-AD_
 
 
   redis:
     database: 10
-    host: 8.142.26.206
+    host: 10.150.10.139
     port: 6379
     password: wa3re~86Hu&ifniyM   # 密码(默认为空)
     timeout: 36000ms  # 连接超时时长(毫秒)
@@ -41,7 +41,7 @@ timetable:
 mqtt:
   username: root
   password: qwe123QWE
-  server: tcp://8.142.26.206:1883
+  server: tcp://10.150.10.139:1883
   qos: 1
 
 xjrsoft:
@@ -50,8 +50,8 @@ xjrsoft:
     cloud-type: minio
     access-key: ycbx
     secret-key: qwe123QWE
-    endpoint: https://test.minio.yingcaibx.com
-    endpoint-preview: https://test.minio.yingcaibx.com
+    endpoint: http://10.150.10.139:9000
+    endpoint-preview: http://10.150.10.139:9000
     bucket-name: learun
     prefix: xjr
   generate:

+ 14 - 0
src/main/resources/sqlScript/init_sql.sql

@@ -1046,4 +1046,18 @@ create table material_task_appendix
     primary key (`id`)
 ) engine=innodb default charset=utf8mb4 COLLATE = utf8mb4_0900_ai_ci comment '材料提交任务附件';
 
+-- ----------------------------
+-- 文件接收管理
+-- ----------------------------
+drop table if exists file_receive;
+create table file_receive
+(
+    id bigint not null comment '主键编号',
+    `receiver_user_id` bigint NULL DEFAULT NULL COMMENT '接收用户编号',
+    `create_date` date NULL DEFAULT NULL COMMENT '创建时间',
+    `data_id` bigint NULL DEFAULT NULL COMMENT '数据编号(根据文件类型判断,数据来源->wf_oa_push,wf_oa_pull)',
+    `file_type` int NULL DEFAULT NULL COMMENT '文件类型 1=发文 2=收文',
+    primary key (`id`)
+) engine=innodb default charset=utf8mb4 COLLATE = utf8mb4_0900_ai_ci comment '文件接收管理';
+
 SET FOREIGN_KEY_CHECKS = 1;

+ 54 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -240,6 +240,60 @@ public class FreeMarkerGeneratorTest {
         params.setDs(ds);
 
 
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcWFPushTest() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("wf_oa_push");
+        mainTable.setIsMain(true);
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);
+
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("fanxp");
+        params.setPackageName("oa");
+        params.setTableConfigs(tableConfigs);
+        params.setPage(false);
+        params.setImport(false);
+        params.setExport(false);
+        params.setOutMainDir(false);
+        params.setDs(ds);
+
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcWFPullest() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("wf_oa_pull");
+        mainTable.setIsMain(true);
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);
+
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("fanxp");
+        params.setPackageName("oa");
+        params.setTableConfigs(tableConfigs);
+        params.setPage(false);
+        params.setImport(false);
+        params.setExport(false);
+        params.setOutMainDir(false);
+        params.setDs(ds);
+
+
         IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
 
         apiGeneratorService.generateCodes(params);