Parcourir la source

动态增加sop增删改

wangliang il y a 1 an
Parent
commit
4e266c2068

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
sop-business/src/main/java/com/qmth/sop/business/activiti/listener/ProcessEventListener.java


+ 3 - 0
sop-business/src/main/java/com/qmth/sop/business/activiti/service/impl/ActivitiServiceImpl.java

@@ -109,6 +109,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     MySQLExec mySQLExec;
 
+    @Resource
+    TBSopInfoService tbSopInfoService;
+
     /**
      * 根据deploymentId查找processDefinitionId
      *

+ 0 - 11
sop-business/src/main/java/com/qmth/sop/business/entity/TDFormWidget.java

@@ -69,9 +69,6 @@ public class TDFormWidget implements Serializable {
     @ApiModelProperty(value = "绑定字段")
     private String binding;
 
-    @ApiModelProperty(value = "控件用值")
-    private String value;
-
     @ApiModelProperty(value = "数据来源")
     private String dataGrid;
 
@@ -291,14 +288,6 @@ public class TDFormWidget implements Serializable {
         this.length = length;
     }
 
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
     public String getDataGrid() {
         return dataGrid;
     }

+ 3 - 1
sop-business/src/main/java/com/qmth/sop/business/exec/MySQLExec.java

@@ -72,7 +72,9 @@ public class MySQLExec {
         Optional.ofNullable(type).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程类型不能为空"));
 
         TFCustomFlow tfCustomFlow = tfCustomFlowService.getOne(new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getType, type));
-        String tableName = "t_b_sop_dynamic_" + type.getTableName() + "_" + tfCustomFlow.getVersion();
+        Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
+
+        String tableName = type.getTableName() + "_" + tfCustomFlow.getVersion();
         int count = tbSopInfoService.selectSopDynamicExist(databaseName, tableName);
         if (count == 0) {
             InputStream inputStream = MySQLExec.class.getClassLoader().getResourceAsStream(fileName);

+ 37 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBSopInfoMapper.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.sop.business.entity.TBSopInfo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * sop表 Mapper 接口
@@ -22,4 +25,38 @@ public interface TBSopInfoMapper extends BaseMapper<TBSopInfo> {
      * @return
      */
     int selectSopDynamicExist(@Param("db") String db, @Param("tableName") String tableName);
+
+    /**
+     * 保存动态sop信息
+     *
+     * @param tableName
+     * @param flowDeploymentId
+     * @param flowId
+     * @param fieldName
+     * @param fieldValue
+     * @return
+     */
+    Boolean saveDynamicSop(@Param("tableName") String tableName, @Param("flowDeploymentId") String flowDeploymentId, @Param("flowId") Long flowId, @Param("fieldName") String fieldName, @Param("fieldValue") List<Map> fieldValue);
+
+    /**
+     * 更新动态sop信息
+     *
+     * @param tableName
+     * @param flowId
+     * @param fieldName
+     * @param fieldValue
+     * @return
+     */
+    Boolean updateDynamicSop(@Param("tableName") String tableName, @Param("flowDeploymentId") String flowDeploymentId, @Param("flowId") Long flowId, @Param("fieldName") String fieldName, @Param("fieldValue") List<Map> fieldValue);
+
+    /**
+     * 查询动态sop数据
+     *
+     * @param tableName
+     * @param flowDeploymentId
+     * @param flowId
+     * @param fieldName
+     * @return
+     */
+    int selectDynamicSop(@Param("tableName") String tableName, @Param("flowDeploymentId") String flowDeploymentId, @Param("flowId") Long flowId, String fieldName);
 }

+ 23 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBSopInfoService.java

@@ -1,7 +1,9 @@
 package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.result.FlowTaskResult;
 import com.qmth.sop.business.entity.TBSopInfo;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
 
 /**
  * <p>
@@ -21,4 +23,25 @@ public interface TBSopInfoService extends IService<TBSopInfo> {
      * @return
      */
     int selectSopDynamicExist(String db, String tableName);
