forked from gzzfw/backEnd/gz-dyh

liyj
2024-09-09 9b540b646aa7171d3d3ba707457b86445dc71dc7
1、事件流转相关接口优化
5 files added
1 files renamed
44 files modified
2248 ■■■■ changed files
dyh-service/dyh-base/src/main/java/cn/huge/module/cust/dto/CtUnitDTO.java 25 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-base/src/main/java/cn/huge/module/mediate/constant/CaseProcessBaseConstsEnum.java 32 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/client/CtUnitClientController.java 27 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/controller/web/CaseDispWebController.java 14 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/CaseDispMapper.xml 16 ●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/bo/CaseDispBO.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/dto/ZzzxUnitDTO.java 10 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/po/CaseDisp.java 14 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/service/SysDispService.java 2 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/buildcode/service/BuildCodeService.java 8 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/consts/CaseTaskConsts.java 5 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java 74 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java 71 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml 52 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml 15 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseInfoUnfoldBO.java 4 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/AcceptTaskDTO.java 26 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/AssignTaskDTO.java 6 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CasePageDTO.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/SignTaskDTO.java 29 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java 16 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseTask.java 18 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseWindupApply.java 8 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java 29 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java 823 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java 13 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/CustClient.java 9 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java 11 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/CustClientImpl.java 25 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java 27 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/consts/FlowNodeEnum.java 20 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/consts/FlowableConsts.java 71 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/controller/web/FlowNodeWebController.java 12 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/controller/web/FlowableNodeWebController.java 22 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/FlowNodeMapper.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/FlowableNodeMapper.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/xml/FlowNodeMapper.xml 14 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/xml/FlowableNodeMapper.xml 26 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/bo/FlowNodeBO.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/bo/FlowableNodeBO.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/po/FlowNode.java 26 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/po/FlowableNode.java 26 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowInfoService.java 144 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowNodeService.java 15 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowableNodeService.java 2 ●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_LFDJ_3LEVEL_V1.bpmn20.xml 343 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml 96 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/test/java/cn/huge/module/BuildCodeServiceTest.java 3 ●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/test/java/cn/huge/module/BuildCodeServiceTest.java 5 ●●●● patch | view | raw | blame | history
dyh-service/dyh-base/src/main/java/cn/huge/module/cust/dto/CtUnitDTO.java
@@ -195,5 +195,30 @@
     */
    private Date updateTime;
    /**
     * 邮政编码
     */
    private String postalCode;
    /**
     * 联系电话
     */
    private String telephone;
    /**
     * 办公时间,周
     */
    private String workTimeWeek;
    /**
     * 办公时间,上午
     */
    private String workTimeAm;
    /**
     * 办公时间,下午
     */
    private String workTimePm;
}
dyh-service/dyh-base/src/main/java/cn/huge/module/mediate/constant/CaseProcessBaseConstsEnum.java
@@ -85,4 +85,36 @@
        return 0;
    }
    /**
     * 根据事项状态获取事项进度
     * @param caseStatus 事项状态
     * @return
     */
    public static CaseProcessBaseConstsEnum getByStatus(int caseStatus) {
        if (CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_2;
        }else if (CaseStatusBaseConstsEnum.CASE_STATUS_2.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_2;
        }if (CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_2;
        }if (CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_3;
        }if (CaseStatusBaseConstsEnum.CASE_STATUS_5.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_4;
        }if (CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_5;
        }if (CaseStatusBaseConstsEnum.CASE_STATUS_7.getIndex() == caseStatus){
            return CaseProcessBaseConstsEnum.CASE_PROCESS_6;
        }else {
            return null;
        }
    }
}
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/client/CtUnitClientController.java
@@ -1,11 +1,16 @@
package cn.huge.module.ctuser.controller.client;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.base.common.utils.ReturnSucUtils;
import cn.huge.module.ctuser.domain.po.CtUnit;
import cn.huge.module.ctuser.domain.po.CtUser;
import cn.huge.module.ctuser.service.CtUnitService;
import cn.huge.module.ctuser.service.CtUserService;
import cn.huge.module.cust.dto.CtUnitDTO;
import cn.huge.module.cust.dto.CtUserDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -48,4 +53,26 @@
            return ReturnFailUtils.getRepInfo();
        }
    }
    /**
     * 根据id查询组织信息
     * @url {ctx}/api/client/ctUnit/getUnitById
     * @param unitId 组织编号
     * @return Object
     */
    @GetMapping("/getUnitById")
    public Object getUnitById(@RequestParam(value = "unitId") String unitId) {
        try {
            CtUnit ctUnit = service.getById(unitId);
            if (ObjectUtils.isNotEmpty(ctUnit)){
                CtUnitDTO ctUnitDTO = new CtUnitDTO();
                BeanUtils.copyProperties(ctUnit, ctUnitDTO);
                return ReturnSucUtils.getRepInfo(ctUnitDTO);
            }else {
                return ReturnFailUtils.getRepInfo("查询组织不存在!");
            }
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
}
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/controller/web/CaseDispWebController.java
@@ -15,13 +15,15 @@
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * @title: 纠纷调度单表接口api-web端
 * @description: 纠纷调度单表接口api-web端
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-03 10:20:49
 * @time: 2024-09-08 15:33:39
 * @version: 1.0.0
 */
@Slf4j
@@ -111,6 +113,16 @@
        if (StringUtils.isNotBlank(targetName)){
            terms.put("targetName", targetName);
        }
        // 调度目标组织级别,1:市级,2:区级,3:镇街级,4:村居级
        String targetUnitGrade = request.getParameter("targetUnitGrade");
        if (StringUtils.isNotBlank(targetUnitGrade)){
            terms.put("targetUnitGrade", targetUnitGrade);
        }
        // 调度目标组织类型,0:政法委,1:综治中心,2:直属部门,3:法院,4:行专业调委会,5:企事业调委会,6:演示测试,9:其他
        String targetUnitType = request.getParameter("targetUnitType");
        if (StringUtils.isNotBlank(targetUnitType)){
            terms.put("targetUnitType", targetUnitType);
        }
        // 调度时间
        String dispTime = request.getParameter("dispTime");
        if (StringUtils.isNotBlank(dispTime)){
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/CaseDispMapper.xml
@@ -5,10 +5,10 @@
 * @description: 自定义sql,请自行实现业务逻辑
 * @company: hugeinfo
 * @author: liyj
 * @time:2024-09-03 10:20:49
 * @time:2024-09-08 15:33:39
 * @version 1.0.0
-->
<mapper namespace="cn.huge.module.disp.dao.mapper.CaseDispMapper">
<mapper namespace="cn.huge.module.casedisp.dao.mapper.CaseDispMapper">
    <!-- 结果集 -->
    <resultMap id="dataResult" type="cn.huge.module.casedisp.domain.po.CaseDisp">
            <result property="id" column="id"/>
@@ -25,6 +25,8 @@
            <result property="targetTypeName" column="target_type_name"/>
            <result property="targetId" column="target_id"/>
            <result property="targetName" column="target_name"/>
            <result property="targetUnitGrade" column="target_unit_grade"/>
            <result property="targetUnitType" column="target_unit_type"/>
            <result property="dispTime" column="disp_time"/>
            <result property="dispStatus" column="disp_status"/>
            <result property="custId" column="cust_id"/>
@@ -50,6 +52,8 @@
        target_type_name,
        target_id,
        target_name,
        target_unit_grade,
        target_unit_type,
        disp_time,
        disp_status,
        cust_id,
@@ -72,6 +76,8 @@
            <if test="entity.targetTypeName != null">target_type_name = #{entity.targetTypeName},</if>
            <if test="entity.targetId != null">target_id = #{entity.targetId},</if>
            <if test="entity.targetName != null">target_name = #{entity.targetName},</if>
            <if test="entity.targetUnitGrade != null">target_unit_grade = #{entity.targetUnitGrade},</if>
            <if test="entity.targetUnitType != null">target_unit_type = #{entity.targetUnitType},</if>
            <if test="entity.dispTime != null">disp_time = #{entity.dispTime},</if>
            <if test="entity.dispStatus != null">disp_status = #{entity.dispStatus},</if>
            <if test="entity.custId != null">cust_id = #{entity.custId},</if>
@@ -125,6 +131,12 @@
                <if test="terms.targetName != null and terms.targetName !=''">
                    and target_name = #{terms.targetName}
                </if>
                <if test="terms.targetUnitGrade != null and terms.targetUnitGrade !=''">
                    and target_unit_grade = #{terms.targetUnitGrade}
                </if>
                <if test="terms.targetUnitType != null and terms.targetUnitType !=''">
                    and target_unit_type = #{terms.targetUnitType}
                </if>
                <if test="terms.dispTime != null and terms.dispTime !=''">
                    and disp_time = #{terms.dispTime}
                </if>
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml
@@ -164,7 +164,7 @@
    <!--  根据条件获取对应综治中心组织  -->
    <select id="getZzzxUnitByTerms" resultType="cn.huge.module.casedisp.domain.dto.ZzzxUnitDTO">
        SELECT
        id as 'unitId', unit_name as 'unitName'
        id as unitId, unit_name as unitName, unit_grade as unitGrade, unit_type as unitType
        FROM dyh_ct_unit
        where unit_type = 1
        <include refid="getZzzxUnitByTerms-where-part"/>
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/bo/CaseDispBO.java
@@ -7,7 +7,7 @@
 * @description: 纠纷调度单表业务扩展类
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-03 10:20:49
 * @time: 2024-09-08 15:33:39
 * @version: 1.0.0
 * @see cn.huge.module.casedisp.domain.po.CaseDisp
 */
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/dto/ZzzxUnitDTO.java
@@ -26,4 +26,14 @@
    */
    private String unitName;
    /**
     * 组织级别
     */
    private Integer unitGrade;
    /**
     * 组织类型
     */
    private Integer unitType;
}
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/domain/po/CaseDisp.java
@@ -13,7 +13,7 @@
 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
 * @company:hugeinfo
 * @author: liyj
 * @time: 2024-09-03 10:20:49
 * @time: 2024-09-08 15:35:07
 * @version 1.0.0
 */
@TableName(value = "dyh_case_disp")
@@ -105,6 +105,18 @@
    private String targetName;
    /**
    * 调度目标组织级别,1:市级,2:区级,3:镇街级,4:村居级
    */
    @TableField(value = "target_unit_grade")
    private Integer targetUnitGrade;
    /**
    * 调度目标组织类型,0:政法委,1:综治中心,2:直属部门,3:法院,4:行专业调委会,5:企事业调委会,6:演示测试,9:其他
    */
    @TableField(value = "target_unit_type")
    private Integer targetUnitType;
    /**
    * 调度时间
    */
    @TableField(value = "disp_time")
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/service/SysDispService.java
@@ -193,6 +193,8 @@
                caseDisp.setTargetTypeName(DispBaseConstsEnum.TARGET_TYPE_1.getDes());
                caseDisp.setTargetId(zzzxUnitDTO.getUnitId());
                caseDisp.setTargetName(zzzxUnitDTO.getUnitName());
                caseDisp.setTargetUnitGrade(zzzxUnitDTO.getUnitGrade());
                caseDisp.setTargetUnitType(zzzxUnitDTO.getUnitType());
            }
            caseDispService.save(caseDisp);
            return caseDisp;
dyh-service/dyh-mediate/src/main/java/cn/huge/module/buildcode/service/BuildCodeService.java
@@ -111,13 +111,13 @@
            // 必须
            this.buildPo(tplData);
            this.buildBo(tplData);
            this.buildDaoMapper(tplData);
//            this.buildDaoMapper(tplData);
            this.buildDaoMapperXml(tplData);
            this.buildService(tplData);
//            this.buildService(tplData);
            this.buildWebController(tplData);
            // 可选
            this.buildWechatController(tplData);
            this.buildJson(tplData);
//            this.buildWechatController(tplData);
//            this.buildJson(tplData);
//            this.buildJsForm(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/consts/CaseTaskConsts.java
@@ -11,7 +11,7 @@
public class CaseTaskConsts {
    /**
     * 任务类型,1:正常任务,2:回退审核任务,3:上报审核任务
     * 任务类型,1:正常流转,2:回退申请,3:上报申请
     */
    public static final int TASK_TYPE_1 = 1;
    public static final int TASK_TYPE_2 = 2;
@@ -45,11 +45,10 @@
    public static final int TASK_STATUS_2 = 2;
    /**
     * 处理结果,1:通过,2:回退,3:上报
     * 处理结果,1:通过,2:不通过
     */
    public static final int HANDLE_RESULT_1 = 1;
    public static final int HANDLE_RESULT_2 = 2;
    public static final int HANDLE_RESULT_3 = 3;
}
/**
 * -------------------_ooOoo_-------------------
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoUnfoldWebController.java
@@ -2,7 +2,6 @@
import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.base.common.utils.ReturnSucUtils;
import cn.huge.base.config.CurrentUser;
import cn.huge.module.cases.domain.po.CaseInfoUnfold;
import cn.huge.module.cases.service.CaseInfoUnfoldService;
import com.google.common.collect.Maps;
@@ -23,8 +22,8 @@
 * @title: 纠纷信息扩展表接口api-web端
 * @description: 纠纷信息扩展表接口api-web端
 * @company: hugeinfo
 * @author: wangwh
 * @time: 2024-08-27 20:36:04
 * @author: liyj
 * @time: 2024-09-09 19:58:25
 * @version: 1.0.0
 */
@Slf4j
@@ -44,15 +43,15 @@
    */
    private Map<String, Object> getParameter(){
        Map<String, Object> terms = Maps.newHashMap();
        // 主键编号
        // 纠纷编号
        String id = request.getParameter("id");
        if (StringUtils.isNotBlank(id)){
            terms.put("id", id);
        }
        // 纠纷编号
        String caseId = request.getParameter("caseId");
        if (StringUtils.isNotBlank(caseId)){
            terms.put("caseId", caseId);
        // 受理时间
        String acceptTime = request.getParameter("acceptTime");
        if (StringUtils.isNotBlank(acceptTime)){
            terms.put("acceptTime", acceptTime);
        }
        // 实际调解组织编号
        String mediateUnitId = request.getParameter("mediateUnitId");
@@ -88,6 +87,16 @@
        String mediatorMobile = request.getParameter("mediatorMobile");
        if (StringUtils.isNotBlank(mediatorMobile)){
            terms.put("mediatorMobile", mediatorMobile);
        }
        // 配合组织,多个用,隔开
        String assistUnitId = request.getParameter("assistUnitId");
        if (StringUtils.isNotBlank(assistUnitId)){
            terms.put("assistUnitId", assistUnitId);
        }
        // 配合组织名称,多个用、隔开
        String assistUnitName = request.getParameter("assistUnitName");
        if (StringUtils.isNotBlank(assistUnitName)){
            terms.put("assistUnitName", assistUnitName);
        }
        // 调解开始时间
        String mediStartTime = request.getParameter("mediStartTime");
@@ -153,6 +162,11 @@
        String courtName = request.getParameter("courtName");
        if (StringUtils.isNotBlank(courtName)){
            terms.put("courtName", courtName);
        }
        // 办结时间
        String closeTime = request.getParameter("closeTime");
        if (StringUtils.isNotBlank(closeTime)){
            terms.put("closeTime", closeTime);
        }
        // 是否申请司法确认,0:未申请,1:已申请
        String judicApply = request.getParameter("judicApply");
@@ -268,20 +282,6 @@
            terms.put("updateStart", updateStart);
            terms.put("updateEnd", updateEnd);
        }
        // 更新时间区间
        String acceptTimeStart = request.getParameter("acceptTimeStart");
        String acceptTimeEnd = request.getParameter("acceptTimeEnd");
        if(StringUtils.isNotBlank(acceptTimeStart) && StringUtils.isNotBlank(acceptTimeEnd)) {
            terms.put("acceptTimeStart", acceptTimeStart);
            terms.put("acceptTimeEnd", acceptTimeEnd);
        }
        // 更新时间区间
        String closeTimeStart = request.getParameter("closeTimeStart");
        String closeTimeEnd = request.getParameter("closeTimeEnd");
        if(StringUtils.isNotBlank(closeTimeStart) && StringUtils.isNotBlank(closeTimeEnd)) {
            terms.put("closeTimeStart", closeTimeStart);
            terms.put("closeTimeEnd", closeTimeEnd);
        }
        return terms;
    }
