From a903065d0a865deec05f1e53f9c096c5e931f786 Mon Sep 17 00:00:00 2001
From: wangwh <2397901735@qq.com>
Date: Sun, 29 Sep 2024 17:47:51 +0800
Subject: [PATCH] 自动评价定时任务 小程序是否可见接口

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/timer/scheduledTask.java                        |   52 +++++++++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseEvaluateMapper.xml     |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java          |   77 +++++++++++++++++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java |   28 ++++++++-
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml         |    3 +
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java              |    8 ++
 6 files changed, 165 insertions(+), 5 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
index 4a29820..8490553 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
@@ -5,15 +5,13 @@
 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.CaseInfoWeExcelDTO;
-import cn.huge.module.cases.domain.dto.CasePageDTO;
-import cn.huge.module.cases.domain.dto.CasePersonWeDTO;
-import cn.huge.module.cases.domain.dto.RegisterSaveDTO;
+import cn.huge.module.cases.domain.dto.*;
 import cn.huge.module.cases.domain.po.CaseInfo;
 import cn.huge.module.cases.service.CaseInfoService;
 import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.cust.dto.CtUserDTO;
 import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -457,6 +455,11 @@
         if (StringUtils.isNotBlank(infoProcessName)){
             terms.put("infoProcessName", infoProcessName);
         }
+        // 小程序是否可见,0:不可见,1:可见
+        String partyShow = request.getParameter("partyShow");
+        if (StringUtils.isNotBlank(partyShow)){
+            terms.put("partyShow", partyShow);
+        }
         // 意向调解组织编号
         String wantUnitId = request.getParameter("wantUnitId");
         if (StringUtils.isNotBlank(wantUnitId)){
@@ -735,4 +738,21 @@
             return ReturnFailUtils.getRepInfo();
         }
     }
+
+    /**
+     * 小程序是否可见修改修改
+     * @url {ctx}/api/web/caseInfo/updateVisibleStatus
+     * @return Object
+     * @CurrentUser String userId
+     */
+    @PostMapping("/updateVisibleStatus")
+    public Object updateVisibleStatus(@RequestBody CaseInfo caseInfo) {
+        try {
+            service.updateCaseInfo(caseInfo);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            log.error("Controller接口[CaseInfoWebController.statistics]请求异常:"+e, e);
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseEvaluateMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseEvaluateMapper.xml
index d1edcf1..e8b0388 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseEvaluateMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseEvaluateMapper.xml
@@ -163,4 +163,4 @@
         limit #{page.offset}, #{page.size}
     </select>
 
-</mapper> 
\ No newline at end of file
+</mapper>
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
index 8e27d9f..0508102 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
@@ -72,6 +72,7 @@
         <result property="processName" column="process_name"/>
         <result property="infoProcess" column="info_process"/>
         <result property="infoProcessName" column="info_process_name"/>
+        <result property="partyShow" column="party_show"/>
         <result property="wantUnitId" column="want_unit_id"/>
         <result property="wantUnitName" column="want_unit_name"/>
         <result property="wantUserId" column="want_user_id"/>
@@ -213,6 +214,7 @@
         want_unit_name,
         want_user_id,
         want_user_name,
+        party_show,
         delete_status,
         cust_id,
         create_time,
@@ -280,6 +282,7 @@
         <if test="entity.processName != null">process_name = #{entity.processName},</if>
         <if test="entity.infoProcess != null">info_process = #{entity.infoProcess},</if>
         <if test="entity.infoProcessName != null">info_process_name = #{entity.infoProcessName},</if>
+        <if test="entity.partyShow != null">party_show = #{entity.partyShow},</if>
         <if test="entity.wantUnitId != null">want_unit_id = #{entity.wantUnitId},</if>
         <if test="entity.wantUnitName != null">want_unit_name = #{entity.wantUnitName},</if>
         <if test="entity.wantUserId != null">want_user_id = #{entity.wantUserId},</if>
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
index 6a4667f..06fcb06 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseEvaluateService.java
@@ -245,4 +245,81 @@
         }
     }
 