+
+    /**
+     * 保存动态sop信息
+     *
+     * @param type
+     * @param flowId
+     * @param flowTaskResult
+     * @return
+     */
+    Boolean saveDynamicSop(TFCustomTypeEnum type, Long flowId, FlowTaskResult flowTaskResult);
+
+    /**
+     * 查询动态sop数据
+     *
+     * @param tableName
+     * @param flowDeploymentId
+     * @param flowId
+     * @param fieldName
+     * @return
+     */
+    int selectDynamicSop(String tableName, String flowDeploymentId, Long flowId, String fieldName);
 }

+ 53 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBSopInfoServiceImpl.java

@@ -1,11 +1,21 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.result.FlowFormWidgetResult;
+import com.qmth.sop.business.bean.result.FlowTaskResult;
 import com.qmth.sop.business.entity.TBSopInfo;
+import com.qmth.sop.business.entity.TFCustomFlow;
 import com.qmth.sop.business.mapper.TBSopInfoMapper;
 import com.qmth.sop.business.service.TBSopInfoService;
+import com.qmth.sop.business.service.TFCustomFlowService;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.*;
+
 /**
  * <p>
  * sop表 服务实现类
@@ -17,6 +27,9 @@ import org.springframework.stereotype.Service;
 @Service
 public class TBSopInfoServiceImpl extends ServiceImpl<TBSopInfoMapper, TBSopInfo> implements TBSopInfoService {
 
+    @Resource
+    TFCustomFlowService tfCustomFlowService;
+
     /**
      * 查询动态sop表名是否存在
      *
@@ -28,4 +41,44 @@ public class TBSopInfoServiceImpl extends ServiceImpl<TBSopInfoMapper, TBSopInfo
     public int selectSopDynamicExist(String db, String tableName) {
         return this.baseMapper.selectSopDynamicExist(db, tableName);
     }
+
+    /**
+     * 保存动态sop信息
+     *
+     * @param type
+     * @param flowId
+     * @param flowTaskResult
+     * @return
+     */
+    @Override
+    public Boolean saveDynamicSop(TFCustomTypeEnum type, Long flowId, FlowTaskResult flowTaskResult) {
+        TFCustomFlow tfCustomFlow = tfCustomFlowService.getOne(new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getType, type));
+        Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
+
+        String tableName = type.getTableName() + "_" + tfCustomFlow.getVersion();
+        List<FlowFormWidgetResult> flowFormWidgetResultList = flowTaskResult.getFormProperty();
+        List<Map<String, String>> fieldValue = new ArrayList<>(flowFormWidgetResultList.size());
+        for (FlowFormWidgetResult f : flowFormWidgetResultList) {
+            Map<String, String> map = new LinkedHashMap<>();
+            map.put(f.getFormId(), f.getValue());
+            fieldValue.add(map);
+        }
+
+        //首先查询动态表里是否有当前表单的数据,没有插入,有则更新
+        return null;
+    }
+
+    /**
+     * 查询动态sop数据
+     *
+     * @param tableName
+     * @param flowDeploymentId
+     * @param flowId
+     * @param fieldName
+     * @return
+     */
+    @Override
+    public int selectDynamicSop(String tableName, String flowDeploymentId, Long flowId, String fieldName) {
+        return 0;
+    }
 }

+ 3 - 0
sop-business/src/main/resources/db/dynamic_create_sop_table.sql

@@ -3,5 +3,8 @@ SET NAMES utf8mb4;
 DROP TABLE IF EXISTS #{dynamicTable};
 CREATE TABLE #{dynamicTable} (
          `type` varchar(20) NOT NULL COMMENT '流程类型,OFFICE_SOP_FLOW:教务处SOP,CLOUD_MARK_SOP_FLOW:研究生SOP,DING_EXCEPTION_FLOW:考勤异常审核流程,PROJECT_EXCHANGE_FLOW:项目计划变更流程,QUALITY_PROBLEM_FLOW:质量问题反馈流程',
+         `flow_deployment_id` VARCHAR(50) NOT NULL COMMENT '流程部署id',
+         `code` VARCHAR(30) DEFAULT NULL COMMENT '流程编号',
+         `flow_id` bigint DEFAULT NULL COMMENT '流程id',
          #{dynamicFields}
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='sop动态字段表';