@@ -367,34 +367,4 @@
        }
    }
    /**
     * PC端-选择经办人
     * @url {ctx}/api/web/caseInfoUnfold/choosePrincipal?
     * @param caseId 纠纷编号
     * @return Object
     */
    @GetMapping("/choosePrincipal")
    public Object choosePrincipal(@RequestParam(value = "caseId") String caseId, @RequestParam(value = "userId") String userId) {
        try {
            service.choosePrincipal(caseId, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo(e.getMessage());
        }
    }
    /**
     * 查询办理结果
     * @url {ctx}/api/web/caseInfoUnfold/getTransactResult
     * @param caseId 事项ID
     * @return Object
     */
    @GetMapping("/getTransactResult")
    public Object getTransactResult(@RequestParam(value = "caseId") String caseId) {
        try {
            return ReturnSucUtils.getRepInfo(service.getTransactResult(caseId));
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseTaskWebController.java
@@ -1,9 +1,12 @@
package cn.huge.module.cases.controller.web;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.base.common.utils.ReturnSucUtils;
import cn.huge.base.config.CurrentUser;
import cn.huge.module.cases.domain.dto.AcceptTaskDTO;
import cn.huge.module.cases.domain.dto.AssignTaskDTO;
import cn.huge.module.cases.domain.dto.SignTaskDTO;
import cn.huge.module.cases.domain.po.CaseAppear;
import cn.huge.module.cases.domain.po.CaseReturn;
import cn.huge.module.cases.domain.po.CaseTask;
@@ -75,6 +78,54 @@
    }
    /**
     * web端-交办
     * @url {ctx}/api/web/caseTask/assign
     * @param assignTaskDTO 交办表单
     * @return Object
     */
    @PostMapping("/assign")
    public Object assign(@RequestBody AssignTaskDTO assignTaskDTO, @CurrentUser String userId) {
        try {
            service.webAssign(assignTaskDTO, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
    /**
     * web端-签收
     * @url {ctx}/api/web/caseTask/sign
     * @param signTaskDTO 签收表单
     * @return Object
     */
    @PostMapping("/sign")
    public Object sign(@RequestBody SignTaskDTO signTaskDTO, @CurrentUser String userId) {
        try {
            service.webSign(signTaskDTO, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
    /**
     * web端-受理
     * @url {ctx}/api/web/caseTask/accept
     * @param acceptTaskDTO 受理表单
     * @return Object
     */
    @PostMapping("/accept")
    public Object accept(@RequestBody AcceptTaskDTO acceptTaskDTO, @CurrentUser String userId) {
        try {
            service.webAccept(acceptTaskDTO, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
    /**
     * web端-结案申请
     * @url {ctx}/api/web/caseTask/windupApply
     * @param caseWindupApply 结案申请表单
@@ -83,6 +134,7 @@
    @PostMapping("/windupApply")
    public Object windupApply(@RequestBody CaseWindupApply caseWindupApply, @CurrentUser String userId) {
        try {
            service.webWindupApply(caseWindupApply, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
@@ -98,7 +150,8 @@
    @GetMapping("/getWindupApplyInfo")
    public Object getWindupApplyInfo(@RequestParam(value = "caseTaskId") String caseTaskId, @CurrentUser String userId) {
        try {
            return ReturnSucUtils.getRepInfo(caseWindupApplyService.getByCaseTaskId(caseTaskId));
            CaseWindupApply caseWindupApply = caseWindupApplyService.getByCaseTaskId(caseTaskId);
            return ReturnSucUtils.getRepInfo(caseWindupApply);
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
@@ -113,6 +166,7 @@
    @PostMapping("/windupAudit")
    public Object windupAudit(@RequestBody CaseWindupApply caseWindupApply, @CurrentUser String userId) {
        try {
            service.webWindupAudit(caseWindupApply, userId);
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
@@ -210,21 +264,6 @@
     */
    @PostMapping("/appearAudit")
    public Object appearAudit(@RequestBody CaseAppear caseAppear, @CurrentUser String userId) {
        try {
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
    /**
     * web端-交办
     * @url {ctx}/api/web/caseTask/assign
     * @param assignTaskDTO 交办表单
     * @return Object
     */
    @PostMapping("/assign")
    public Object assign(@RequestBody AssignTaskDTO assignTaskDTO, @CurrentUser String userId) {
        try {
            return ReturnSucUtils.getRepInfo();
        } catch (Exception e) {
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoUnfoldMapper.xml
@@ -4,14 +4,15 @@
 * @title: 纠纷信息扩展表
 * @description: 自定义sql,请自行实现业务逻辑
 * @company: hugeinfo
 * @author: wangwh
 * @time:2024-08-27 20:36:04
 * @author: liyj
 * @time:2024-09-09 19:58:25
 * @version 1.0.0
-->
<mapper namespace="cn.huge.module.cases.dao.mapper.CaseInfoUnfoldMapper">
    <!-- 结果集 -->
    <resultMap id="dataResult" type="cn.huge.module.cases.domain.po.CaseInfoUnfold">
            <result property="id" column="id"/>
            <result property="acceptTime" column="accept_time"/>
            <result property="mediateUnitId" column="mediate_unit_id"/>
            <result property="mediateUnitName" column="mediate_unit_name"/>
            <result property="mediateDeptId" column="mediate_dept_id"/>
@@ -19,6 +20,8 @@
            <result property="mediatorId" column="mediator_id"/>
            <result property="mediator" column="mediator"/>
            <result property="mediatorMobile" column="mediator_mobile"/>
            <result property="assistUnitId" column="assist_unit_id"/>
            <result property="assistUnitName" column="assist_unit_name"/>
            <result property="mediStartTime" column="medi_start_time"/>
            <result property="mediEndTime" column="medi_end_time"/>
            <result property="mediResult" column="medi_result"/>
@@ -32,6 +35,7 @@
            <result property="civilStatus" column="civil_status"/>
            <result property="courtId" column="court_id"/>
            <result property="courtName" column="court_name"/>
            <result property="closeTime" column="close_time"/>
            <result property="judicApply" column="judic_apply"/>
            <result property="judicResult" column="judic_result"/>
            <result property="judicResultName" column="judic_result_name"/>
@@ -54,14 +58,13 @@
            <result property="custId" column="cust_id"/>
            <result property="createTime" column="create_time"/>
            <result property="updateTime" column="update_time"/>
            <result property="acceptTime" column="accept_time"/>
            <result property="closeTime" column="close_time"/>
    </resultMap>
    <!-- 表 -->
    <sql id='table-name'>dyh_case_info_unfold</sql>
    <!-- 字段 -->
    <sql id="column-part">
        id,
        accept_time,
        mediate_unit_id,
        mediate_unit_name,
        mediate_dept_id,
@@ -69,6 +72,8 @@
        mediator_id,
        mediator,
        mediator_mobile,
        assist_unit_id,
        assist_unit_name,
        medi_start_time,
        medi_end_time,
        medi_result,
@@ -82,6 +87,7 @@
        civil_status,
        court_id,
        court_name,
        close_time,
        judic_apply,
        judic_result,
        judic_result_name,
@@ -103,12 +109,11 @@
        party_joy,
        cust_id,
        create_time,
        update_time,
        accept_time,
        close_time
        update_time
    </sql>
    <!-- 更新实体字段 -->
    <sql id="set-part">
            <if test="entity.acceptTime != null">accept_time = #{entity.acceptTime},</if>
            <if test="entity.mediateUnitId != null">mediate_unit_id = #{entity.mediateUnitId},</if>
            <if test="entity.mediateUnitName != null">mediate_unit_name = #{entity.mediateUnitName},</if>
            <if test="entity.mediateDeptId != null">mediate_dept_id = #{entity.mediateDeptId},</if>
@@ -116,6 +121,8 @@
            <if test="entity.mediatorId != null">mediator_id = #{entity.mediatorId},</if>
            <if test="entity.mediator != null">mediator = #{entity.mediator},</if>
            <if test="entity.mediatorMobile != null">mediator_mobile = #{entity.mediatorMobile},</if>
            <if test="entity.assistUnitId != null">assist_unit_id = #{entity.assistUnitId},</if>
            <if test="entity.assistUnitName != null">assist_unit_name = #{entity.assistUnitName},</if>
            <if test="entity.mediStartTime != null">medi_start_time = #{entity.mediStartTime},</if>
            <if test="entity.mediEndTime != null">medi_end_time = #{entity.mediEndTime},</if>
            <if test="entity.mediResult != null">medi_result = #{entity.mediResult},</if>
@@ -129,6 +136,7 @@
            <if test="entity.civilStatus != null">civil_status = #{entity.civilStatus},</if>
            <if test="entity.courtId != null">court_id = #{entity.courtId},</if>
            <if test="entity.courtName != null">court_name = #{entity.courtName},</if>
            <if test="entity.closeTime != null">close_time = #{entity.closeTime},</if>
            <if test="entity.judicApply != null">judic_apply = #{entity.judicApply},</if>
            <if test="entity.judicResult != null">judic_result = #{entity.judicResult},</if>
            <if test="entity.judicResultName != null">judic_result_name = #{entity.judicResultName},</if>
@@ -150,9 +158,7 @@
            <if test="entity.partyJoy != null">party_joy = #{entity.partyJoy},</if>
            <if test="entity.custId != null">cust_id = #{entity.custId},</if>
            <if test="entity.createTime != null">create_time = #{entity.createTime},</if>
            <if test="entity.updateTime != null">update_time = #{entity.updateTime},</if>
            <if test="entity.acceptTime != null">accept_time = #{entity.acceptTime},</if>
            <if test="entity.closeTime != null">close_time = #{entity.closeTime},</if>
            <if test="entity.updateTime != null">update_time = #{entity.updateTime}</if>
    </sql>
    <!-- 条件 -->
    <sql id="where-part">
@@ -160,6 +166,9 @@
            <where>
                <if test="terms.id != null and terms.id !=''">
                    and id = #{terms.id}
                </if>
                <if test="terms.acceptTime != null and terms.acceptTime !=''">
                    and accept_time = #{terms.acceptTime}
                </if>
                <if test="terms.mediateUnitId != null and terms.mediateUnitId !=''">
                    and mediate_unit_id = #{terms.mediateUnitId}
@@ -181,6 +190,12 @@
                </if>
                <if test="terms.mediatorMobile != null and terms.mediatorMobile !=''">
                    and mediator_mobile = #{terms.mediatorMobile}
                </if>
                <if test="terms.assistUnitId != null and terms.assistUnitId !=''">
                    and assist_unit_id = #{terms.assistUnitId}
                </if>
                <if test="terms.assistUnitName != null and terms.assistUnitName !=''">
                    and assist_unit_name = #{terms.assistUnitName}
                </if>
                <if test="terms.mediStartTime != null and terms.mediStartTime !=''">
                    and medi_start_time = #{terms.mediStartTime}
@@ -220,6 +235,9 @@
                </if>
                <if test="terms.courtName != null and terms.courtName !=''">
                    and court_name = #{terms.courtName}
                </if>
                <if test="terms.closeTime != null and terms.closeTime !=''">
                    and close_time = #{terms.closeTime}
                </if>
                <if test="terms.judicApply != null and terms.judicApply !=''">
                    and judic_apply = #{terms.judicApply}
@@ -294,20 +312,6 @@
                <if test="terms.updateStart != null and terms.updateStart !='' and terms.updateEnd != null and terms.updateEnd !=''">
                    and (DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.updateStart}
                        and DATE_FORMAT(update_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.updateEnd})
                </if>
                <if test="terms.acceptTime != null and terms.acceptTime !=''">
                    and DATE_FORMAT(accept_time,'%Y-%m-%d') = #{terms.acceptTime}
                </if>
                <if test="terms.acceptTimeStart != null and terms.acceptTimeStart !='' and terms.acceptTimeEnd != null and terms.acceptTimeEnd !=''">
                    and (DATE_FORMAT(accept_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.acceptTimeStart}
                    and DATE_FORMAT(accept_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.acceptTimeEnd})
                </if>
                <if test="terms.closeTime != null and terms.closeTime !=''">
                    and DATE_FORMAT(close_time,'%Y-%m-%d') = #{terms.closeTime}
                </if>
                <if test="terms.closeTimeStart != null and terms.closeTimeStart !='' and terms.closeTimeEnd != null and terms.closeTimeEnd !=''">
                    and (DATE_FORMAT(close_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.closeTimeStart}
                    and DATE_FORMAT(close_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.closeTimeEnd})
                </if>
            </where>
        </if>
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseTaskMapper.xml
@@ -5,7 +5,7 @@
 * @description: 自定义sql,请自行实现业务逻辑
 * @company: hugeinfo
 * @author: liyj
 * @time:2024-09-06 15:50:06
 * @time:2024-09-08 18:27:35
 * @version 1.0.0
-->
<mapper namespace="cn.huge.module.cases.dao.mapper.CaseTaskMapper">
@@ -39,6 +39,8 @@
            <result property="signUserName" column="sign_user_name"/>
            <result property="expireTime" column="expire_time"/>
            <result property="status" column="status"/>
            <result property="handleUnitId" column="handle_unit_id"/>
            <result property="handleUnitName" column="handle_unit_name"/>
            <result property="handleUserId" column="handle_user_id"/>
            <result property="handleUserName" column="handle_user_name"/>
            <result property="handleResult" column="handle_result"/>
@@ -81,6 +83,8 @@
        sign_user_name,
        expire_time,
        status,
        handle_unit_id,
        handle_unit_name,
        handle_user_id,
        handle_user_name,
        handle_result,
@@ -120,6 +124,8 @@
            <if test="entity.signUserName != null">sign_user_name = #{entity.signUserName},</if>
            <if test="entity.expireTime != null">expire_time = #{entity.expireTime},</if>
            <if test="entity.status != null">status = #{entity.status},</if>
            <if test="entity.handleUnitId != null">handle_unit_id = #{entity.handleUnitId},</if>
            <if test="entity.handleUnitName != null">handle_unit_name = #{entity.handleUnitName},</if>
            <if test="entity.handleUserId != null">handle_user_id = #{entity.handleUserId},</if>
            <if test="entity.handleUserName != null">handle_user_name = #{entity.handleUserName},</if>
            <if test="entity.handleResult != null">handle_result = #{entity.handleResult},</if>
@@ -217,6 +223,12 @@
                </if>
                <if test="terms.status != null and terms.status !=''">
                    and status = #{terms.status}
                </if>
                <if test="terms.handleUnitId != null and terms.handleUnitId !=''">
                    and handle_unit_id = #{terms.handleUnitId}
                </if>
                <if test="terms.handleUnitName != null and terms.handleUnitName !=''">
                    and handle_unit_name = #{terms.handleUnitName}
                </if>
                <if test="terms.handleUserId != null and terms.handleUserId !=''">
                    and handle_user_id = #{terms.handleUserId}
@@ -339,4 +351,5 @@
        and delete_status = '0'
        and status = '1'
    </select>
</mapper> 
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseInfoUnfoldBO.java
@@ -6,8 +6,8 @@
 * @title: 纠纷信息扩展表业务扩展类
 * @description: 纠纷信息扩展表业务扩展类
 * @company: hugeinfo
 * @author: wangwh
 * @time: 2024-08-27 20:36:04
 * @author: liyj
 * @time: 2024-09-09 19:58:25
 * @version: 1.0.0
 * @see cn.huge.module.cases.domain.po.CaseInfoUnfold
 */
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/AcceptTaskDTO.java
New file
@@ -0,0 +1,26 @@
package cn.huge.module.cases.domain.dto;
import cn.huge.module.cases.domain.po.CaseInfo;
import lombok.Data;
import java.util.List;
/**
 * @title: 受理任务传输对象
 * @description: 受理任务传输对象
 * @company: hugeinfo
 * @author: liyj
 * @time: 2022-03-11 11:43:25
 * @version: 1.0.0
 * @see CaseInfo
 */
@Data
public class AcceptTaskDTO {
    /**
     * 上报审核纠纷任务编号
     */
    private String caseTaskId;
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/AssignTaskDTO.java
@@ -4,6 +4,7 @@
import cn.huge.module.cases.domain.po.CaseInfo;
import cn.huge.module.cases.domain.po.CasePerson;
import cn.huge.module.sys.dto.FileTypeInfoBaseDTO;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.List;
@@ -21,6 +22,11 @@
public class AssignTaskDTO {
    /**
     * 上报审核纠纷任务编号
     */
    private String caseTaskId;
    /**
     * 承办部门编号
     */
    private String handleUnitId;
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CasePageDTO.java
@@ -16,7 +16,7 @@
     */
    private String id;
    /**
     * 事项状态,1:待签收,2:待受理,3:办理中,4:结案审核,5:待评价,6:已归档
     * 事项状态,1:待分派,2:待签收,3:待受理,:4:办理中,5:结案审核,6:待评价,7:已归档
     */
    private Integer status;
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/SignTaskDTO.java
New file
@@ -0,0 +1,29 @@
package cn.huge.module.cases.domain.dto;
import cn.huge.module.cases.domain.po.CaseInfo;
import lombok.Data;
/**
 * @title: 签收任务传输对象
 * @description: 签收任务传输对象
 * @company: hugeinfo
 * @author: liyj
 * @time: 2022-03-11 11:43:25
 * @version: 1.0.0
 * @see CaseInfo
 */
@Data
public class SignTaskDTO {
    /**
     * 纠纷信息编号
     */
    private String caseId;
    /**
     * 上报审核纠纷任务编号
     */
    private String caseTaskId;
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseInfoUnfold.java
@@ -12,8 +12,8 @@
 * @title: 纠纷信息扩展表数据库对应关系类
 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
 * @company:hugeinfo
 * @author: wangwh
 * @time: 2024-08-27 20:36:04
 * @author: liyj
 * @time: 2024-09-09 19:58:25
 * @version 1.0.0
 */
@TableName(value = "dyh_case_info_unfold")
@@ -75,6 +75,18 @@
    private String mediatorMobile;
    /**
    * 配合组织,多个用,隔开
    */
    @TableField(value = "assist_unit_id")
    private String assistUnitId;
    /**
    * 配合组织名称,多个用、隔开
    */
    @TableField(value = "assist_unit_name")
    private String assistUnitName;
    /**
    * 调解开始时间
    */
    @TableField(value = "medi_start_time")
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseTask.java
@@ -13,7 +13,7 @@
 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
 * @company:hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 18:27:35
 * @version 1.0.0
 */
@TableName(value = "dyh_case_task")
@@ -51,7 +51,7 @@
    private String processTaskId;
    /**
    * 工作流任务类型,1:正常任务,2:退回任务;3:上报任务
    * 任务类型,1:正常流转,2:回退申请,3:上报申请
    */
    @TableField(value = "task_type")
    private Integer taskType;
@@ -189,6 +189,18 @@
    private Integer status;
    /**
    * 任务处理单位编号
    */
    @TableField(value = "handle_unit_id")
    private String handleUnitId;
    /**
    * 任务处理单位名称
    */
    @TableField(value = "handle_unit_name")
    private String handleUnitName;
    /**
    * 任务处理人编号
    */
    @TableField(value = "handle_user_id")
@@ -201,7 +213,7 @@
    private String handleUserName;
    /**
    * 处理结果,1:通过,2:退回,3:终止流程
    * 处理结果,1:通过,2:不通过
    */
    @TableField(value = "handle_result")
    private Integer handleResult;
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseWindupApply.java
@@ -144,7 +144,7 @@
    * 结案审核时间
    */
    @TableField(value = "audit_time")
    private String auditTime;
    private Date auditTime;
    /**
    * 结案审核结果
@@ -189,4 +189,10 @@
    @TableField(value = "update_time")
    private Date updateTime;
    /**
     * 事项等级
     */
    @TableField(exist = false)
    private Integer caseLevel;
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -75,6 +75,9 @@
    @Autowired
    private SysClientImpl sysClient;
    @Autowired
    private CaseTaskService caseTaskService;
    /**
    * 更新对象
    * @param entity 对象
@@ -204,25 +207,27 @@
                caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
                caseInfo.setCreateTime(nowDate);
                caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
                caseInfoUnfold.setId(caseInfo.getId());
                caseInfoUnfold.setCreateTime(nowDate);
                caseInfoUnfold.setUpdateTime(nowDate);
                // 删除草稿案件
                if(1 == registerSaveDTO.getIsDraft() ){
                    draftInfoService.removeDraftInfo(registerSaveDTO.getId());
                }
                // 新增纠纷信息
                this.save(caseInfo);
                // 新增纠纷信息扩展表
                CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
                caseInfoUnfold.setId(caseInfo.getId());
                caseInfoUnfold.setCreateTime(nowDate);
                caseInfoUnfold.setUpdateTime(nowDate);
                caseInfoUnfoldService.save(caseInfoUnfold);
                // 启动工作流
                //判断是否自行受理
                if(1 == registerSaveDTO.getIsSelfAccept()){
                    //todo 流程接口修改status、status_name、process、process_name
                    caseInfoUnfold.setMediateUnitId(loginUser.getUnitId());
                    caseInfoUnfold.setMediateUnitName(loginUser.getUnitName());
                    // 自行受理流程
                    caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
                }else {
                    // 自动调度流程
                    caseTaskService.webStartFlowLFDJ(caseInfo);
                }
                this.save(caseInfo);
                caseInfoUnfoldService.save(caseInfoUnfold);
            }else if(1 == registerSaveDTO.getOperateType()){
                this.updateById(caseInfo);
            }
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java
@@ -4,30 +4,45 @@
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.module.cases.domain.dto.CaseFlowDTO;
import cn.huge.module.cases.domain.dto.TabButtonDTO;
import cn.huge.module.cases.domain.dto.TabButtonInfoDTO;
import cn.huge.module.cases.domain.dto.*;
import cn.huge.module.cases.domain.po.CaseInfo;
import cn.huge.module.cases.domain.po.CaseInfoUnfold;
import cn.huge.module.cases.domain.po.CaseWindupApply;
import cn.huge.module.client.api.impl.CustClientImpl;
import cn.huge.module.client.api.impl.DispClientImpl;
import cn.huge.module.client.api.impl.SysClientImpl;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.cases.dao.mapper.CaseTaskMapper;
import cn.huge.module.cases.domain.po.CaseTask;
import cn.huge.module.constant.BaseConsts;
import cn.huge.module.cust.constant.UserBaseConsts;
import cn.huge.module.cust.dto.CtUnitDTO;
import cn.huge.module.cust.dto.CtUserDTO;
import cn.huge.module.mediate.constant.CaseBaseConsts;
import cn.huge.module.disp.constant.DispBaseConstsEnum;
import cn.huge.module.disp.dto.CaseDispBaseDTO;
import cn.huge.module.disp.dto.DispCaseBaseDTO;
import cn.huge.module.cases.consts.CaseTaskConsts;
import cn.huge.module.flow.consts.FlowNodeEnum;
import cn.huge.module.flow.consts.FlowableConsts;
import cn.huge.module.flow.domain.po.FlowNode;
import cn.huge.module.flow.service.FlowInfoService;
import cn.huge.module.mediate.constant.*;
import cn.huge.module.sys.constant.SyTimeEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @title: 纠纷任务表业务逻辑处理
@@ -46,13 +61,23 @@
    private CaseTaskMapper mapper;
    @Autowired
    private CaseSuperviseService superviseService;
    @Autowired
    private UtilsClientImpl utilsClient;
    @Autowired
    private CustClientImpl custClient;
    @Autowired
    private CaseSuperviseService superviseService;
    private DispClientImpl dispClient;
    @Autowired
    private FlowInfoService flowInfoService;
    @Autowired
    private CaseInfoService caseInfoService;
    @Autowired
    private SysClientImpl sysClient;
    @Autowired
    private CaseInfoUnfoldService caseInfoUnfoldService;
    @Autowired
    private CaseWindupApplyService caseWindupApplyService;
    /**
    * 更新对象
@@ -385,4 +410,784 @@
            throw new ServiceException("CaseTaskService.wechatListCaseFlow", e);
        }
    }
    /**
     * web端大厅来访登记-提交纠纷事件-通过自动调度启动工作流
     * @param caseInfo
     */
    public void webStartFlowLFDJ(CaseInfo caseInfo){
        try{
            DispCaseBaseDTO dispCaseBaseDTO = new DispCaseBaseDTO();
            BeanUtils.copyProperties(caseInfo, dispCaseBaseDTO);
            dispCaseBaseDTO.setCaseId(caseInfo.getId());
            CaseDispBaseDTO caseDispBaseDTO = dispClient.sysDisp(dispCaseBaseDTO);
            // 目前平台只能调度给组织
            if (DispBaseConstsEnum.TARGET_TYPE_1.getIndex().equals(caseDispBaseDTO.getTargetType())) {
                // 目前平台只做镇街、村居级别的调度,
                if (UserBaseConsts.UNIT_GRADE_3 == caseDispBaseDTO.getTargetUnitGrade()) {
                    // 启动来访登记工作流
                    FlowNode firstFlowNode = flowInfoService.startFlow(FlowableConsts.FLOWABLE_ID_LFDJ, caseInfo.getId());
                    if (UserBaseConsts.UNIT_TYPE_1 == caseDispBaseDTO.getTargetUnitType()){
                        // 调度给镇街综治中心,进入第1个节点-镇街综治中心待分派
                        CaseTask dfpCaseTask = new CaseTask();
                        dfpCaseTask.setId(utilsClient.getNewTimeId());
                        dfpCaseTask.setCaseId(caseInfo.getId());
                        dfpCaseTask.setFlowableId(firstFlowNode.getFlowableId());
                        dfpCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId());
                        dfpCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId());
                        dfpCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                        dfpCaseTask.setNodeType(firstFlowNode.getNodeType());
                        dfpCaseTask.setNodeId(firstFlowNode.getNodeId());
                        dfpCaseTask.setNodeName(firstFlowNode.getNodeName());
                        dfpCaseTask.setFlowId(firstFlowNode.getFlowId());
                        dfpCaseTask.setNodeShowName(firstFlowNode.getNodeShowName());
                        dfpCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                        // 通过调度的,任务候选执行者类型是上一步骤选择
                        dfpCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                        dfpCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId());
                        dfpCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName());
                        // 系统给综治中心分派,不需要签收
                        dfpCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                        dfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                        dfpCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                        dfpCaseTask.setCustId(caseInfo.getCustId());
                        dfpCaseTask.setCreateTime(caseInfo.getCreateTime());
                        dfpCaseTask.setUpdateTime(caseInfo.getUpdateTime());
                        mapper.insert(dfpCaseTask);
                        // 更新纠纷信息
                        CaseInfo caseInfoPO = new CaseInfo();
                        caseInfoPO.setId(caseInfo.getId());
                        caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex());
                        caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes());
                        caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                        caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                        caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                        caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                        caseInfoService.updateCaseInfo(caseInfoPO);
                    }else {
                        // 调度给调解组织,默认通过第1个节点-镇街综治中心待分派
                        CaseTask dfpCaseTask = new CaseTask();
                        dfpCaseTask.setId(utilsClient.getNewTimeId());
                        dfpCaseTask.setCaseId(caseInfo.getId());
                        dfpCaseTask.setFlowableId(firstFlowNode.getFlowableId());
                        dfpCaseTask.setProcessInstanceId(firstFlowNode.getProcessInstanceId());
                        dfpCaseTask.setProcessTaskId(firstFlowNode.getProcessTaskId());
                        dfpCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                        dfpCaseTask.setNodeType(firstFlowNode.getNodeType());
                        dfpCaseTask.setNodeId(firstFlowNode.getNodeId());
                        dfpCaseTask.setNodeName(firstFlowNode.getNodeName());
                        dfpCaseTask.setFlowId(firstFlowNode.getFlowId());
                        dfpCaseTask.setNodeShowName(firstFlowNode.getNodeShowName());
                        dfpCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                        // 通过调度的,任务候选执行者类型是上一步骤选择
                        dfpCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                        // 系统给综治中心分派,不需要签收
                        dfpCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                        dfpCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                        dfpCaseTask.setHandleUnitName("系统派单");
                        dfpCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
                        dfpCaseTask.setHandleContent("派单至:"+caseDispBaseDTO.getTargetName());
                        dfpCaseTask.setHandleTime(caseInfo.getCreateTime());
                        dfpCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                        dfpCaseTask.setCustId(caseInfo.getCustId());
                        dfpCaseTask.setCreateTime(caseInfo.getCreateTime());
                        dfpCaseTask.setUpdateTime(caseInfo.getCreateTime());
                        mapper.insert(dfpCaseTask);
                        // 完成第1个节点任务
                        FlowNode secondFlowNode = flowInfoService.completeTask(dfpCaseTask.getFlowableId(), dfpCaseTask.getProcessTaskId(),
                                FlowableConsts.OPERATION_jb_zszz, "系统派单");
                        // 进入第2个节点-镇街级组织待受理
                        CaseTask sdlCaseTask = new CaseTask();
                        sdlCaseTask.setId(utilsClient.getNewTimeId());
                        sdlCaseTask.setCaseId(caseInfo.getId());
                        sdlCaseTask.setFlowableId(secondFlowNode.getFlowableId());
                        sdlCaseTask.setProcessInstanceId(secondFlowNode.getProcessInstanceId());
                        sdlCaseTask.setProcessTaskId(secondFlowNode.getProcessTaskId());
                        sdlCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                        sdlCaseTask.setNodeType(secondFlowNode.getNodeType());
                        sdlCaseTask.setNodeId(secondFlowNode.getNodeId());
                        sdlCaseTask.setNodeName(secondFlowNode.getNodeName());
                        sdlCaseTask.setFlowId(secondFlowNode.getFlowId());
                        sdlCaseTask.setNodeShowName(secondFlowNode.getNodeShowName());
                        sdlCaseTask.setCaseTaskType(dfpCaseTask.getCaseTaskType());
                        // 通过调度的,任务候选执行者类型是上一步骤选择
                        sdlCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                        sdlCaseTask.setCandeUnitId(caseDispBaseDTO.getTargetId());
                        sdlCaseTask.setCandeUnitName(caseDispBaseDTO.getTargetName());
                        // 系统调度给调解组织,需要签收
                        sdlCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                        sdlCaseTask.setSignExpireTime(sysClient.getExpireTime(caseInfo.getCreateTime(), SyTimeEnum.SY_TIME_2.getIndex()));
                        sdlCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                        sdlCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                        sdlCaseTask.setCustId(caseInfo.getCustId());
                        sdlCaseTask.setCreateTime(caseInfo.getCreateTime());
                        sdlCaseTask.setUpdateTime(caseInfo.getUpdateTime());
                        mapper.insert(sdlCaseTask);
                        // 更新纠纷信息
                        CaseInfo caseInfoPO = new CaseInfo();
                        caseInfoPO.setId(caseInfo.getId());
                        caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_2.getIndex());
                        caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_2.getDes());
                        caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                        caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                        caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                        caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                        caseInfoService.updateCaseInfo(caseInfoPO);
                    }
                }
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webStartFlowLFDJ]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webStartFlowLFDJ", e);
        }
    }
    /**
     * web端大厅来访登记-自行受理-启动自行受理流程
     * @param caseInfo
     * @param loginUser
     */
    public void webStartFlowZXSL(CaseInfo caseInfo, CtUserDTO loginUser){
        try{
        }catch (Exception e){
            log.error("[CaseTaskService.webStartFlowZXSL]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webStartFlowZXSL", e);
        }
    }
    /**
     * web端任务处理-交办
     * @param assignTaskDTO 交办任务表单
     * @param userId 当前登录用户
     */
    public void webAssign(AssignTaskDTO assignTaskDTO, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            // 查询当前待分派任务
            CaseTask dfpCaseTask = mapper.selectById(assignTaskDTO.getCaseTaskId());
            // 完成当前待分派任务
            CaseTask dfpCaseTaskPO = new CaseTask();
            dfpCaseTaskPO.setId(assignTaskDTO.getCaseTaskId());
            dfpCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
            dfpCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
            dfpCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
            dfpCaseTaskPO.setHandleUserId(loginUser.getId());
            dfpCaseTaskPO.setHandleUserName(loginUser.getTrueName());
            dfpCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
            dfpCaseTaskPO.setHandleTime(nowDate);
            dfpCaseTaskPO.setUpdateTime(nowDate);
            mapper.updateCaseTask(dfpCaseTaskPO);
            // 查询承办组织信息
            CtUnitDTO dslUnitDTO = custClient.getUnitById(assignTaskDTO.getHandleUnitId());
            String flowOperation = null;
            // 镇街综治中心待分派
            if (FlowNodeEnum.FLOW_NODE_ZJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())){
                flowOperation = FlowableConsts.OPERATION_jb_zszz;
            }
            // 区综治中心待分派
            if (FlowNodeEnum.FLOW_NODE_QJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())){
                if (UserBaseConsts.UNIT_GRADE_2 == dslUnitDTO.getUnitGrade()) {
                    flowOperation = FlowableConsts.OPERATION_jb_zszz;
                }else {
                    flowOperation = FlowableConsts.OPERATION_jb_zzzx;
                }
            }
            // 市综治中心待分派
            if (FlowNodeEnum.FLOW_NODE_SJ_DFP.getIndex().equals(dfpCaseTask.getNodeId())){
                if (UserBaseConsts.UNIT_GRADE_1 == dslUnitDTO.getUnitGrade()) {
                    flowOperation = FlowableConsts.OPERATION_jb_zszz;
                }else {
                    flowOperation = FlowableConsts.OPERATION_jb_zzzx;
                }
            }
            // 完成当前待分派工作流任务
            FlowNode newFlowNode = flowInfoService.completeTask(dfpCaseTask.getFlowableId(), dfpCaseTask.getProcessTaskId(),
                    flowOperation, userId);
            // 新建待受理任务
            CaseTask blfkCaseTask = new CaseTask();
            blfkCaseTask.setId(utilsClient.getNewTimeId());
            blfkCaseTask.setCaseId(dfpCaseTask.getCaseId());
            blfkCaseTask.setFlowableId(newFlowNode.getFlowableId());
            blfkCaseTask.setProcessInstanceId(newFlowNode.getProcessInstanceId());
            blfkCaseTask.setProcessTaskId(newFlowNode.getProcessTaskId());
            blfkCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
            blfkCaseTask.setNodeType(newFlowNode.getNodeType());
            blfkCaseTask.setNodeId(newFlowNode.getNodeId());
            blfkCaseTask.setNodeName(newFlowNode.getNodeName());
            blfkCaseTask.setFlowId(newFlowNode.getFlowId());
            blfkCaseTask.setNodeShowName(newFlowNode.getNodeShowName());
            blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
            // 受理任务,任务候选执行者类型是上一步骤选择
            blfkCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
            blfkCaseTask.setCandeUnitId(dslUnitDTO.getId());
            blfkCaseTask.setCandeUnitName(dslUnitDTO.getUnitName());
            // 分派的任务,需要签收
            blfkCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
            blfkCaseTask.setSignExpireTime(sysClient.getExpireTime(nowDate, SyTimeEnum.SY_TIME_2.getIndex()));
            blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
            blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            blfkCaseTask.setCustId(dfpCaseTask.getCustId());
            blfkCaseTask.setCreateTime(nowDate);
            blfkCaseTask.setUpdateTime(nowDate);
            mapper.insert(blfkCaseTask);
            // 更新纠纷信息
            CaseInfo caseInfoPO = new CaseInfo();
            caseInfoPO.setId(blfkCaseTask.getCaseId());
            caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex());
            caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.getDes());
            caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
            caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
            caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
            caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
            caseInfoService.updateCaseInfo(caseInfoPO);
            // 分派配合组织
            if (CollectionUtils.isNotEmpty(assignTaskDTO.getAssistUnitList())){
                for (AssignAssistUnitDTO assignAssistUnitDTO: assignTaskDTO.getAssistUnitList()){
                    // 创建配合组织任务
                    CaseTask assistCaseTask = new CaseTask();
                    assistCaseTask.setId(utilsClient.getNewTimeId());
                    assistCaseTask.setCaseId(dfpCaseTask.getCaseId());
                    assistCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                    assistCaseTask.setNodeId(FlowNodeEnum.FLOW_NODE_BLFK.getIndex());
                    assistCaseTask.setNodeName(FlowNodeEnum.FLOW_NODE_BLFK.getIndex());
                    assistCaseTask.setFlowId(newFlowNode.getFlowId());
                    assistCaseTask.setNodeShowName(FlowNodeEnum.FLOW_NODE_BLFK.getIndex());
                    assistCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_2);
                    // 配合任务,任务候选执行者类型是上一步骤选择
                    assistCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                    assistCaseTask.setCandeUnitId(assignAssistUnitDTO.getUitId());
                    assistCaseTask.setCandeUnitName(assignAssistUnitDTO.getUitName());
                    // 分派的任务,需要签收
                    assistCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_1);
                    assistCaseTask.setSignExpireTime(sysClient.getExpireTime(nowDate, SyTimeEnum.SY_TIME_2.getIndex()));
                    assistCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                    assistCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                    assistCaseTask.setCustId(dfpCaseTask.getCustId());
                    assistCaseTask.setCreateTime(nowDate);
                    assistCaseTask.setUpdateTime(nowDate);
                    mapper.insert(assistCaseTask);
                }
                // 拼接配合组织编号和名称
                String assistUnitId = assignTaskDTO.getAssistUnitList().stream().map(AssignAssistUnitDTO::getUitId).
                        collect(Collectors.joining(BaseConsts.COMMA));
                String assistUnitName = assignTaskDTO.getAssistUnitList().stream().map(AssignAssistUnitDTO::getUitId).
                        collect(Collectors.joining(BaseConsts.COMMA));
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webAssign]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webAssign", e);
        }
    }
    /**
     * web端任务处理-签收
     * @param signTaskDTO 签收任务表单
     * @param userId 当前登录用户
     */
    public void webSign(SignTaskDTO signTaskDTO, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            // 更新纠纷任务信息
            CaseTask caseTaskPO = new CaseTask();
            caseTaskPO.setId(signTaskDTO.getCaseTaskId());
            caseTaskPO.setSignStatus(CaseTaskConsts.SIGN_STATUS_2);
            caseTaskPO.setSignTime(nowDate);
            caseTaskPO.setSignUserId(loginUser.getId());
            caseTaskPO.setSignUserName(loginUser.getTrueName());
            caseTaskPO.setUpdateTime(nowDate);
            mapper.updateCaseTask(caseTaskPO);
            // 更新纠纷信息
            CaseInfo caseInfoPO = new CaseInfo();
            caseInfoPO.setId(signTaskDTO.getCaseId());
            caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_3.getIndex());
            caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_3.getDes());
            caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
            caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
            caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
            caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
            caseInfoPO.setUpdateTime(nowDate);
            caseInfoService.updateCaseInfo(caseInfoPO);
        }catch (Exception e){
            log.error("[CaseTaskService.webSign]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webSign", e);
        }
    }
    /**
     * web端任务处理-受理
     * @param acceptTaskDTO 受理任务表单
     * @param userId 当前登录用户
     */
    public void webAccept(AcceptTaskDTO acceptTaskDTO, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            // 查询当前待受理任务
            CaseTask dslCaseTask = mapper.selectById(acceptTaskDTO.getCaseTaskId());
            // 完成当前待受理任务
            CaseTask dslCaseTaskPO = new CaseTask();
            dslCaseTaskPO.setId(acceptTaskDTO.getCaseTaskId());
            dslCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
            dslCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
            dslCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
            dslCaseTaskPO.setHandleUserId(loginUser.getId());
            dslCaseTaskPO.setHandleUserName(loginUser.getTrueName());
            dslCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
            dslCaseTaskPO.setHandleTime(nowDate);
            dslCaseTaskPO.setUpdateTime(nowDate);
            mapper.updateCaseTask(dslCaseTaskPO);
            // 完成当前待受理工作流任务
            FlowNode newFlowNode = flowInfoService.completeTask(dslCaseTask.getFlowableId(), dslCaseTask.getProcessTaskId(),
                    FlowableConsts.OPERATION_sl, userId);
            // 新建办理反馈任务
            CaseTask blfkCaseTask = new CaseTask();
            blfkCaseTask.setId(utilsClient.getNewTimeId());
            blfkCaseTask.setCaseId(dslCaseTask.getCaseId());
            blfkCaseTask.setFlowableId(newFlowNode.getFlowableId());
            blfkCaseTask.setProcessInstanceId(newFlowNode.getProcessInstanceId());
            blfkCaseTask.setProcessTaskId(newFlowNode.getProcessTaskId());
            blfkCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
            blfkCaseTask.setNodeType(newFlowNode.getNodeType());
            blfkCaseTask.setNodeId(newFlowNode.getNodeId());
            blfkCaseTask.setNodeName(newFlowNode.getNodeName());
            blfkCaseTask.setFlowId(newFlowNode.getFlowId());
            blfkCaseTask.setNodeShowName(newFlowNode.getNodeShowName());
            blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
            // 受理任务,任务候选执行者类型是上一步骤选择
            blfkCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
            blfkCaseTask.setCandeUnitId(loginUser.getUnitId());
            blfkCaseTask.setCandeUnitName(loginUser.getUnitName());
            // 受理后的任务,不需要签收
            blfkCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
            blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
            blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            blfkCaseTask.setCustId(dslCaseTask.getCustId());
            blfkCaseTask.setCreateTime(nowDate);
            blfkCaseTask.setUpdateTime(nowDate);
            mapper.insert(blfkCaseTask);
            // 更新纠纷信息
            CaseInfo caseInfoPO = new CaseInfo();
            caseInfoPO.setId(blfkCaseTask.getCaseId());
            caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex());
            caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_4.getDes());
            caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
            caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
            caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
            caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
            caseInfoService.updateCaseInfo(caseInfoPO);
            // 更新纠纷扩展信息
            CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
            caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId());
            caseInfoUnfoldPO.setAcceptTime(nowDate);
            caseInfoUnfoldPO.setMediateUnitId(blfkCaseTask.getCandeUnitId());
            caseInfoUnfoldPO.setMediateUnitName(blfkCaseTask.getCandeUnitName());
            caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
        }catch (Exception e){
            log.error("[CaseTaskService.webAccept]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webAccept", e);
        }
    }
    /**
     * web端任务处理-结案申请
     * @param caseWindupApply 结案申请表单
     * @param userId 当前登录用户
     */
    public void webWindupApply(CaseWindupApply caseWindupApply, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            // 新增结案申请信息
            caseWindupApply.setApplyUnitId(loginUser.getUnitId());
            caseWindupApply.setApplyUnitName(loginUser.getUnitName());
            caseWindupApply.setApplyUserId(loginUser.getTrueName());
            caseWindupApply.setApplyTime(nowDate);
            caseWindupApply.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            caseWindupApply.setCreateTime(nowDate);
            caseWindupApply.setUpdateTime(nowDate);
            // 查询办理反馈任务
            CaseTask blfkCaseTask = mapper.selectById(caseWindupApply.getCaseTaskId());
            // 完成当前办理反馈任务
            CaseTask blfkCaseTaskPO = new CaseTask();
            blfkCaseTaskPO.setId(caseWindupApply.getCaseTaskId());
            blfkCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
            blfkCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
            blfkCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
            blfkCaseTaskPO.setHandleUserId(loginUser.getId());
            blfkCaseTaskPO.setHandleUserName(loginUser.getTrueName());
            blfkCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
            blfkCaseTaskPO.setHandleTime(nowDate);
            blfkCaseTaskPO.setUpdateTime(nowDate);
            mapper.updateCaseTask(blfkCaseTaskPO);
            // 完成当前待受理工作流任务,走结案申请任务
            FlowNode jasqFlowNode = flowInfoService.completeTask(blfkCaseTask.getFlowableId(), blfkCaseTask.getProcessTaskId(),
                    FlowableConsts.OPERATION_forward, userId);
            // 新建并自动完成结案申请任务
            CaseTask jasqCaseTask = new CaseTask();
            jasqCaseTask.setId(utilsClient.getNewTimeId());
            jasqCaseTask.setCaseId(blfkCaseTask.getCaseId());
            jasqCaseTask.setFlowableId(jasqFlowNode.getFlowableId());
            jasqCaseTask.setProcessInstanceId(jasqFlowNode.getProcessInstanceId());
            jasqCaseTask.setProcessTaskId(jasqFlowNode.getProcessTaskId());
            jasqCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
            jasqCaseTask.setNodeType(jasqFlowNode.getNodeType());
            jasqCaseTask.setNodeId(jasqFlowNode.getNodeId());
            jasqCaseTask.setNodeName(jasqFlowNode.getNodeName());
            jasqCaseTask.setFlowId(jasqFlowNode.getFlowId());
            jasqCaseTask.setNodeShowName(jasqFlowNode.getNodeShowName());
            jasqCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
            // 受理任务,任务候选执行者类型是上一步骤选择
            jasqCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
            jasqCaseTask.setCandeUnitId(loginUser.getUnitId());
            jasqCaseTask.setCandeUnitName(loginUser.getUnitName());
            // 受理后的任务,不需要签收
            jasqCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
            jasqCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
            jasqCaseTask.setHandleUnitId(loginUser.getUnitId());
            jasqCaseTask.setHandleUnitName(loginUser.getUnitName());
            jasqCaseTask.setHandleUserId(loginUser.getId());
            jasqCaseTask.setHandleUserName(loginUser.getTrueName());
            jasqCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
            jasqCaseTask.setHandleTime(nowDate);
            jasqCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            jasqCaseTask.setCustId(blfkCaseTask.getCustId());
            jasqCaseTask.setCreateTime(nowDate);
            jasqCaseTask.setUpdateTime(nowDate);
            mapper.insert(jasqCaseTask);
            // 化解成功,自动结案审核通过
            if (MediResultBaseConstsEnum.MEDI_RESULT_1.getIndex().equals(caseWindupApply.getMediResult())){
                // 完成当前结案申请工作流任务,走结案审核任务
                FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(),
                        FlowableConsts.OPERATION_forward, userId);
                // 新建并自动完成结案审核任务
                CaseTask jashCaseTask = new CaseTask();
                jashCaseTask.setId(utilsClient.getNewTimeId());
                jashCaseTask.setCaseId(jasqCaseTask.getCaseId());
                jashCaseTask.setFlowableId(jashFlowNode.getFlowableId());
                jashCaseTask.setProcessInstanceId(jashFlowNode.getProcessInstanceId());
                jashCaseTask.setProcessTaskId(jashFlowNode.getProcessTaskId());
                jashCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                jashCaseTask.setNodeType(jashFlowNode.getNodeType());
                jashCaseTask.setNodeId(jashFlowNode.getNodeId());
                jashCaseTask.setNodeName(jashFlowNode.getNodeName());
                jashCaseTask.setFlowId(jashFlowNode.getFlowId());
                jashCaseTask.setNodeShowName(jashFlowNode.getNodeShowName());
                jashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                // 受理任务,任务候选执行者类型是上一步骤选择
                jashCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                jashCaseTask.setCandeUnitId(loginUser.getUnitId());
                jashCaseTask.setCandeUnitName(loginUser.getUnitName());
                // 受理后的任务,不需要签收
                jashCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                jashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
                jashCaseTask.setHandleUnitId(loginUser.getUnitId());
                jashCaseTask.setHandleUnitName(loginUser.getUnitName());
                jashCaseTask.setHandleUserId(loginUser.getId());
                jashCaseTask.setHandleUserName(loginUser.getTrueName());
                jashCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
                jashCaseTask.setHandleTime(nowDate);
                jashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                jashCaseTask.setCustId(jasqCaseTask.getCustId());
                jashCaseTask.setCreateTime(nowDate);
                jashCaseTask.setUpdateTime(nowDate);
                mapper.insert(jashCaseTask);
                // 完成当前结案审核工作流任务,走当事人评价任务
                FlowNode dsrpjFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(),
                        FlowableConsts.OPERATION_jash_ty, userId);
                // 新建当事人评价任务
                CaseTask dsrpjCaseTask = new CaseTask();
                dsrpjCaseTask.setId(utilsClient.getNewTimeId());
                dsrpjCaseTask.setCaseId(jashCaseTask.getCaseId());
                dsrpjCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId());
                dsrpjCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId());
                dsrpjCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId());
                dsrpjCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                dsrpjCaseTask.setNodeType(dsrpjFlowNode.getNodeType());
                dsrpjCaseTask.setNodeId(dsrpjFlowNode.getNodeId());
                dsrpjCaseTask.setNodeName(dsrpjFlowNode.getNodeName());
                dsrpjCaseTask.setFlowId(dsrpjFlowNode.getFlowId());
                dsrpjCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName());
                dsrpjCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                // 受理任务,任务候选执行者类型是上一步骤选择
                dsrpjCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                dsrpjCaseTask.setCandeUnitId(loginUser.getUnitId());
                dsrpjCaseTask.setCandeUnitName(loginUser.getUnitName());
                // 受理后的任务,不需要签收
                dsrpjCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                dsrpjCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                dsrpjCaseTask.setCustId(blfkCaseTaskPO.getCustId());
                dsrpjCaseTask.setCreateTime(nowDate);
                dsrpjCaseTask.setUpdateTime(nowDate);
                mapper.insert(dsrpjCaseTask);
                // 更新结案申请信息
                caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1);
                caseWindupApply.setCaseTaskId(jashCaseTask.getId());
                caseWindupApply.setAuditUnitId(jashCaseTask.getHandleUnitId());
                caseWindupApply.setAuditUnitName(jashCaseTask.getHandleUnitName());
                caseWindupApply.setAuditUserId(jashCaseTask.getHandleUserId());
                caseWindupApply.setAuditUserName(jashCaseTask.getHandleUserName());
                caseWindupApply.setAuditTime(nowDate);
                caseWindupApply.setAuditResult(AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex());
                caseWindupApply.setAuditResultName(AuditBaseConstsEnum.AUDIT_RESULT_1.getDes());
                caseWindupApply.setCustId(jashCaseTask.getCustId());
                caseWindupApplyService.save(caseWindupApply);
                // 更新纠纷信息
                CaseInfo caseInfoPO = new CaseInfo();
                caseInfoPO.setId(dsrpjCaseTask.getCaseId());
                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex());
                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_6.getDes());
                caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
                caseInfoUnfoldPO.setId(dsrpjCaseTask.getCaseId());
                caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult());
                caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName());
                caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType());
                caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName());
                caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent());
                caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent());
                caseInfoUnfoldPO.setCloseTime(nowDate);
                caseInfoUnfoldPO.setUpdateTime(nowDate);
                caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            }else {// 化解不成功,走结案审核流程
                // 完成当前结案申请工作流任务,走结案审核任务
                FlowNode jashFlowNode = flowInfoService.completeTask(jasqCaseTask.getFlowableId(), jasqCaseTask.getProcessTaskId(),
                        FlowableConsts.OPERATION_forward, userId);
                // 新建结案审核任务
                CaseTask jashCaseTask = new CaseTask();
                jashCaseTask.setId(utilsClient.getNewTimeId());
                jashCaseTask.setCaseId(blfkCaseTaskPO.getCaseId());
                jashCaseTask.setFlowableId(jashFlowNode.getFlowableId());
                jashCaseTask.setProcessInstanceId(jashFlowNode.getProcessInstanceId());
                jashCaseTask.setProcessTaskId(jashFlowNode.getProcessTaskId());
                jashCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                jashCaseTask.setNodeType(jashFlowNode.getNodeType());
                jashCaseTask.setNodeId(jashFlowNode.getNodeId());
                jashCaseTask.setNodeName(jashFlowNode.getNodeName());
                jashCaseTask.setFlowId(jashFlowNode.getFlowId());
                jashCaseTask.setNodeShowName(jashFlowNode.getNodeShowName());
                jashCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                // 受理任务,任务候选执行者类型是上一步骤选择
                jashCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                jashCaseTask.setCandeUnitId(loginUser.getUnitId());
                jashCaseTask.setCandeUnitName(loginUser.getUnitName());
                // 受理后的任务,不需要签收
                jashCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                jashCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                jashCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                jashCaseTask.setCustId(blfkCaseTaskPO.getCustId());
                jashCaseTask.setCreateTime(nowDate);
                jashCaseTask.setUpdateTime(nowDate);
                mapper.insert(jashCaseTask);
                // 更新结案申请信息
                caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_0);
                caseWindupApply.setCaseTaskId(jashCaseTask.getId());
                caseWindupApply.setAuditUnitId(jashCaseTask.getHandleUnitId());
                caseWindupApply.setAuditUnitName(jashCaseTask.getHandleUnitName());
                caseWindupApply.setCustId(jashCaseTask.getCustId());
                caseWindupApplyService.save(caseWindupApply);
                // 更新纠纷信息
                CaseInfo caseInfoPO = new CaseInfo();
                caseInfoPO.setId(jashCaseTask.getCaseId());
                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_5.getIndex());
                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_5.getDes());
                caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
                caseInfoUnfoldPO.setId(jashCaseTask.getCaseId());
                caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult());
                caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName());
                caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType());
                caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName());
                caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent());
                caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent());
                caseInfoUnfoldPO.setCloseTime(nowDate);
                caseInfoUnfoldPO.setUpdateTime(nowDate);
                caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webWindupApply", e);
        }
    }
    /**
     * web端任务处理-结案审核
     * @param caseWindupApply 结案审核表单
     * @param userId 当前登录用户
     */
    public void webWindupAudit(CaseWindupApply caseWindupApply, String userId){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 获取当前登录用户
            CtUserDTO loginUser = custClient.clientGetUserAll(userId);
            // 更新结案申请信息
            caseWindupApply.setApplyStatus(AuditBaseConsts.AUDIT_STATUS_1);
            caseWindupApply.setAuditUserId(loginUser.getId());
            caseWindupApply.setAuditUserName(loginUser.getTrueName());
            caseWindupApply.setAuditTime(nowDate);
            caseWindupApply.setUpdateTime(nowDate);
            caseWindupApplyService.saveCaseWindupApply(caseWindupApply);
            // 查询结案审核任务
            CaseTask jashCaseTask = mapper.selectById(caseWindupApply.getCaseTaskId());
            // 审核通过,
            if (AuditBaseConstsEnum.AUDIT_RESULT_1.getIndex().equals(caseWindupApply.getAuditResult())){
                // 完成当前结案审核任务
                CaseTask jashCaseTaskPO = new CaseTask();
                jashCaseTaskPO.setId(caseWindupApply.getCaseTaskId());
                jashCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
                jashCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
                jashCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
                jashCaseTaskPO.setHandleUserId(loginUser.getId());
                jashCaseTaskPO.setHandleUserName(loginUser.getTrueName());
                jashCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
                jashCaseTaskPO.setHandleTime(nowDate);
                jashCaseTaskPO.setUpdateTime(nowDate);
                mapper.updateCaseTask(jashCaseTaskPO);
                // 完成当前结案审核工作流任务,走当事人评价任务
                FlowNode dsrpjFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(),
                        FlowableConsts.OPERATION_jash_ty, userId);
                // 新建当事人评价任务
                CaseTask dsrpjCaseTask = new CaseTask();
                dsrpjCaseTask.setId(utilsClient.getNewTimeId());
                dsrpjCaseTask.setCaseId(jashCaseTask.getCaseId());
                dsrpjCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId());
                dsrpjCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId());
                dsrpjCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId());
                dsrpjCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                dsrpjCaseTask.setNodeType(dsrpjFlowNode.getNodeType());
                dsrpjCaseTask.setNodeId(dsrpjFlowNode.getNodeId());
                dsrpjCaseTask.setNodeName(dsrpjFlowNode.getNodeName());
                dsrpjCaseTask.setFlowId(dsrpjFlowNode.getFlowId());
                dsrpjCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName());
                dsrpjCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                // 受理任务,任务候选执行者类型是上一步骤选择
                dsrpjCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                dsrpjCaseTask.setCandeUnitId(loginUser.getUnitId());
                dsrpjCaseTask.setCandeUnitName(loginUser.getUnitName());
                // 受理后的任务,不需要签收
                dsrpjCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                dsrpjCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                dsrpjCaseTask.setCustId(jashCaseTask.getCustId());
                dsrpjCaseTask.setCreateTime(nowDate);
                dsrpjCaseTask.setUpdateTime(nowDate);
                mapper.insert(dsrpjCaseTask);
                // 更新纠纷信息
                CaseInfo caseInfoPO = new CaseInfo();
                caseInfoPO.setId(dsrpjCaseTask.getCaseId());
                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_6.getIndex());
                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_6.getDes());
                caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
                caseInfoUnfoldPO.setId(dsrpjCaseTask.getCaseId());
                caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult());
                caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName());
                caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType());
                caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName());
                caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent());
                caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent());
                caseInfoUnfoldPO.setCloseTime(nowDate);
                caseInfoUnfoldPO.setUpdateTime(nowDate);
                caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            }else {
                // 审核不通过,回退办理反馈任务
                // 完成当前结案审核任务
                CaseTask jashCaseTaskPO = new CaseTask();
                jashCaseTaskPO.setId(caseWindupApply.getCaseTaskId());
                jashCaseTaskPO.setStatus(CaseTaskConsts.TASK_STATUS_2);
                jashCaseTaskPO.setHandleUnitId(loginUser.getUnitId());
                jashCaseTaskPO.setHandleUnitName(loginUser.getUnitName());
                jashCaseTaskPO.setHandleUserId(loginUser.getId());
                jashCaseTaskPO.setHandleUserName(loginUser.getTrueName());
                jashCaseTaskPO.setHandleResult(CaseTaskConsts.HANDLE_RESULT_2);
                jashCaseTaskPO.setHandleTime(nowDate);
                jashCaseTaskPO.setUpdateTime(nowDate);
                mapper.updateCaseTask(jashCaseTaskPO);
                // 完成当前结案审核工作流任务,走办理反馈任务
                FlowNode blfkFlowNode = flowInfoService.completeTask(jashCaseTask.getFlowableId(), jashCaseTask.getProcessTaskId(),
                        FlowableConsts.OPERATION_jash_bty, userId);
                // 新建办理反馈任务
                CaseTask blfkCaseTask = new CaseTask();
                blfkCaseTask.setId(utilsClient.getNewTimeId());
                blfkCaseTask.setCaseId(jashCaseTask.getCaseId());
                blfkCaseTask.setFlowableId(blfkFlowNode.getFlowableId());
                blfkCaseTask.setProcessInstanceId(blfkFlowNode.getProcessInstanceId());
                blfkCaseTask.setProcessTaskId(blfkFlowNode.getProcessTaskId());
                blfkCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
                blfkCaseTask.setNodeType(blfkFlowNode.getNodeType());
                blfkCaseTask.setNodeId(blfkFlowNode.getNodeId());
                blfkCaseTask.setNodeName(blfkFlowNode.getNodeName());
                blfkCaseTask.setFlowId(blfkFlowNode.getFlowId());
                blfkCaseTask.setNodeShowName(blfkFlowNode.getNodeShowName());
                blfkCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
                // 受理任务,任务候选执行者类型是上一步骤选择
                blfkCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
                blfkCaseTask.setCandeUnitId(loginUser.getUnitId());
                blfkCaseTask.setCandeUnitName(loginUser.getUnitName());
                // 受理后的任务,不需要签收
                blfkCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
                blfkCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_1);
                blfkCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
                blfkCaseTask.setCustId(jashCaseTask.getCustId());
                blfkCaseTask.setCreateTime(nowDate);
                blfkCaseTask.setUpdateTime(nowDate);
                mapper.insert(blfkCaseTask);
                // 更新纠纷信息
                CaseInfo caseInfoPO = new CaseInfo();
                caseInfoPO.setId(blfkCaseTask.getCaseId());
                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_4.getIndex());
                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_4.getDes());
                caseInfoPO.setProcess(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getIndex());
                caseInfoPO.setProcessName(CaseProcessBaseConstsEnum.getByStatus(caseInfoPO.getStatus()).getDes());
                caseInfoPO.setInfoProcess(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getIndex());
                caseInfoPO.setInfoProcessName(CaseInfoProcessBaseConstsEnum.getByProcess(caseInfoPO.getProcess()).getDes());
                caseInfoPO.setUpdateTime(nowDate);
                caseInfoService.updateCaseInfo(caseInfoPO);
                // 更新纠纷扩展信息
                CaseInfoUnfold caseInfoUnfoldPO = new CaseInfoUnfold();
                caseInfoUnfoldPO.setId(blfkCaseTask.getCaseId());
                caseInfoUnfoldPO.setMediResult(caseWindupApply.getMediResult());
                caseInfoUnfoldPO.setMediResultName(caseWindupApply.getMediResultName());
                caseInfoUnfoldPO.setAgreeType(caseWindupApply.getAgreeType());
                caseInfoUnfoldPO.setAgreeTypeName(caseWindupApply.getAgreeTypeName());
                caseInfoUnfoldPO.setAgreeContent(caseWindupApply.getAgreeContent());
                caseInfoUnfoldPO.setWindupContent(caseWindupApply.getWindupContent());
                caseInfoUnfoldPO.setCloseTime(nowDate);
                caseInfoUnfoldPO.setUpdateTime(nowDate);
                caseInfoUnfoldService.updateCaseInfoUnfold(caseInfoUnfoldPO);
            }
        }catch (Exception e){
            log.error("[CaseTaskService.webWindupApply]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseTaskService.webWindupApply", e);
        }
    }
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseWindupApplyService.java
@@ -3,6 +3,8 @@
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.module.cases.domain.po.CaseInfo;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.cases.dao.mapper.CaseWindupApplyMapper;
import cn.huge.module.cases.domain.po.CaseWindupApply;
@@ -40,6 +42,8 @@
    @Autowired
    private UtilsClientImpl utilsClient;
    @Autowired
    private CaseInfoService caseInfoService;
    /**
    * 更新对象
@@ -140,7 +144,14 @@
        try{
            QueryWrapper<CaseWindupApply> caseWindupApplyQueryWrapper = new QueryWrapper<>();
            caseWindupApplyQueryWrapper.eq("case_task_id", caseTaskId);
            return mapper.selectOne(caseWindupApplyQueryWrapper);
            CaseWindupApply caseWindupApply = mapper.selectOne(caseWindupApplyQueryWrapper);
            if (ObjectUtils.isNotEmpty(caseWindupApply)) {
                QueryWrapper<CaseInfo> caseInfoQueryWrapper =new QueryWrapper<>();
                caseInfoQueryWrapper.eq("id", caseWindupApply.getCaseId()).select("case_level");
                CaseInfo caseInfo = caseInfoService.getOne(caseInfoQueryWrapper);
                caseWindupApply.setCaseLevel(caseInfo.getCaseLevel());
            }
            return caseWindupApply;
        }catch (Exception e){
            log.error("[CaseWindupApplyService.getByCaseTaskId]调用失败,异常信息:"+e, e);
            throw new ServiceException("CaseWindupApplyService.getByCaseTaskId", e);
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/CustClient.java
@@ -56,4 +56,13 @@
    @PostMapping("/api/wechat/paUser/bindGetUserId")
    ReturnBO bindGetUserId(@RequestBody WechatBindCaseDTO wechatBindCaseDTO);
    /**
     * 根据id查询组织信息
     * @url {ctx}/api/client/ctUnit/getById
     * @param unitId 组织编号
     * @return Object
     */
    @GetMapping("/api/client/ctUnit/getUnitById")
    ReturnBO getUnitById(@RequestParam("unitId") String unitId);
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java
@@ -5,6 +5,7 @@
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -47,6 +48,16 @@
    ReturnBO getTimeLimit(@RequestParam String limitTable, @RequestParam(value = "limitType") String limitType);
    /**
     * 获取时限
     * @url {ctx}/api/client/syTimeLimit/getExpireTime?ownerIds=
     * @param computeTime
     * @param limitType
     * @return
     */
    @GetMapping("/api/client/syTimeLimit/getExpireTime")
    ReturnBO getExpireTime(@RequestParam(value = "computeTime") Date computeTime, @RequestParam(value = "limitType") String limitType);
    /**
     * 根据条件删除附件关系
     * @url {ctx}/api/v1/fileRelate/removeFileRelate
     * @param fileTypeTermsDTO 条件
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/CustClientImpl.java
@@ -6,6 +6,7 @@
import cn.huge.base.common.exception.ClientException;
import cn.huge.base.common.exception.ServiceException;
import cn.huge.module.client.api.CustClient;
import cn.huge.module.cust.dto.CtUnitDTO;
import cn.huge.module.cust.dto.CtUserDTO;
import cn.huge.module.cust.dto.PaUserDTO;
import cn.huge.module.mediate.dto.WechatBindCaseDTO;
@@ -86,8 +87,6 @@
        }
    }
    /**
     * 当事人-获取登录用户-所有信息
     * @param userId 用户编号
@@ -128,4 +127,26 @@
        }
        return userId;
    }
    /**
     * 根据id查询组织信息
     * @url {ctx}/api/client/ctUnit/getUnitById
     * @param unitId 组织编号
     * @return Object
     */
    public CtUnitDTO getUnitById(String unitId){
        try{
            ReturnBO returnBo = custClient.getUnitById(unitId);
            if (ReturnConsts.OK == returnBo.getCode()){
                CtUnitDTO ctUnitDTO = objectMapper.convertValue(returnBo.getData(), CtUnitDTO.class);
                return ctUnitDTO;
            }else{
                log.error("Client外服务接口[CustClientImpl.getUnitById]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
                throw new ClientException("CustClientImpl.getUnitById", returnBo.getMsg());
            }
        }catch (Exception e){
            log.error("service方法[CustClientImpl.getUnitById]调用异常:"+e, e);
            throw new ServiceException("CustClientImpl.getUnitById", e);
        }
    }
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
@@ -14,10 +14,7 @@
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * @title: 系统公共服务微服务调用接口
@@ -113,6 +110,28 @@
    }
    /**
     * 获取时限
     * @url {ctx}/api/web/syTimeLimit/getExpireTime
     * @param computeTime
     * @param limitType
     * @return
     */
    public Date getExpireTime(Date computeTime, String limitType){
        Date expireTime = null;
        try{
            ReturnBO returnBo = sysClient.getExpireTime(computeTime, limitType);
            if (ReturnConsts.OK == returnBo.getCode()){
                if (ObjectUtils.isNotEmpty(returnBo.getData())){
                    expireTime = (Date) returnBo.getData();
                }
            }
        }catch (Exception e){
            log.error("service方法[SysClientImpl.getExpireTime]调用异常:"+e, e);
        }
        return expireTime;
    }
    /**
     * 根据条件删除附件关系
     * @param fileTypeTermsDTO 条件
     * @return Object
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/consts/FlowNodeEnum.java
File was renamed from dyh-service/dyh-base/src/main/java/cn/huge/module/mediate/constant/FlowNodeBaseEnum.java
@@ -1,4 +1,4 @@
package cn.huge.module.mediate.constant;
package cn.huge.module.flow.consts;
/**
 * @title": 工作流节点枚举类
@@ -8,7 +8,7 @@
 * @time": 2021-11-05 16":51":48
 * @version": 1.0.0
 */
public enum FlowNodeBaseEnum {
public enum FlowNodeEnum {
    /**
     * 节点
@@ -60,7 +60,7 @@
        this.des = des;
    }
    FlowNodeBaseEnum(String index, String des) {
    FlowNodeEnum(String index, String des) {
        this.index = index;
        this.des = des;
    }
@@ -71,9 +71,9 @@
     * @return
     */
    public static String getDes(String index) {
        for (FlowNodeBaseEnum flowNodeBaseEnum : FlowNodeBaseEnum.values()) {
            if (flowNodeBaseEnum.getIndex().equals(index)) {
                return flowNodeBaseEnum.des;
        for (FlowNodeEnum flowNodeEnum : FlowNodeEnum.values()) {
            if (flowNodeEnum.getIndex().equals(index)) {
                return flowNodeEnum.des;
            }
        }
        return null;
@@ -85,9 +85,9 @@
     * @return
     */
    public static String getIndex(String des) {
        for (FlowNodeBaseEnum flowNodeBaseEnum : FlowNodeBaseEnum.values()) {
            if (flowNodeBaseEnum.getDes().equals(des)) {
                return flowNodeBaseEnum.index;
        for (FlowNodeEnum flowNodeEnum : FlowNodeEnum.values()) {
            if (flowNodeEnum.getDes().equals(des)) {
                return flowNodeEnum.index;
            }
        }
        return null;
@@ -98,7 +98,7 @@
     * @param index
     * @return
     */
    public static FlowNodeBaseEnum getByIndex(final String index) {
    public static FlowNodeEnum getByIndex(final String index) {
        switch (index) {
            case "ZXSL":
                return FLOW_NODE_ZXSL;
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/consts/FlowableConsts.java
New file
@@ -0,0 +1,71 @@
package cn.huge.module.flow.consts;
/**
 * @title: 用户相关常量类
 * @description: 用户相关常量
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
public class FlowableConsts {
    /**
     * 两个默认流程定义编号
     * 自行受理:GZDYH_ZXSL_3LEVEL_V1
     * 来访登记:GZDYH_LFDJ_3LEVEL_V1
     */
    public static final String FLOWABLE_ID_LFDJ = "GZDYH_LFDJ_3LEVEL_V1";
    public static final String FLOWABLE_ID_ZXSL = "GZDYH_ZXSL_3LEVEL_V1";
    /**
     * 工作流通用任务条件,
     * 前进:forward,退回:back,
     */
    public static final String OPERATION_forward = "forward";
    public static final String OPERATION_back = "back";
    /**
     * 工作流业务任务条件,
     * 自行受理:zxsl
     * 交办给直属组织:jb_zszz,交办给综治中心:jb_zzzx
     * 受理:sl
     * 回退申请:htsq,回退审核同意:htsh_ty,回退审核不同意:htsh_bty
     * 上报:sb,上报审核同意:htsq_ty,上报审核不同意:htsq_bty
     * 结案审核同意:jash_ty,结案审核不同意:jash_bty,htsh_bty_zj,htsh_bty_qj
     */
    public static final String OPERATION_jb_zszz = "jb_zszz";
    public static final String OPERATION_jb_zzzx = "jb_zzzx";
    public static final String OPERATION_sl = "sl";
    public static final String OPERATION_htsq = "htsq";
    public static final String OPERATION_htsh_ty = "htsh_ty";
    public static final String OPERATION_htsh_bty = "htsh_bty";
    public static final String OPERATION_htsh_bty_zj = "htsh_bty_zj";
    public static final String OPERATION_htsh_bty_qj = "htsh_bty_qj";
    public static final String OPERATION_sb = "sb";
    public static final String OPERATION_sbsh_ty = "sbsh_ty";
    public static final String OPERATION_sbsh_bty = "sbsh_bty";
    public static final String OPERATION_jash_ty = "jash_ty";
    public static final String OPERATION_jash_bty = "jash_bty";
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/controller/web/FlowNodeWebController.java
@@ -23,7 +23,7 @@
 * @description: 业务流程节点表接口api-web端
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:08
 * @version: 1.0.0
 */
@Slf4j
@@ -98,6 +98,16 @@
        if (StringUtils.isNotBlank(api)){
            terms.put("api", api);
        }
        // 对应纠纷进度
        String caseProcess = request.getParameter("caseProcess");
        if (StringUtils.isNotBlank(caseProcess)){
            terms.put("caseProcess", caseProcess);
        }
        // 对应纠纷进度名称
        String caseProcessName = request.getParameter("caseProcessName");
        if (StringUtils.isNotBlank(caseProcessName)){
            terms.put("caseProcessName", caseProcessName);
        }
        // 节点处理时限,单位:天
        String expire = request.getParameter("expire");
        if (StringUtils.isNotBlank(expire)){
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/controller/web/FlowableNodeWebController.java
@@ -23,7 +23,7 @@
 * @description: 工作流流程节点信息表接口api-web端
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:07
 * @version: 1.0.0
 */
@Slf4j
@@ -62,26 +62,6 @@
        String icon = request.getParameter("icon");
        if (StringUtils.isNotBlank(icon)){
            terms.put("icon", icon);
        }
        // 对应请求接口方式,POST:post请求,GET:get请求,PUT:put请求,DELETE:delete请求
        String apiType = request.getParameter("apiType");
        if (StringUtils.isNotBlank(apiType)){
            terms.put("apiType", apiType);
        }
        // 对应请求接口
        String api = request.getParameter("api");
        if (StringUtils.isNotBlank(api)){
            terms.put("api", api);
        }
        // 对应纠纷进度
        String caseProcess = request.getParameter("caseProcess");
        if (StringUtils.isNotBlank(caseProcess)){
            terms.put("caseProcess", caseProcess);
        }
        // 对应纠纷进度名称
        String caseProcessName = request.getParameter("caseProcessName");
        if (StringUtils.isNotBlank(caseProcessName)){
            terms.put("caseProcessName", caseProcessName);
        }
        // 删除状态,0:未删除,1:已删除
        String deleteStatus = request.getParameter("deleteStatus");
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/FlowNodeMapper.java
@@ -14,7 +14,7 @@
* @Description 此处仅涉及复杂SQL操作,务必不要在此再次写单表的CRUD操作,因为mybatisPlus已经实现。
* @company: hugeinfo
* @author: liyj
* @time: 2024-09-06 15:50:06
* @time: 2024-09-08 15:09:08
* @version 1.0.0
*/
@Repository
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/FlowableNodeMapper.java
@@ -14,7 +14,7 @@
* @Description 此处仅涉及复杂SQL操作,务必不要在此再次写单表的CRUD操作,因为mybatisPlus已经实现。
* @company: hugeinfo
* @author: liyj
* @time: 2024-09-06 15:50:06
* @time: 2024-09-08 15:09:07
* @version 1.0.0
*/
@Repository
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/xml/FlowNodeMapper.xml
@@ -5,7 +5,7 @@
 * @description: 自定义sql,请自行实现业务逻辑
 * @company: hugeinfo
 * @author: liyj
 * @time:2024-09-06 15:50:06
 * @time:2024-09-08 15:09:08
 * @version 1.0.0
-->
<mapper namespace="cn.huge.module.flow.dao.mapper.FlowNodeMapper">
@@ -22,6 +22,8 @@
            <result property="nodeIcon" column="node_icon"/>
            <result property="apiType" column="api_type"/>
            <result property="api" column="api"/>
            <result property="caseProcess" column="case_process"/>
            <result property="caseProcessName" column="case_process_name"/>
            <result property="expire" column="expire"/>
            <result property="candeType" column="cande_type"/>
            <result property="candeUnitId" column="cande_unit_id"/>
@@ -55,6 +57,8 @@
        node_icon,
        api_type,
        api,
        case_process,
        case_process_name,
        expire,
        cande_type,
        cande_unit_id,
@@ -85,6 +89,8 @@
            <if test="entity.nodeIcon != null">node_icon = #{entity.nodeIcon},</if>
            <if test="entity.apiType != null">api_type = #{entity.apiType},</if>
            <if test="entity.api != null">api = #{entity.api},</if>
            <if test="entity.caseProcess != null">case_process = #{entity.caseProcess},</if>
            <if test="entity.caseProcessName != null">case_process_name = #{entity.caseProcessName},</if>
            <if test="entity.expire != null">expire = #{entity.expire},</if>
            <if test="entity.candeType != null">cande_type = #{entity.candeType},</if>
            <if test="entity.candeUnitId != null">cande_unit_id = #{entity.candeUnitId},</if>
@@ -140,6 +146,12 @@
                <if test="terms.api != null and terms.api !=''">
                    and api = #{terms.api}
                </if>
                <if test="terms.caseProcess != null and terms.caseProcess !=''">
                    and case_process = #{terms.caseProcess}
                </if>
                <if test="terms.caseProcessName != null and terms.caseProcessName !=''">
                    and case_process_name = #{terms.caseProcessName}
                </if>
                <if test="terms.expire != null and terms.expire !=''">
                    and expire = #{terms.expire}
                </if>
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/dao/mapper/xml/FlowableNodeMapper.xml
@@ -5,7 +5,7 @@
 * @description: 自定义sql,请自行实现业务逻辑
 * @company: hugeinfo
 * @author: liyj
 * @time:2024-09-06 15:50:06
 * @time:2024-09-08 15:09:07
 * @version 1.0.0
-->
<mapper namespace="cn.huge.module.flow.dao.mapper.FlowableNodeMapper">
@@ -15,10 +15,6 @@
            <result property="name" column="name"/>
            <result property="des" column="des"/>
            <result property="icon" column="icon"/>
            <result property="apiType" column="api_type"/>
            <result property="api" column="api"/>
            <result property="caseProcess" column="case_process"/>
            <result property="caseProcessName" column="case_process_name"/>
            <result property="deleteStatus" column="delete_status"/>
            <result property="custId" column="cust_id"/>
            <result property="createTime" column="create_time"/>
@@ -32,10 +28,6 @@
        name,
        des,
        icon,
        api_type,
        api,
        case_process,
        case_process_name,
        delete_status,
        cust_id,
        create_time,
@@ -46,10 +38,6 @@
            <if test="entity.name != null">name = #{entity.name},</if>
            <if test="entity.des != null">des = #{entity.des},</if>
            <if test="entity.icon != null">icon = #{entity.icon},</if>
            <if test="entity.apiType != null">api_type = #{entity.apiType},</if>
            <if test="entity.api != null">api = #{entity.api},</if>
            <if test="entity.caseProcess != null">case_process = #{entity.caseProcess},</if>
            <if test="entity.caseProcessName != null">case_process_name = #{entity.caseProcessName},</if>
            <if test="entity.deleteStatus != null">delete_status = #{entity.deleteStatus},</if>
            <if test="entity.custId != null">cust_id = #{entity.custId},</if>
            <if test="entity.createTime != null">create_time = #{entity.createTime},</if>
@@ -70,18 +58,6 @@
                </if>
                <if test="terms.icon != null and terms.icon !=''">
                    and icon = #{terms.icon}
                </if>
                <if test="terms.apiType != null and terms.apiType !=''">
                    and api_type = #{terms.apiType}
                </if>
                <if test="terms.api != null and terms.api !=''">
                    and api = #{terms.api}
                </if>
                <if test="terms.caseProcess != null and terms.caseProcess !=''">
                    and case_process = #{terms.caseProcess}
                </if>
                <if test="terms.caseProcessName != null and terms.caseProcessName !=''">
                    and case_process_name = #{terms.caseProcessName}
                </if>
                <if test="terms.deleteStatus = null and terms.deleteStatus =''">
                    and delete_status = 0
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/bo/FlowNodeBO.java
@@ -7,7 +7,7 @@
 * @description: 业务流程节点表业务扩展类
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:08
 * @version: 1.0.0
 * @see cn.huge.module.flow.domain.po.FlowNode
 */
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/bo/FlowableNodeBO.java
@@ -7,7 +7,7 @@
 * @description: 工作流流程节点信息表业务扩展类
 * @company: hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:07
 * @version: 1.0.0
 * @see cn.huge.module.flow.domain.po.FlowableNode
 */
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/po/FlowNode.java
@@ -13,7 +13,7 @@
 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
 * @company:hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:08
 * @version 1.0.0
 */
@TableName(value = "dyh_flow_node")
@@ -85,6 +85,18 @@
    */
    @TableField(value = "api")
    private String api;
    /**
    * 对应纠纷进度
    */
    @TableField(value = "case_process")
    private String caseProcess;
    /**
    * 对应纠纷进度名称
    */
    @TableField(value = "case_process_name")
    private String caseProcessName;
    /**
    * 节点处理时限,单位:天
@@ -189,4 +201,16 @@
    @TableField(value = "update_time")
    private Date updateTime;
    /**
     * 流程实例编号
     */
    @TableField(exist = false)
    private String processInstanceId;
    /**
     * 流程实例任务编号
     */
    @TableField(exist = false)
    private String processTaskId;
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/domain/po/FlowableNode.java
@@ -13,7 +13,7 @@
 * @description: PO中的属性与数据表是一一对应关系,如需根据业务处理不同,请使用BO对象。
 * @company:hugeinfo
 * @author: liyj
 * @time: 2024-09-06 15:50:06
 * @time: 2024-09-08 15:09:07
 * @version 1.0.0
 */
@TableName(value = "dyh_flowable_node")
@@ -43,30 +43,6 @@
    */
    @TableField(value = "icon")
    private String icon;
    /**
    * 对应请求接口方式,POST:post请求,GET:get请求,PUT:put请求,DELETE:delete请求
    */
    @TableField(value = "api_type")
    private String apiType;
    /**
    * 对应请求接口
    */
    @TableField(value = "api")
    private String api;
    /**
    * 对应纠纷进度
    */
    @TableField(value = "case_process")
    private String caseProcess;
    /**
    * 对应纠纷进度名称
    */
    @TableField(value = "case_process_name")
    private String caseProcessName;
    /**
    * 删除状态,0:未删除,1:已删除
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowInfoService.java
@@ -2,11 +2,24 @@
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.FieldUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.base.common.utils.ObjectUtils;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.flow.dao.mapper.FlowInfoMapper;
import cn.huge.module.flow.domain.po.FlowInfo;
import cn.huge.module.flow.domain.po.FlowNode;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
@@ -38,7 +51,18 @@
    private FlowInfoMapper mapper;
    @Autowired
    private FlowNodeService flowNodeService;
    @Autowired
    private UtilsClientImpl utilsClient;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private HistoryService historyService;
    @Autowired
    private RepositoryService repositoryService;
    /**
    * 更新对象
@@ -130,4 +154,124 @@
        }
    }
    /**
     * 封装任务节点
     * @param flowableId 流程定义编号
     * @param task 流程任务
     * @return FlowNodeBaseDTO
     */
    public FlowNode getFlowNode(String flowableId, Task task){
        // 封装任务节点
        FlowNode flowNode = null;
        if (ObjectUtils.isNotEmpty(task)) {
            flowNode = flowNodeService.listByFlowAndNode(flowableId, task.getTaskDefinitionKey());
            if (ObjectUtils.isNotEmpty(flowNode)) {
                flowNode.setProcessInstanceId(task.getProcessInstanceId());
                flowNode.setProcessTaskId(task.getId());
            }
        }
        return flowNode;
    }
    /**
     * 单节点业务操作-根据流程编号启动流程
     * @param flowableId 流程定义编号
     * @param businessId 业务编号
     * @return FlowNodeBaseDTO
     */
    public FlowNode startFlow(String flowableId, String businessId) {
        try {
            // 启动任务
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(flowableId, businessId);
            Task nextTask = getTaskByProcdefId(processInstance.getId());
            // 封装任务节点
            FlowNode flowNode = this.getFlowNode(flowableId, nextTask);
            return flowNode;
        }catch (Exception e){
            log.error("service方法[FlowInfoService.startFlow]调用异常:"+e, e);
            throw new ServiceException("FlowInfoService.startFlow", e);
        }
    }
    /**
     * 单节点业务操作-通过当前任务编号完成当前任务
     * @param flowableId 流程定义编号
     * @param taskId 任务编号
     * @param operation 操作调解
     * @param handlerUserId 任务执行者
     * @return FlowNodeBaseDTO
     */
    public FlowNode completeTask(String flowableId, String taskId, String operation, String handlerUserId) {
        try{
            Task task = findTaskById(taskId);
            task.setAssignee(handlerUserId);
            Map flowParam = Maps.newHashMap();
            flowParam.put("operation", operation);
            taskService.complete(task.getId(), flowParam);
            Task nextTask = getTaskByProcdefId(task.getProcessInstanceId());
            FlowNode flowNode = this.getFlowNode(flowableId, nextTask);
            return flowNode;
        }catch (Exception e){
            log.error("service方法[FlowInfoService.completeByTaskId]调用异常:"+e, e);
            throw new ServiceException("FlowInfoService.completeByTaskId", e);
        }
    }
    /**
     * 单节点业务操作-任务指定人员
     * @param taskId 任务编号
     * @param handlerUserId 任务候选人
     */
    public void appointTaskOwner(String taskId, String handlerUserId) {
        try{
            Task task = findTaskById(taskId);
            taskService.addCandidateUser(task.getId(), handlerUserId);
        }catch (Exception e){
            log.error("service方法[FlowInfoService.appointTaskOwner]调用异常:"+e, e);
            throw new ServiceException("FlowInfoService.appointTaskOwner", e);
        }
    }
    /**
     * 根据流程实例Id获取任务
     * @param processInstanceId 流程实例Id
     * @return Task
     */
    public Task getTaskByProcdefId(String processInstanceId){
        Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
        return task;
    }
    /**
     * 根据任务ID,获取任务
     * @param taskId 任务ID
     * @return Task
     */
    public Task findTaskById(String taskId) {
        return taskService.createTaskQuery().taskId(taskId).singleResult();
    }
    /**
     * 根据流程实例Id获取当前所有任务
     * @param processInstanceId 流程示例编号
     * @return List<Task>
     */
    public List<Task> getTaskByProcdefIds(String processInstanceId){
        List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
        return tasks;
    }
    /**
     * 结束流程
     * @param processInstanceId 流程示例编号
     */
    public void endFlow(String processInstanceId) {
        try{
            runtimeService.deleteProcessInstance(processInstanceId,"");
        }catch (Exception e){
            log.error("service方法[FlowInfoService.endFlow]调用异常:"+e, e);
            throw new ServiceException("FlowInfoService.endFlow", e);
        }
    }
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowNodeService.java
@@ -6,6 +6,7 @@
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.flow.dao.mapper.FlowNodeMapper;
import cn.huge.module.flow.domain.po.FlowNode;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -26,7 +27,7 @@
 * @Description 业务流程节点表业务逻辑处理
 * @company hugeinfo
 * @author liyj
 * @Time 2024-09-06 15:50:06
 * @Time 2024-09-08 15:09:08
 * @version 1.0.0
 */
@Slf4j
@@ -130,4 +131,16 @@
        }
    }
    /**
     * 根据流程定义编号和节点编号查询
     * @param flowableId 流程定义编号
     * @param nodeId 节点编号
     * @return FlowNode
     */
    public FlowNode listByFlowAndNode(String flowableId, String nodeId){
        QueryWrapper<FlowNode> flowNodeQueryWrapper = new QueryWrapper<>();
        flowNodeQueryWrapper.eq("flowable_id", flowableId).eq("node_id", nodeId);
        return mapper.selectOne(flowNodeQueryWrapper);
    }
}
dyh-service/dyh-mediate/src/main/java/cn/huge/module/flow/service/FlowableNodeService.java
@@ -26,7 +26,7 @@
 * @Description 工作流流程节点信息表业务逻辑处理
 * @company hugeinfo
 * @author liyj
 * @Time 2024-09-06 15:50:06
 * @Time 2024-09-08 15:09:07
 * @version 1.0.0
 */
@Slf4j
dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_LFDJ_3LEVEL_V1.bpmn20.xml
New file
@@ -0,0 +1,343 @@
<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
  <process id="GZDYH_LFDJ_3LEVEL_V1" name="GZDYH_LFDJ_3LEVEL_V1" isExecutable="true">
    <documentation>GZDYH_LFDJ_3LEVEL_V1</documentation>
    <startEvent id="START" name="开始"/>
    <userTask id="ZJ_DFP" name="镇街综治中心待分派"/>
    <sequenceFlow id="sid-B31A9E23-36FD-4F62-B43A-78565EB5F13C" sourceRef="START" targetRef="ZJ_DFP"/>
    <userTask id="ZJ_DSL" name="镇街级组织待受理"/>
    <userTask id="BLFK" name="办理反馈"/>
    <userTask id="JASQ" name="结案申请"/>
    <userTask id="JASH" name="结案审核"/>
    <userTask id="ZJ_HTSH" name="镇街交办回退-镇街综治中心待审核"/>
    <userTask id="QJ_SBSH" name="镇街上报-区综治中心待审核"/>
    <userTask id="QJ_DFP" name="区综治中心待分派"/>
    <userTask id="QJ_DSL" name="区级组织待受理"/>
    <userTask id="QJ_HTSH" name="区交办回退-区综治中心待审核"/>
    <sequenceFlow id="sid-BB5A459C-B054-420A-923C-066CEB37F080" name="受理" sourceRef="QJ_DSL" targetRef="BLFK"/>
    <userTask id="SJ_SBSH" name="区上报-市综治中心待审核"/>
    <userTask id="SJ_DFP" name="市综治中心待分派"/>
    <userTask id="SJ_HTSH" name="市交办回退-市综治中心待审核"/>
    <userTask id="SJ_DSL" name="市级组织待受理"/>
    <userTask id="DSRPJ" name="当事人评价"/>
    <userTask id="JAGD" name="结案归档"/>
    <endEvent id="END" name="结束"/>
    <sequenceFlow id="sid-0BE7C326-1F8B-4223-B72C-06000E33D80C" sourceRef="JAGD" targetRef="END"/>
    <sequenceFlow id="sid-13C1AC7D-ACE2-45AE-8B02-D9A6E5ADF777" name="通过" sourceRef="BLFK" targetRef="JASQ">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-97B79C3A-867D-4057-86E1-58626E22F7E3" name="通过" sourceRef="JASQ" targetRef="JASH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-92A3C4E4-5675-4099-BD6C-E0E0D9742620" name="结案审核同意" sourceRef="JASH" targetRef="DSRPJ">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jash_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-B38ABFCE-C643-449F-8AE3-058FE0997A12" name="结案审核不同意" sourceRef="JASH" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jash_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-27E60A97-AC85-4978-AC3F-3D1A52A2B3A8" name="通过" sourceRef="DSRPJ" targetRef="JAGD">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-4E2FBB65-5E57-4536-8F84-A754A1E0A546" name="受理" sourceRef="SJ_DSL" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sl'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-7D5F25D3-BFF5-4CCC-BBEE-988340FDBBDC" name="区交办区级组织回退申请" sourceRef="QJ_DSL" targetRef="QJ_HTSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsq'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-C180B358-6A35-4378-8CA9-5BAB85FE89F4" name="区上报审核同意" sourceRef="SJ_SBSH" targetRef="SJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sbsh_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-0DE15696-ADC0-4E8B-A261-B5B5645FF355" name="市交办区综治中心" sourceRef="SJ_DFP" targetRef="QJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jb_zzzx'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-8719B46B-46EE-4612-95D2-3BEF182D783A" name="受理" sourceRef="QJ_DFP" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sl'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-A4FC5FA9-BF8D-473C-A082-3C57FE12D4F8" name="受理" sourceRef="ZJ_DFP" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sl'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-B67F098E-0836-4721-890A-F97A5261D9E7" name="镇街交办镇街级组织" sourceRef="ZJ_DFP" targetRef="ZJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jb_zszz'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-8652BBA6-729E-43BC-BF51-236C28FF0941" name="镇街交办回退审核不同意" sourceRef="ZJ_HTSH" targetRef="ZJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-A8908233-78BC-453D-B685-D4482C4A844D" name="镇街交办回退申请" sourceRef="ZJ_DSL" targetRef="ZJ_HTSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsq'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-98415952-9130-4812-85B7-7AAAFEA61B08" name="镇街交办回退审核同意" sourceRef="ZJ_HTSH" targetRef="ZJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-D4784E91-83A1-4B03-8A65-218763D689D9" name="受理" sourceRef="ZJ_DSL" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sl'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-8A779264-9E58-495C-A1E3-118D4099F5FB" name="镇街上报" sourceRef="ZJ_DFP" targetRef="QJ_SBSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sb'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-A06559C9-EAA5-4878-80EE-8E7BE802E321" name="镇街上报审核不同意" sourceRef="QJ_SBSH" targetRef="ZJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sbsh_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-B4976622-2E0D-4FB5-8DDC-077B9B556183" name="区交办镇街综治中心回退申请" sourceRef="ZJ_DFP" targetRef="QJ_HTSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsq'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-8E3D0F8C-693B-4AE9-9D12-A97EC477C082" name="区交办回退审核同意" sourceRef="QJ_HTSH" targetRef="QJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-3009265B-2E06-4F4D-9C49-E09F706A8E23" name="区交办区级组织回退审核不同意" sourceRef="QJ_HTSH" targetRef="QJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-0553BC77-9DD8-4E22-857A-7ECD4C467398" name="镇街上报审核同意" sourceRef="QJ_SBSH" targetRef="QJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sbsh_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-E5D28687-1705-499F-B14D-93BE28258667" name="区上报审核不同意" sourceRef="SJ_SBSH" targetRef="QJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sbsh_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-5A452188-7F4A-4160-A8E1-7426B2E324E5" name="区交办镇街综治中心回退审核不同意" sourceRef="QJ_HTSH" targetRef="ZJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_bty_zj'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-84E57742-F82B-4B9B-A71B-ABF25770A9CC" name="市交办区综治中心回退申请" sourceRef="QJ_DFP" targetRef="SJ_HTSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsq'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-6F8353BD-DBF4-405E-9CAD-B2CFFD70804C" name="区交办镇街综治中心" sourceRef="QJ_DFP" targetRef="ZJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jb_zzzx'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-9E45208D-BE9B-4656-887D-DD5B989C8072" name="区交办区级组织" sourceRef="QJ_DFP" targetRef="QJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jb_zszz'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-4CA7C483-75FE-48C0-90C3-7FB895B04DC7" name="区上报" sourceRef="QJ_DFP" targetRef="SJ_SBSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sb'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-04A5C662-116F-469A-B85F-4947C7330970" name="市交办区综治中心回退审核不同意" sourceRef="SJ_HTSH" targetRef="QJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_bty_qj'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-F8079D11-8A61-4AF1-89B4-194FE609610C" name="市交办市级组织回退审核不同意" sourceRef="SJ_HTSH" targetRef="SJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-4DC80088-03E0-4790-9A32-5F0361EF0583" name="市交办市级组织回退申请" sourceRef="SJ_DSL" targetRef="SJ_HTSH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsq'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-E51C86AA-C90E-4CB1-8D6E-776DADCBFE49" name="市交办市级组织" sourceRef="SJ_DFP" targetRef="SJ_DSL">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jb_zszz'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-080C79C3-4D90-407B-8451-F88A2C4D9F7A" name="市交办回退审核同意" sourceRef="SJ_HTSH" targetRef="SJ_DFP">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='htsh_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-0B45B4F0-4106-4B5E-A8F4-EFC9832072F8" name="受理" sourceRef="SJ_DFP" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='sl'}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_GZDYH_LFDJ_3LEVEL_V1">
    <bpmndi:BPMNPlane bpmnElement="GZDYH_LFDJ_3LEVEL_V1" id="BPMNPlane_GZDYH_LFDJ_3LEVEL_V1">
      <bpmndi:BPMNShape bpmnElement="START" id="BPMNShape_START">
        <omgdc:Bounds height="30.0" width="30.0" x="14.999999552965178" y="159.99999560415753"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ZJ_DFP" id="BPMNShape_ZJ_DFP">
        <omgdc:Bounds height="80.0" width="100.00000000000001" x="89.99999731779103" y="134.99999597668656"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ZJ_DSL" id="BPMNShape_ZJ_DSL">
        <omgdc:Bounds height="80.0" width="100.0" x="529.9999853968624" y="29.999998658895528"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="BLFK" id="BPMNShape_BLFK">
        <omgdc:Bounds height="80.0" width="99.99999999999977" x="922.4999754503378" y="134.99999597668656"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JASQ" id="BPMNShape_JASQ">
        <omgdc:Bounds height="80.0" width="100.0" x="1067.4999891966586" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JASH" id="BPMNShape_JASH">
        <omgdc:Bounds height="80.0" width="100.0" x="1212.4999891966586" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ZJ_HTSH" id="BPMNShape_ZJ_HTSH">
        <omgdc:Bounds height="80.0" width="100.00000000000009" x="239.999978542329" y="29.999998658895528"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="QJ_SBSH" id="BPMNShape_QJ_SBSH">
        <omgdc:Bounds height="80.00000000000006" width="99.99999999999996" x="89.99999731779103" y="459.99998420476953"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="QJ_DFP" id="BPMNShape_QJ_DFP">
        <omgdc:Bounds height="80.00000000000006" width="100.0" x="314.99998591840307" y="459.9999773502357"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="QJ_DSL" id="BPMNShape_QJ_DSL">
        <omgdc:Bounds height="80.0" width="100.0" x="539.9999839067463" y="269.9999879300598"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="QJ_HTSH" id="BPMNShape_QJ_HTSH">
        <omgdc:Bounds height="80.0" width="99.99999999999994" x="314.9999906122686" y="269.9999879300598"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="SJ_SBSH" id="BPMNShape_SJ_SBSH">
        <omgdc:Bounds height="80.00000000000011" width="99.99999999999999" x="89.9999986588955" y="689.9999897181989"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="SJ_DFP" id="BPMNShape_SJ_DFP">
        <omgdc:Bounds height="80.00000000000011" width="100.0" x="314.9999906122686" y="689.9999794363981"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="SJ_HTSH" id="BPMNShape_SJ_HTSH">
        <omgdc:Bounds height="80.0" width="99.99999999999989" x="624.9999861419203" y="569.9999636411679"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="SJ_DSL" id="BPMNShape_SJ_DSL">
        <omgdc:Bounds height="80.0" width="100.0" x="897.4999653175485" y="569.9999551475067"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="DSRPJ" id="BPMNShape_DSRPJ">
        <omgdc:Bounds height="80.0" width="100.0" x="1212.4999728053817" y="279.99999895691855"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JAGD" id="BPMNShape_JAGD">
        <omgdc:Bounds height="79.99999999999994" width="100.0" x="1212.4999542012827" y="419.9999874830249"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="END" id="BPMNShape_END">
        <omgdc:Bounds height="28.0" width="28.0" x="1248.4999705925593" y="564.9999905377625"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-B31A9E23-36FD-4F62-B43A-78565EB5F13C" id="BPMNEdge_sid-B31A9E23-36FD-4F62-B43A-78565EB5F13C">
        <omgdi:waypoint x="44.94999804290022" y="174.99999565478763"/>
        <omgdi:waypoint x="89.99999731779103" y="174.9999958073552"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-F8079D11-8A61-4AF1-89B4-194FE609610C" id="BPMNEdge_sid-F8079D11-8A61-4AF1-89B4-194FE609610C">
        <omgdi:waypoint x="724.9499861417911" y="589.9999635924937"/>
        <omgdi:waypoint x="897.4999653175485" y="589.9999551937473"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-92A3C4E4-5675-4099-BD6C-E0E0D9742620" id="BPMNEdge_sid-92A3C4E4-5675-4099-BD6C-E0E0D9742620">
        <omgdi:waypoint x="1262.499984674927" y="214.94999798834328"/>
        <omgdi:waypoint x="1262.499977321461" y="279.99999895691855"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-5A452188-7F4A-4160-A8E1-7426B2E324E5" id="BPMNEdge_sid-5A452188-7F4A-4160-A8E1-7426B2E324E5">
        <omgdi:waypoint x="314.9999906122686" y="277.32953442584886"/>
        <omgdi:waypoint x="189.94999731779103" y="195.62073459326655"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-A06559C9-EAA5-4878-80EE-8E7BE802E321" id="BPMNEdge_sid-A06559C9-EAA5-4878-80EE-8E7BE802E321">
        <omgdi:waypoint x="139.9999985196551" y="459.99998420476953"/>
        <omgdi:waypoint x="139.9999973224324" y="214.94999597668658"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-97B79C3A-867D-4057-86E1-58626E22F7E3" id="BPMNEdge_sid-97B79C3A-867D-4057-86E1-58626E22F7E3">
        <omgdi:waypoint x="1167.4499891966586" y="174.99999798834327"/>
        <omgdi:waypoint x="1212.4999891966393" y="174.99999798834327"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B38ABFCE-C643-449F-8AE3-058FE0997A12" id="BPMNEdge_sid-B38ABFCE-C643-449F-8AE3-058FE0997A12">
        <omgdi:waypoint x="1262.4999891966586" y="134.99999798834327"/>
        <omgdi:waypoint x="1262.4999891966586" y="68.00000020861626"/>
        <omgdi:waypoint x="972.4999754503377" y="68.00000020861626"/>
        <omgdi:waypoint x="972.4999754503377" y="134.99999597668656"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-84E57742-F82B-4B9B-A71B-ABF25770A9CC" id="BPMNEdge_sid-84E57742-F82B-4B9B-A71B-ABF25770A9CC">
        <omgdi:waypoint x="367.7237370172767" y="539.9499773502358"/>
        <omgdi:waypoint x="624.9999861419203" y="629.6513046901603"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-7D5F25D3-BFF5-4CCC-BBEE-988340FDBBDC" id="BPMNEdge_sid-7D5F25D3-BFF5-4CCC-BBEE-988340FDBBDC">
        <omgdi:waypoint x="539.9999839066169" y="329.99998483066406"/>
        <omgdi:waypoint x="414.9499906122686" y="329.99998790547113"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-3009265B-2E06-4F4D-9C49-E09F706A8E23" id="BPMNEdge_sid-3009265B-2E06-4F4D-9C49-E09F706A8E23">
        <omgdi:waypoint x="414.9499906122686" y="289.9999879300598"/>
        <omgdi:waypoint x="539.9999839066215" y="289.9999879300598"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0DE15696-ADC0-4E8B-A261-B5B5645FF355" id="BPMNEdge_sid-0DE15696-ADC0-4E8B-A261-B5B5645FF355">
        <omgdi:waypoint x="339.9999903617707" y="689.9999794363981"/>
        <omgdi:waypoint x="339.999990165234" y="540.6698992893806"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-27E60A97-AC85-4978-AC3F-3D1A52A2B3A8" id="BPMNEdge_sid-27E60A97-AC85-4978-AC3F-3D1A52A2B3A8">
        <omgdi:waypoint x="1262.4999674899245" y="359.94999895691853"/>
        <omgdi:waypoint x="1262.4999595100956" y="419.9999874830249"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0BE7C326-1F8B-4223-B72C-06000E33D80C" id="BPMNEdge_sid-0BE7C326-1F8B-4223-B72C-06000E33D80C">
        <omgdi:waypoint x="1262.4999597040683" y="499.94998748302487"/>
        <omgdi:waypoint x="1262.4999686641738" y="564.9999905377625"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-C180B358-6A35-4378-8CA9-5BAB85FE89F4" id="BPMNEdge_sid-C180B358-6A35-4378-8CA9-5BAB85FE89F4">
        <omgdi:waypoint x="189.94999724572128" y="729.9999874333544"/>
        <omgdi:waypoint x="314.99998880685246" y="729.9999817189581"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-6F8353BD-DBF4-405E-9CAD-B2CFFD70804C" id="BPMNEdge_sid-6F8353BD-DBF4-405E-9CAD-B2CFFD70804C">
        <omgdi:waypoint x="337.0279577189482" y="459.9999773502357"/>
        <omgdi:waypoint x="165.6643329875281" y="214.94999597668658"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-BB5A459C-B054-420A-923C-066CEB37F080" id="BPMNEdge_sid-BB5A459C-B054-420A-923C-066CEB37F080">
        <omgdi:waypoint x="639.9499839067461" y="292.35292976823126"/>
        <omgdi:waypoint x="922.4999754503378" y="192.62940708035316"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-04A5C662-116F-469A-B85F-4947C7330970" id="BPMNEdge_sid-04A5C662-116F-469A-B85F-4947C7330970">
        <omgdi:waypoint x="624.9999861419201" y="592.2580303812292"/>
        <omgdi:waypoint x="414.94998591840306" y="517.7241686769145"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-E51C86AA-C90E-4CB1-8D6E-776DADCBFE49" id="BPMNEdge_sid-E51C86AA-C90E-4CB1-8D6E-776DADCBFE49">
        <omgdi:waypoint x="414.94999061226815" y="722.1286382139056"/>
        <omgdi:waypoint x="897.4999653175482" y="646.1623280576964"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-8719B46B-46EE-4612-95D2-3BEF182D783A" id="BPMNEdge_sid-8719B46B-46EE-4612-95D2-3BEF182D783A">
        <omgdi:waypoint x="414.9499859180182" y="499.9999773502358"/>
        <omgdi:waypoint x="947.4999754503378" y="499.9999773502358"/>
        <omgdi:waypoint x="947.4999754503378" y="214.94999597668658"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-13C1AC7D-ACE2-45AE-8B02-D9A6E5ADF777" id="BPMNEdge_sid-13C1AC7D-ACE2-45AE-8B02-D9A6E5ADF777">
        <omgdi:waypoint x="1022.4499754503375" y="174.99999666966758"/>
        <omgdi:waypoint x="1067.4999891966297" y="174.99999729466862"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-E5D28687-1705-499F-B14D-93BE28258667" id="BPMNEdge_sid-E5D28687-1705-499F-B14D-93BE28258667">
        <omgdi:waypoint x="177.67079992478847" y="689.9999897181989"/>
        <omgdi:waypoint x="319.1602666546586" y="539.9499773502358"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0B45B4F0-4106-4B5E-A8F4-EFC9832072F8" id="BPMNEdge_sid-0B45B4F0-4106-4B5E-A8F4-EFC9832072F8">
        <omgdi:waypoint x="414.9499906111769" y="749.9999794363982"/>
        <omgdi:waypoint x="1021.4999754503376" y="749.9999794363982"/>
        <omgdi:waypoint x="1021.4999754503376" y="214.94999597668658"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-A8908233-78BC-453D-B685-D4482C4A844D" id="BPMNEdge_sid-A8908233-78BC-453D-B685-D4482C4A844D">
        <omgdi:waypoint x="529.9999853968442" y="49.99999865889553"/>
        <omgdi:waypoint x="339.9499785422963" y="49.99999865889553"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-4CA7C483-75FE-48C0-90C3-7FB895B04DC7" id="BPMNEdge_sid-4CA7C483-75FE-48C0-90C3-7FB895B04DC7">
        <omgdi:waypoint x="314.99998591840307" y="520.8081864151441"/>
        <omgdi:waypoint x="116.11666517401628" y="689.9999897181989"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-080C79C3-4D90-407B-8451-F88A2C4D9F7A" id="BPMNEdge_sid-080C79C3-4D90-407B-8451-F88A2C4D9F7A">
        <omgdi:waypoint x="645.1884919069653" y="649.9499636411679"/>
        <omgdi:waypoint x="414.94999061226855" y="697.8413389092494"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-9E45208D-BE9B-4656-887D-DD5B989C8072" id="BPMNEdge_sid-9E45208D-BE9B-4656-887D-DD5B989C8072">
        <omgdi:waypoint x="414.94998591840306" y="479.9999773502357"/>
        <omgdi:waypoint x="589.9999839067463" y="479.9999773502357"/>
        <omgdi:waypoint x="589.9999839067463" y="349.9499879300598"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-D4784E91-83A1-4B03-8A65-218763D689D9" id="BPMNEdge_sid-D4784E91-83A1-4B03-8A65-218763D689D9">
        <omgdi:waypoint x="629.9499853968623" y="69.99999865889552"/>
        <omgdi:waypoint x="947.4999754503378" y="69.99999865889552"/>
        <omgdi:waypoint x="947.4999754503378" y="134.99999597668656"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-4DC80088-03E0-4790-9A32-5F0361EF0583" id="BPMNEdge_sid-4DC80088-03E0-4790-9A32-5F0361EF0583">
        <omgdi:waypoint x="897.4999653170802" y="629.9999551937474"/>
        <omgdi:waypoint x="724.9499830196238" y="629.9999635924936"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-4E2FBB65-5E57-4536-8F84-A754A1E0A546" id="BPMNEdge_sid-4E2FBB65-5E57-4536-8F84-A754A1E0A546">
        <omgdi:waypoint x="972.4999653418569" y="569.9999551475067"/>
        <omgdi:waypoint x="972.4999744268235" y="214.94999597668658"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-8E3D0F8C-693B-4AE9-9D12-A97EC477C082" id="BPMNEdge_sid-8E3D0F8C-693B-4AE9-9D12-A97EC477C082">
        <omgdi:waypoint x="364.9999896240863" y="349.9499879300598"/>
        <omgdi:waypoint x="364.9999869053501" y="459.9999773502357"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B4976622-2E0D-4FB5-8DDC-077B9B556183" id="BPMNEdge_sid-B4976622-2E0D-4FB5-8DDC-077B9B556183">
        <omgdi:waypoint x="186.64687813794717" y="214.94999597668658"/>
        <omgdi:waypoint x="314.9999906122685" y="329.110560222979"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-8652BBA6-729E-43BC-BF51-236C28FF0941" id="BPMNEdge_sid-8652BBA6-729E-43BC-BF51-236C28FF0941">
        <omgdi:waypoint x="339.94997854232906" y="89.99999865889554"/>
        <omgdi:waypoint x="529.9999853968624" y="89.99999865889552"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-B67F098E-0836-4721-890A-F97A5261D9E7" id="BPMNEdge_sid-B67F098E-0836-4721-890A-F97A5261D9E7">
        <omgdi:waypoint x="189.94999731779103" y="154.99999597668656"/>
        <omgdi:waypoint x="554.9999853968624" y="154.99999597668656"/>
        <omgdi:waypoint x="554.9999853968624" y="109.94999865889554"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-98415952-9130-4812-85B7-7AAAFEA61B08" id="BPMNEdge_sid-98415952-9130-4812-85B7-7AAAFEA61B08">
        <omgdi:waypoint x="239.999978542329" y="69.99999865889552"/>
        <omgdi:waypoint x="139.999997317791" y="69.99999865889552"/>
        <omgdi:waypoint x="139.99999731779104" y="134.99999597668656"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-8A779264-9E58-495C-A1E3-118D4099F5FB" id="BPMNEdge_sid-8A779264-9E58-495C-A1E3-118D4099F5FB">
        <omgdi:waypoint x="114.99999731779104" y="214.94999597668658"/>
        <omgdi:waypoint x="114.99999731779101" y="459.99998420476953"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-A4FC5FA9-BF8D-473C-A082-3C57FE12D4F8" id="BPMNEdge_sid-A4FC5FA9-BF8D-473C-A082-3C57FE12D4F8">
        <omgdi:waypoint x="189.94999731771603" y="174.99999597668656"/>
        <omgdi:waypoint x="922.499975450157" y="174.99999597668656"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0553BC77-9DD8-4E22-857A-7ECD4C467398" id="BPMNEdge_sid-0553BC77-9DD8-4E22-857A-7ECD4C467398">
        <omgdi:waypoint x="189.94999731779097" y="499.99998268153973"/>
        <omgdi:waypoint x="314.99998591792496" y="499.99997887194235"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>
dyh-service/dyh-mediate/src/main/resources/processes/GZDYH_ZXSL_3LEVEL_V1.bpmn20.xml
New file
@@ -0,0 +1,96 @@
<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
  <process id="GZDYH_ZXSL_3LEVEL_V1" name="GZDYH_ZXSL_3LEVEL_V1" isExecutable="true">
    <documentation>GZDYH_ZXSL_3LEVEL_V1</documentation>
    <startEvent id="ZXSL_START" name="开始"/>
    <userTask id="ZXSL" name="自行受理"/>
    <userTask id="BLFK" name="办理反馈"/>
    <userTask id="DSRPJ" name="当事人评价"/>
    <userTask id="JAGD" name="结案归档"/>
    <userTask id="JASH" name="结案审核"/>
    <endEvent id="ZXSL_END" name="结束"/>
    <userTask id="JASQ" name="结案申请"/>
    <sequenceFlow id="sid-03DCE158-DCD9-4C4F-803A-FA2795072196" name="结案审核不同意不同意" sourceRef="JASH" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jash_bty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-E2A63ACD-76CD-4419-A771-C082334A3A11" sourceRef="ZXSL_START" targetRef="ZXSL"/>
    <sequenceFlow id="sid-6032A3F4-92DC-4CFE-BCE7-404BB56C66C5" name="通过" sourceRef="ZXSL" targetRef="BLFK">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-A0580378-38E0-44D8-981B-9D048ED42E97" name="通过" sourceRef="BLFK" targetRef="JASQ">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-0AE3E811-3EBD-4891-B2BD-F2E091E41541" name="通过" sourceRef="JASQ" targetRef="JASH">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-78554576-20C8-4A98-9A33-92DD5542AA27" name="结案审核同意" sourceRef="JASH" targetRef="DSRPJ">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='jash_ty'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-15046AD2-218B-4567-B05A-26B2D0069DE2" name="通过" sourceRef="DSRPJ" targetRef="JAGD">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${operation=='forward'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5" sourceRef="JAGD" targetRef="ZXSL_END"/>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_GZDYH_ZXSL_3LEVEL_V1">
    <bpmndi:BPMNPlane bpmnElement="GZDYH_ZXSL_3LEVEL_V1" id="BPMNPlane_GZDYH_ZXSL_3LEVEL_V1">
      <bpmndi:BPMNShape bpmnElement="ZXSL_START" id="BPMNShape_ZXSL_START">
        <omgdc:Bounds height="30.0" width="30.0" x="75.0" y="160.00001244246837"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ZXSL" id="BPMNShape_ZXSL">
        <omgdc:Bounds height="80.0" width="99.99999999999997" x="150.0" y="134.99998591840347"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="BLFK" id="BPMNShape_BLFK">
        <omgdc:Bounds height="80.0" width="100.0" x="314.9999953061343" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="DSRPJ" id="BPMNShape_DSRPJ">
        <omgdc:Bounds height="80.0" width="100.0" x="794.9999881535771" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JAGD" id="BPMNShape_JAGD">
        <omgdc:Bounds height="80.0" width="100.0" x="959.9999856948855" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JASH" id="BPMNShape_JASH">
        <omgdc:Bounds height="80.0" width="100.0" x="659.9999901652337" y="134.99999798834327"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ZXSL_END" id="BPMNShape_ZXSL_END">
        <omgdc:Bounds height="28.0" width="28.0" x="1109.9999834597113" y="161.00001205503818"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="JASQ" id="BPMNShape_JASQ">
        <omgdc:Bounds height="80.0" width="100.0" x="479.99999284744274" y="134.99998591840347"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-03DCE158-DCD9-4C4F-803A-FA2795072196" id="BPMNEdge_sid-03DCE158-DCD9-4C4F-803A-FA2795072196">
        <omgdi:waypoint x="684.9999901652337" y="134.99999798834327"/>
        <omgdi:waypoint x="684.9999901652337" y="105.00000053644179"/>
        <omgdi:waypoint x="389.9999953061343" y="105.00000053644179"/>
        <omgdi:waypoint x="389.9999953061343" y="134.99999798834327"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-E2A63ACD-76CD-4419-A771-C082334A3A11" id="BPMNEdge_sid-E2A63ACD-76CD-4419-A771-C082334A3A11">
        <omgdi:waypoint x="104.94999849155933" y="175.00000882555042"/>
        <omgdi:waypoint x="150.0" y="174.99999796274022"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-A0580378-38E0-44D8-981B-9D048ED42E97" id="BPMNEdge_sid-A0580378-38E0-44D8-981B-9D048ED42E97">
        <omgdi:waypoint x="414.94999530600165" y="174.9999943307857"/>
        <omgdi:waypoint x="479.9999928473666" y="174.99998957230346"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-78554576-20C8-4A98-9A33-92DD5542AA27" id="BPMNEdge_sid-78554576-20C8-4A98-9A33-92DD5542AA27">
        <omgdi:waypoint x="759.9499901651751" y="174.99999798834327"/>
        <omgdi:waypoint x="794.9999881535146" y="174.99999798834327"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5" id="BPMNEdge_sid-FE66E67A-D6D4-4E68-BB7E-14A17E87B9E5">
        <omgdi:waypoint x="1059.9499856948855" y="175.00000415177684"/>
        <omgdi:waypoint x="1109.999983378599" y="175.0000103275493"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-6032A3F4-92DC-4CFE-BCE7-404BB56C66C5" id="BPMNEdge_sid-6032A3F4-92DC-4CFE-BCE7-404BB56C66C5">
        <omgdi:waypoint x="249.94999986861848" y="174.99998957230352"/>
        <omgdi:waypoint x="314.9999953060815" y="174.99999433078568"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-15046AD2-218B-4567-B05A-26B2D0069DE2" id="BPMNEdge_sid-15046AD2-218B-4567-B05A-26B2D0069DE2">
        <omgdi:waypoint x="894.9499881534662" y="174.99999798834327"/>
        <omgdi:waypoint x="959.9999856948592" y="174.99999798834327"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0AE3E811-3EBD-4891-B2BD-F2E091E41541" id="BPMNEdge_sid-0AE3E811-3EBD-4891-B2BD-F2E091E41541">
        <omgdi:waypoint x="579.9499928474428" y="174.99998600593358"/>
        <omgdi:waypoint x="659.9999901652095" y="174.99999338149593"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>
dyh-service/dyh-mediate/src/test/java/cn/huge/module/BuildCodeServiceTest.java
@@ -21,8 +21,7 @@
    @Test
    public void buildAllTest() {
        service.buildAll(basePackage, packageName, "CaseReturn", tableSchema, "dyh_case_return", author, version);
        service.buildAll(basePackage, packageName, "CaseAppear", tableSchema, "dyh_case_appear", author, version);
        service.buildAll(basePackage, packageName, "CaseInfoUnfold", tableSchema, "dyh_case_info_unfold", author, version);
    }
dyh-service/dyh-sys/src/test/java/cn/huge/module/BuildCodeServiceTest.java
@@ -21,7 +21,10 @@
    @Test
    public void buildAllTest() {
        service.buildAll(basePackage, packageName, className, tableSchema, tableName, author, version);
        service.buildAll(basePackage, "kind", "SyCause", tableSchema, "dyh_sy_cause", author, version);
        service.buildAll(basePackage, "kind", "SyCauseThird", tableSchema, "dyh_sy_cause_third", author, version);
        service.buildAll(basePackage, "kind", "SyIssue", tableSchema, "dyh_sy_issue", author, version);
        service.buildAll(basePackage, "kind", "SyRegion", tableSchema, "dyh_sy_region", author, version);
    }