+
+    /**
+     * 超时跳过评价
+     * @param idList 超时事件编号
+     */
+    public void autoArchive(List<String>idList){
+        try{
+            Date nowDate = DateUtils.getNowDate();
+            // 查询当事人评价任务
+            QueryWrapper<CaseTask> caseTaskQueryWrapper = new QueryWrapper<>();
+            caseTaskQueryWrapper.in("case_id", idList).eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex());
+            List<CaseTask> dsrpjCaseTaskList = caseTaskService.list(caseTaskQueryWrapper);
+            for(CaseTask dsrpjCaseTask: dsrpjCaseTaskList){
+                // 完成当前当事人评价任务
+                dsrpjCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
+//                dsrpjCaseTask.setHandleUserId(loginUser.getId());
+                dsrpjCaseTask.setHandleUserName("系统自动");
+                dsrpjCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+                dsrpjCaseTask.setHandleTime(nowDate);
+                dsrpjCaseTask.setUpdateTime(nowDate);
+                caseTaskService.updateCaseTask(dsrpjCaseTask);
+                // 完成当前当事人评价工作流任务
+                FlowNode dsrpjFlowNode = flowInfoService.completeTask(dsrpjCaseTask.getFlowableId(), dsrpjCaseTask.getProcessTaskId(),
+                        FlowableConsts.OPERATION_forward, "系统自动");
+                // 默认完成结案归档任务
+                CaseTask jagdCaseTask = new CaseTask();
+                jagdCaseTask.setId(utilsClient.getNewTimeId());
+                jagdCaseTask.setCaseId(dsrpjCaseTask.getCaseId());
+                jagdCaseTask.setFlowableId(dsrpjFlowNode.getFlowableId());
+                jagdCaseTask.setProcessInstanceId(dsrpjFlowNode.getProcessInstanceId());
+                jagdCaseTask.setProcessTaskId(dsrpjFlowNode.getProcessTaskId());
+                jagdCaseTask.setTaskType(CaseTaskConsts.TASK_TYPE_1);
+                jagdCaseTask.setNodeType(dsrpjFlowNode.getNodeType());
+                jagdCaseTask.setNodeId(dsrpjFlowNode.getNodeId());
+                jagdCaseTask.setNodeName(dsrpjFlowNode.getNodeName());
+                jagdCaseTask.setFlowId(dsrpjFlowNode.getFlowId());
+                jagdCaseTask.setNodeShowName(dsrpjFlowNode.getNodeShowName());
+                jagdCaseTask.setCaseTaskType(CaseTaskConsts.CASE_TASK_TYPE_1);
+                // 通过调度的,任务候选执行者类型是上一步骤选择
+                jagdCaseTask.setCandeType(CaseTaskConsts.CANDE_TYPE_1);
+                jagdCaseTask.setCandeUnitId(dsrpjCaseTask.getCandeUnitId());
+                jagdCaseTask.setCandeUnitName(dsrpjCaseTask.getCandeUnitName());
+                // 系不需要签收
+                jagdCaseTask.setSignStatus(CaseTaskConsts.SIGN_STATUS_0);
+                jagdCaseTask.setStatus(CaseTaskConsts.TASK_STATUS_2);
+                // 任务处理时限
+                if (dsrpjFlowNode.getExpire() != 0) {
+                    jagdCaseTask.setExpireTime(DateUtils.addDay(nowDate, dsrpjFlowNode.getExpire()));
+                }
+                jagdCaseTask.setHandleUnitName("系统自动");
+                jagdCaseTask.setHandleResult(CaseTaskConsts.HANDLE_RESULT_1);
+                jagdCaseTask.setHandleTime(nowDate);
+                jagdCaseTask.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+                jagdCaseTask.setCustId(dsrpjCaseTask.getCustId());
+                jagdCaseTask.setCreateTime(nowDate);
+                jagdCaseTask.setUpdateTime(nowDate);
+                caseTaskService.save(jagdCaseTask);
+                // 结束工作流流程
+                flowInfoService.completeTask(jagdCaseTask.getFlowableId(), jagdCaseTask.getProcessTaskId(),
+                        FlowableConsts.OPERATION_jb_zszz, "系统自动");
+                // 更新纠纷信息
+                CaseInfo caseInfoPO = new CaseInfo();
+                caseInfoPO.setId(dsrpjCaseTask.getCaseId());
+                caseInfoPO.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_7.getIndex());
+                caseInfoPO.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_7.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("[CaseEvaluateService.saveCaseEvaluateWechat]调用失败,异常信息:"+e, e);
+            throw new ServiceException("CaseEvaluateService.saveCaseEvaluateWechat", e);
+        }
+    }
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
index 0c2908c..0584249 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -245,6 +245,13 @@
             caseInfo.setCaseRef(utilsClient.createCaseRef());
             caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_1.getIndex());
             caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_1.getDes());