+ 4 - 0
sop-business/src/main/resources/db/log/wangliang_update_log.sql

@@ -952,3 +952,7 @@ ALTER TABLE t_d_form_widget CHANGE COLUMN code code VARCHAR(20)
 
 ALTER TABLE t_d_form_widget_metadata CHANGE COLUMN code code VARCHAR(20)
     COMMENT '编码,TEXT:文本,NUMBER:数字文本,TEXTAREA:文本域,编码,TEXT:文本,TEXTAREA:文本域,SINGLE_SELECT:单选下拉框,MULTIPLE_SELECT:多选下拉框,RADIO:单选框,CHECKBOX:复选框,DATE:日期,BUTTON:按钮,IMG:图片,VIDEO:视频,AUDIO:音频,FILE:文件,POP_SELECT:弹出选择框,LABEL:标签,TABLE:表格,SIGN:签名,CASCADE_ADDRESS:城市选择控件,OTHER:其它,FORM_GROUP_TITLE:带虚线分割线的标题,ONLE_TITLE:普通标题,独占一行,RADIO_WITH_INPUT:带1个输入框的单选框,DEVICE_IN_TABLE:设备入库表格,DEVICE_OUT_TABLE:设备出库表格,RADIO:单选框,CHECKBOX:复选框,DATE:日期,BUTTON:按钮,IMG:图片,VIDEO:视频,AUDIO:音频,FILE:文件,POP_SELECT:弹出选择框,LABEL:标签,TABLE:表格,SIGN:签名,CASCADE_ADDRESS:城市选择控件,OTHER:其它,FORM_GROUP_TITLE:带虚线分割线的标题,ONLE_TITLE:普通标题,独占一行,RADIO_WITH_INPUT:带1个输入框的单选框,DEVICE_IN_TABLE:设备入库表格,DEVICE_OUT_TABLE:设备出库表格' NOT NULL;
+
+ALTER TABLE t_d_form_widget DROP COLUMN value;
+
+ALTER TABLE t_f_custom_flow_entity CHANGE COLUMN code code VARCHAR(30) COMMENT '编号' NOT NULL;

+ 20 - 0
sop-business/src/main/resources/mapper/TBSopInfoMapper.xml

@@ -5,4 +5,24 @@
     <select id="selectSopDynamicExist" resultType="java.lang.Integer">
         SELECT count(1) FROM information_schema.tables WHERE table_schema = #{db} AND table_name = #{tableName}
     </select>
+
+    <insert id="saveDynamicSop">
+
+    </insert>
+
+    <update id="updateDynamicSop">
+
+    </update>
+
+    <select id="selectDynamicSop" resultType="java.lang.Integer">
+        select #{fieldName} from #{tableName}
+        <where> 1 = 1
+            <if test="flowDeploymentId != null and flowDeploymentId != ''">
+                and flow_deployment_id = #{flowDeploymentId}
+            </if>
+            <if test="flowId != null and flowId != ''">
+                and flow_id = #{flowId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 2 - 2
sop-common/src/main/java/com/qmth/sop/common/enums/TFCustomTypeEnum.java

@@ -9,9 +9,9 @@ package com.qmth.sop.common.enums;
  */
 public enum TFCustomTypeEnum {
 
-    OFFICE_SOP_FLOW("教务处SOP", "officeSopFlow", "officeSopFlow.zip", "SOP_O", "office"),
+    OFFICE_SOP_FLOW("教务处SOP", "officeSopFlow", "officeSopFlow.zip", "SOP_O", "t_b_sop_dynamic_office"),
 
-    CLOUD_MARK_SOP_FLOW("研究生SOP", "cloudMarkSopFlow", "cloudMarkSopFlow.zip", "SOP_C", "cloud_mark"),
+    CLOUD_MARK_SOP_FLOW("研究生SOP", "cloudMarkSopFlow", "cloudMarkSopFlow.zip", "SOP_C", "t_b_sop_dynamic_cloud_mark"),
 
     DING_EXCEPTION_FLOW("考勤异常审核流程", "dingExceptionFlow", "dingExceptionFlow.zip", "DE", null),
 

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff