Ver código fonte

新增SOP流程元数据

wangliang 1 ano atrás
pai
commit
7e19df8b85

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

@@ -102,6 +102,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     SequenceService sequenceService;
 
+    @Resource
+    TDFormWidgetMetadataService tdFormWidgetMetadataService;
+
     /**
      * 根据deploymentId查找processDefinitionId
      *
@@ -415,6 +418,28 @@ public class ActivitiServiceImpl implements ActivitiService {
             flowResult = JSONObject.parseObject(tfCustomFlow.getFlowProcessVar(), FlowResult.class);
             if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
                 map = this.getFlowFormPropertie(flowResult, map, 1);
+                if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW) {
+                    Map<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
+                    Set<TDFormWidgetMetadata> tdFormWidgetMetadataSet = new LinkedHashSet<>();
+                    for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
+                        FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()), FlowTaskResult.class);
+                        List<FlowFormWidgetResult> formWidgetResultList = flowTaskResultTemp.getFormProperty();
+                        if (!CollectionUtils.isEmpty(formWidgetResultList)) {
+                            for (FlowFormWidgetResult f : formWidgetResultList) {
+                                if (f.getCode() != WidgetCodeEnum.FORM_GROUP_TITLE && f.getCode() != WidgetCodeEnum.ONLE_TITLE
+                                        && f.getCode() != WidgetCodeEnum.BUTTON && f.getCode() != WidgetCodeEnum.IMG
+                                        && f.getCode() != WidgetCodeEnum.LABEL && f.getCode() != WidgetCodeEnum.SIGN
+                                        && f.getCode() != WidgetCodeEnum.OTHER) {
+                                    tdFormWidgetMetadataSet.add(new TDFormWidgetMetadata(tfCustomFlow.getType(), tfCustomFlow.getFlowDeploymentId(), tfCustomFlow.getVersion(), flowTaskResultTemp.getSetup(), f.getCode(), f.getFormId(), f.getFormName(), f.getTitle()));
+                                }
+                            }
+                        }
+                    }
+                    if (!CollectionUtils.isEmpty(tdFormWidgetMetadataSet)) {
+                        tdFormWidgetMetadataService.deleteAllData(tfCustomFlow.getType(), tfCustomFlow.getFlowDeploymentId(), tfCustomFlow.getVersion());
+                        tdFormWidgetMetadataService.saveBatch(tdFormWidgetMetadataSet);
+                    }
+                }
             }
         } else if (Objects.nonNull(flowId)) {
             if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {

+ 66 - 3
sop-business/src/main/java/com/qmth/sop/business/entity/TDFormWidgetMetadata.java

@@ -1,5 +1,7 @@
 package com.qmth.sop.business.entity;
 
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
+import com.qmth.sop.common.enums.WidgetCodeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -19,7 +21,7 @@ public class TDFormWidgetMetadata implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "流程类型,OFFICE_SOP_FLOW:教务处SOP,CLOUD_MARK_SOP_FLOW:研究生SOP,DING_EXCEPTION_FLOW:考勤异常审核流程,PROJECT_EXCHANGE_FLOW:项目计划变更流程,QUALITY_PROBLEM_FLOW:质量问题反馈流程")
-    private String type;
+    private TFCustomTypeEnum type;
 
     @ApiModelProperty(value = "流程部署id")
     private String flowDeploymentId;
@@ -27,6 +29,9 @@ public class TDFormWidgetMetadata implements Serializable {
     @ApiModelProperty(value = "版本号")
     private Integer version;
 
+    @ApiModelProperty(value = "编码,TEXT:文本,TEXTAREA:文本域,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:设备出库表格")
+    private WidgetCodeEnum code;
+
     @ApiModelProperty(value = "字段id")
     private String fieldId;
 
@@ -36,14 +41,72 @@ public class TDFormWidgetMetadata implements Serializable {
     @ApiModelProperty(value = "字段标题")
     private String fieldTitle;
 
+    @ApiModelProperty(value = "字段值")
+    private String fieldValue;
+
+    @ApiModelProperty(value = "流程步骤")
+    private Integer setup;
+
+    @ApiModelProperty(value = "是否勾选,0:未勾选,1:勾选")
+    private Boolean fieldCheck;
+
     @ApiModelProperty(value = "创建时间")
     private Long createTime;
 
-    public String getType() {
+    public TDFormWidgetMetadata() {
+
+    }
+
+    public TDFormWidgetMetadata(TFCustomTypeEnum type, String flowDeploymentId, Integer version, Integer setup, WidgetCodeEnum code, String fieldId, String fieldName, String fieldTitle) {
+        this.type = type;
+        this.flowDeploymentId = flowDeploymentId;
+        this.version = version;
+        this.setup = setup;
+        this.code = code;
+        this.fieldId = fieldId;
+        this.fieldName = fieldName;
+        this.fieldTitle = fieldTitle;
+        this.fieldCheck = false;
+        this.createTime = System.currentTimeMillis();
+    }
+
+    public String getFieldValue() {
+        return fieldValue;
+    }
+
+    public void setFieldValue(String fieldValue) {
+        this.fieldValue = fieldValue;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public Boolean getFieldCheck() {
+        return fieldCheck;
+    }
+
+    public void setFieldCheck(Boolean fieldCheck) {
+        this.fieldCheck = fieldCheck;
+    }
+
+    public WidgetCodeEnum getCode() {
+        return code;
+    }
+
+    public void setCode(WidgetCodeEnum code) {
+        this.code = code;
+    }
+
+    public TFCustomTypeEnum getType() {
         return type;
     }
 
-    public void setType(String type) {
+    public void setType(TFCustomTypeEnum type) {
         this.type = type;
     }
 

+ 14 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TDFormWidgetMetadataMapper.java

@@ -1,7 +1,10 @@
 package com.qmth.sop.business.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.sop.business.entity.TDFormWidgetMetadata;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +16,15 @@ import com.qmth.sop.business.entity.TDFormWidgetMetadata;
  */
 public interface TDFormWidgetMetadataMapper extends BaseMapper<TDFormWidgetMetadata> {
 
+    /**
+     * 根据流程类型、部署id、版本号删除数据
+     *
+     * @param type
+     * @param flowDeploymentId
+     * @param version
+     * @return
+     */
+    @InterceptorIgnore(blockAttack = "true")
+    @Delete("delete t from t_d_form_widget_metadata t where t.type = '${type}' and t.flow_deployment_id = '${flowDeploymentId}' and t.version = ${version}")
+    Boolean deleteAllData(@Param("type") String type, @Param("flowDeploymentId") String flowDeploymentId, @Param("version") Integer version);
 }

+ 10 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TDFormWidgetMetadataService.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.sop.business.entity.TDFormWidgetMetadata;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
 
 /**
  * <p>
@@ -13,4 +14,13 @@ import com.qmth.sop.business.entity.TDFormWidgetMetadata;
  */
 public interface TDFormWidgetMetadataService extends IService<TDFormWidgetMetadata> {
 
+    /**
+     * 根据流程类型、部署id、版本号删除数据
+     *
+     * @param type
+     * @param flowDeploymentId
+     * @param version
+     * @return
+     */
+    Boolean deleteAllData(TFCustomTypeEnum type, String flowDeploymentId, Integer version);
 }

+ 15 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TDFormWidgetMetadataServiceImpl.java

@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.sop.business.entity.TDFormWidgetMetadata;
 import com.qmth.sop.business.mapper.TDFormWidgetMetadataMapper;
 import com.qmth.sop.business.service.TDFormWidgetMetadataService;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 /**
  * <p>
  * 动态表单元数据表 服务实现类
@@ -17,4 +20,16 @@ import org.springframework.stereotype.Service;
 @Service
 public class TDFormWidgetMetadataServiceImpl extends ServiceImpl<TDFormWidgetMetadataMapper, TDFormWidgetMetadata> implements TDFormWidgetMetadataService {
 
+    /**
+     * 根据流程类型、部署id、版本号删除数据
+     *
+     * @param type
+     * @param flowDeploymentId
+     * @param version
+     * @return
+     */
+    @Override
+    public Boolean deleteAllData(TFCustomTypeEnum type, String flowDeploymentId, Integer version) {
+        return this.baseMapper.deleteAllData(Objects.nonNull(type) ? type.name() : null, flowDeploymentId, version);
+    }
 }

+ 13 - 1
sop-business/src/main/resources/db/log/wangliang_update_log.sql