+            //默认小程序可见
+            if(ObjectUtils.isNotEmpty(caseInfo.getCanal())){
+                if(CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())){
+                    caseInfo.setPartyShow(1);
+                }
+            }
+            
             //todo case_title生成、经纬度转换
             if (0 == registerSaveDTO.getOperateType()) {
                 caseInfo.setInputUnitId(loginUser.getUnitId());
@@ -599,6 +606,7 @@
         caseInfo.setInputUserId(loginUser.getId());
         caseInfo.setInputUserName(loginUser.getTrueName());
         caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
+        caseInfo.setPartyShow(1);
         if(ObjectUtils.isEmpty(registerSaveDTO.getPeopleNum())){
             caseInfo.setPeopleNum(0);
         }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/timer/scheduledTask.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/timer/scheduledTask.java
new file mode 100644
index 0000000..4c17503
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/timer/scheduledTask.java
@@ -0,0 +1,52 @@
+package cn.huge.module.timer;
+
+import cn.huge.base.common.utils.DateUtils;
+import cn.huge.base.common.utils.IdUtils;
+import cn.huge.module.cases.domain.po.CaseEvaluate;
+import cn.huge.module.cases.domain.po.CaseTask;
+import cn.huge.module.cases.service.CaseEvaluateService;
+import cn.huge.module.cases.service.CaseTaskService;
+import cn.huge.module.client.api.impl.SysClientImpl;
+import cn.huge.module.flow.consts.FlowNodeEnum;
+import cn.huge.module.sys.constant.SyTimeEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import dm.jdbc.internal.convert.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @title: 定时器
+ * @description: 定时器方法
+ * @company: hugeinfo
+ * @author: wangwh
+ * @time: 2024-09-26 16:51:48
+ * @version: 1.0.0
+ */
+@Slf4j
+@Component
+public class scheduledTask {
+    @Autowired
+    private CaseEvaluateService evaluateService;
+    @Autowired
+    private CaseTaskService caseTaskService;
+    @Autowired
+    private SysClientImpl sysClient;
+
+//    @Scheduled(cron ="0 */1 * * * ?")
+    public void autoArchive(){
+        Date now = DateUtils.getNowDate();
+        QueryWrapper<CaseTask> caseTaskQueryWrapper = new QueryWrapper<>();
+        caseTaskQueryWrapper.eq("node_id", FlowNodeEnum.FLOW_NODE_DSRPJ.getIndex())
+                .eq("status", 1).le("expire_time", now);
+        List<CaseTask> caseTaskList = caseTaskService.list(caseTaskQueryWrapper);
+        List<String> caseIdList = caseTaskList.stream().map(CaseTask::getCaseId).collect(Collectors.toList());
+        evaluateService.autoArchive(caseIdList);
+    }
+}

--
Gitblit v1.8.0