@@ -899,4 +899,16 @@ INSERT INTO sys_privilege
 VALUES(3032, '获取流程待办计数接口', '/api/admin/flow/task/list/count', 'URL', 64, 29, 'SYS', NULL, 1, 1, 0);
 INSERT INTO sys_privilege
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
-VALUES(3033, '获取违规/延期预警待办计数接口', '/api/admin/my/work_bench/warn/list/count', 'URL', 64, 30, 'SYS', NULL, 1, 1, 0);
+VALUES(3033, '获取违规/延期预警待办计数接口', '/api/admin/my/work_bench/warn/list/count', 'URL', 64, 30, 'SYS', NULL, 1, 1, 0);
+
+ALTER TABLE t_d_form_widget_metadata MODIFY COLUMN field_id varchar(100) CHARACTER SET utf8mb4 NOT NULL COMMENT '字段id';
+ALTER TABLE t_d_form_widget_metadata MODIFY COLUMN field_name varchar(100) CHARACTER SET utf8mb4 NOT NULL COMMENT '字段名称';
+
+ALTER TABLE t_d_form_widget MODIFY COLUMN form_id varchar(100) CHARACTER SET utf8mb4 NULL COMMENT '表单id';
+ALTER TABLE t_d_form_widget MODIFY COLUMN form_name varchar(100) CHARACTER SET utf8mb4 NULL COMMENT '表单名称';
+ALTER TABLE t_d_form_widget_metadata ADD field_value MEDIUMTEXT COMMENT '字段值' NULL after field_title;
+ALTER TABLE t_d_form_widget_metadata ADD setup INTEGER COMMENT '流程步骤' NOT NULL after field_value;
+ALTER TABLE t_d_form_widget_metadata ADD field_check TINYINT DEFAULT 0 COMMENT '是否勾选,0:未勾选,1:勾选' NOT NULL after setup;
+
+ALTER TABLE t_d_form_widget_metadata ADD code VARCHAR(20)
+    COMMENT '编码,TEXT:文本,TEXTAREA:文本域,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:设备出库表格' NOT NULL after version;

BIN
sop-server/src/main/resources/officeSopFlow.zip


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
sop-server/src/main/resources/office_sop_check_final.form


+ 1 - 1
sop-server/src/main/resources/office_sop_mark_final.form

@@ -1 +1 @@
-[{"id":"82","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_submit_title","formName":"mark_submit_title","title":"成绩提交核查","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"83","code":"CHECKBOX","type":"FORM","formId":"mark_submit_cb","formName":"mark_submit_cb","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、是否已核对不缺考、客观题为0分的情况\"},{\"value\":\"2\",\"label\":\"2、是否已核对主观题为0、客观题有分的情况\"},{\"value\":\"3\",\"label\":\"3、是否检查客观题小题得分率低于20%的情况\"},{\"value\":\"4\",\"label\":\"4、核对导出成绩表数据条数是否与考生表数量一致,不能带有“未导出全量数据”字样;请填写导出成绩数量以及完成时间\"},{\"value\":\"5\",\"label\":\"5、核对导出图片工具是否正常运行\"}]"},{"id":"84","code":"FILE","type":"FORM","formId":"upload_success_photos","formName":"upload_success_photos","title":"上传验收报告(纸质)拍照","inputType":"ARRAY","required":false,"readable":false,"writable":true,"visable":true,"length":5,"name":"文件","span":12}]
+[{"id":"82","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_submit_title","formName":"mark_submit_title","title":"成绩提交核查","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"83","code":"CHECKBOX","type":"FORM","formId":"mark_submit_cb","formName":"mark_submit_cb","title":"成绩提交核查","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、是否已核对不缺考、客观题为0分的情况\"},{\"value\":\"2\",\"label\":\"2、是否已核对主观题为0、客观题有分的情况\"},{\"value\":\"3\",\"label\":\"3、是否检查客观题小题得分率低于20%的情况\"},{\"value\":\"4\",\"label\":\"4、核对导出成绩表数据条数是否与考生表数量一致,不能带有“未导出全量数据”字样;请填写导出成绩数量以及完成时间\"},{\"value\":\"5\",\"label\":\"5、核对导出图片工具是否正常运行\"}]"},{"id":"84","code":"FILE","type":"FORM","formId":"upload_success_photos","formName":"upload_success_photos","title":"上传验收报告(纸质)拍照","inputType":"ARRAY","required":false,"readable":false,"writable":true,"visable":true,"length":5,"name":"文件","span":12}]

+ 1 - 1
sop-server/src/main/resources/office_sop_mark_prep.form

@@ -1 +1 @@
-[{"id":"78","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_model_title","formName":"mark_model_title","title":"评卷模式确认","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"79","code":"RADIO","type":"FORM","formId":"mark_model_radio","formName":"mark_model_radio","title":"评卷模式","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"单选框","span":12,"options":"[{\"value\":\"TRAIL\",\"label\":\"轨迹模式\"},{\"value\":\"NORMAL\",\"label\":\"普通模式\"}]"},{"id":"80","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_params_title","formName":"mark_params_title","title":"评卷参数核对","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"81","code":"CHECKBOX","type":"FORM","formId":"mark_params_cb","formName":"mark_params_cb","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、核查每个科目的满分是否正确(大部分科目都是100分)\"},{\"value\":\"2\",\"label\":\"2、核对客观题标答以及分数是否录入正确、多选题判分规则(漏选是否得分、任选得分)\"},{\"value\":\"3\",\"label\":\"检查所有科目结构和分组是否全部导入。(评卷管理>评卷进度查看分组状态)\"}]"}]
+[{"id":"78","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_model_title","formName":"mark_model_title","title":"评卷模式确认","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"79","code":"RADIO","type":"FORM","formId":"mark_model_radio","formName":"mark_model_radio","title":"评卷模式","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"单选框","span":12,"options":"[{\"value\":\"TRAIL\",\"label\":\"轨迹模式\"},{\"value\":\"NORMAL\",\"label\":\"普通模式\"}]"},{"id":"80","code":"FORM_GROUP_TITLE","type":"FORM","formId":"mark_params_title","formName":"mark_params_title","title":"评卷参数核对","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"81","code":"CHECKBOX","type":"FORM","formId":"mark_params_cb","formName":"mark_params_cb","title":"评卷参数核对","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、核查每个科目的满分是否正确(大部分科目都是100分)\"},{\"value\":\"2\",\"label\":\"2、核对客观题标答以及分数是否录入正确、多选题判分规则(漏选是否得分、任选得分)\"},{\"value\":\"3\",\"label\":\"检查所有科目结构和分组是否全部导入。(评卷管理>评卷进度查看分组状态)\"}]"}]

+ 1 - 1
sop-server/src/main/resources/office_sop_scan.form

@@ -1 +1 @@
-[{"id":"65","code":"FORM_GROUP_TITLE","type":"FORM","formId":"scan_test_title","formName":"scan_test_title","title":"试扫检查","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"66","code":"CHECKBOX","type":"FORM","formId":"scan_test_cb","formName":"scan_test_cb","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、查看条码是否识别正确\"},{\"value\":\"2\",\"label\":\"2、缺考、客观题是否识别正确\"},{\"value\":\"3\",\"label\":\"3、扫描原图正反面是否正确显示\"},{\"value\":\"4\",\"label\":\"4、裁切图屏蔽区是否正确\"},{\"value\":\"5\",\"label\":\"5、卷型:若有,是否识别正确\"},{\"value\":\"6\",\"label\":\"6、页码:若答题卡超过1张,是否页码识别正确\"}]"}]
+[{"id":"65","code":"FORM_GROUP_TITLE","type":"FORM","formId":"scan_test_title","formName":"scan_test_title","title":"试扫检查","inputType":"STRING","required":false,"readable":true,"writable":false,"visable":true,"name":"带虚线分割线的标题","span":12},{"id":"66","code":"CHECKBOX","type":"FORM","formId":"scan_test_cb","formName":"scan_test_cb","title":"试扫检查","inputType":"STRING","required":true,"readable":false,"writable":true,"visable":true,"name":"复选框","span":12,"options":"[{\"value\":\"1\",\"label\":\"1、查看条码是否识别正确\"},{\"value\":\"2\",\"label\":\"2、缺考、客观题是否识别正确\"},{\"value\":\"3\",\"label\":\"3、扫描原图正反面是否正确显示\"},{\"value\":\"4\",\"label\":\"4、裁切图屏蔽区是否正确\"},{\"value\":\"5\",\"label\":\"5、卷型:若有,是否识别正确\"},{\"value\":\"6\",\"label\":\"6、页码:若答题卡超过1张,是否页码识别正确\"}]"}]

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
sop-server/src/main/resources/office_sop_scan_ready.form


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff