From 8cc9e9601aab48e511831f62f3b71bd3c68fea06 Mon Sep 17 00:00:00 2001
From: fengjin <1435304038@qq.com>
Date: 星期四, 20 十月 2022 10:58:09 +0800
Subject: [PATCH] 1.定时任务修改超时状态 2.定时任务默认好评 3.修改bug

---
 flower_city/src/main/java/com/dg/core/WMApplication.java                            |    2 
 flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java         |   13 +++
 flower_city/src/main/java/com/dg/core/util/WxUtil.java                              |   31 +++++++
 flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml                    |   14 +++
 flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java    |    4 
 flower_city/src/main/java/com/dg/core/task/SendWsListener.java                      |   66 +++++++++-------
 flower_city/src/main/resources/mapper/SysUserMapper.xml                             |    2 
 flower_city/src/main/java/com/dg/core/db/gen/entity/GuideEvolveEntity.java          |    4 
 flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java     |   11 ++
 flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java    |    8 +-
 flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java |   52 ++++++++++++
 11 files changed, 165 insertions(+), 42 deletions(-)

diff --git a/flower_city/src/main/java/com/dg/core/WMApplication.java b/flower_city/src/main/java/com/dg/core/WMApplication.java
index 1b68bbc..8cb9a82 100644
--- a/flower_city/src/main/java/com/dg/core/WMApplication.java
+++ b/flower_city/src/main/java/com/dg/core/WMApplication.java
@@ -5,7 +5,7 @@
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.ServletComponentScan;
 
-//@ServletComponentScan("com.dg.core.task")  //定时任务启动开关
+@ServletComponentScan("com.dg.core.task")  //定时任务启动开关
 @SpringBootApplication
 @MapperScan("com.dg.core.db")
 public class WMApplication {
diff --git a/flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java b/flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
index 0b6e42b..2d70d6e 100644
--- a/flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
+++ b/flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
@@ -193,8 +193,8 @@
         //新增已办结记录
         entity.setCreateTime(LocalDateTime.now());
         entity.setUpdateTime(LocalDateTime.now());
-        entity.setDepartmentalId(order.getGuideDepartmentId());
-        entity.setToUserId(order.getGuideUserId());
+        entity.setFromDepartmentalId(sysUser.getDepartmentId());
+        entity.setFromUserId(sysUser.getUserId()+"");
         entity.setGuideId(order.getId().toString());
         iGuideEvolveService.insertConfig(entity);
         iGuideRepairOrderService.updateSysUserOrderNum(entity);
diff --git a/flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java b/flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
index bc0a632..6e448b7 100644
--- a/flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
+++ b/flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
@@ -129,10 +129,10 @@
         entity.setCreateTime(LocalDateTime.now());
         entity.setUpdateTime(LocalDateTime.now());
         entity.setState("11");
-        entity.setDepartmentalId(sysUser.getDepartmentId());
-        entity.setToUserId(sysUser.getUserId()+"");
-        entity.setFromUserId(order.getGuideUserId());
-        entity.setFromDepartmentalId(order.getGuideDepartmentId());
+        entity.setDepartmentalId(order.getGuideDepartmentId());
+        entity.setToUserId(order.getGuideUserId());
+        entity.setFromUserId(sysUser.getUserId().toString());
+        entity.setFromDepartmentalId(sysUser.getDepartmentId());
         entity.setGuideId(order.getId().toString());
         iGuideRepairOrderService.updateSysUserOrderNum(entity);
         iGuideEvolveService.insertConfig(entity);
diff --git a/flower_city/src/main/java/com/dg/core/db/gen/entity/GuideEvolveEntity.java b/flower_city/src/main/java/com/dg/core/db/gen/entity/GuideEvolveEntity.java
index 807503e..afb2058 100644
--- a/flower_city/src/main/java/com/dg/core/db/gen/entity/GuideEvolveEntity.java
+++ b/flower_city/src/main/java/com/dg/core/db/gen/entity/GuideEvolveEntity.java
@@ -54,9 +54,9 @@
     private String fromUserId;
 
     /**
-     * state", value = "状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消 6未解决  7已解决  8 系统自动分配 9 回复 10转派 11手动分配)
+     * state", value = "状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消 6未解决  7已解决  8 系统自动分配 9 回复 10转派 11手动分配12默认好评)
      */
-    @ApiModelProperty(name = "state", value = "状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消 6未解决  7已解决  8 系统自动分配 9 回复 10转派 11手动分配)")
+    @ApiModelProperty(name = "state", value = "状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消 6未解决  7已解决  8 系统自动分配 9 回复 10转派 11手动分配 12默认好评)")
     private String state;
 
 
diff --git a/flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java b/flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java
index dd5e973..7e2bf84 100644
--- a/flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java
+++ b/flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java
@@ -98,6 +98,17 @@
     List<CountListNum> countListNum(@Param("state") String state,
                                     @Param("ids") List<String> ids,
                                     @Param("time") Integer time);
+    /**
+     * 获取超时工单
+     * @return
+     */
+   List<GuideRepairOrder> selectOvertime();
+
+    /**
+     * 更改状态为好评
+     * @return
+     */
+    List<GuideRepairOrder> selectEvaluate();
 
 
 }
diff --git a/flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java b/flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
index e42d3b0..e954fb8 100644
--- a/flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
+++ b/flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
@@ -1,6 +1,7 @@
 package com.dg.core.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dg.core.ResultData;
 import com.dg.core.db.gen.entity.*;
 import org.springframework.data.repository.query.Param;
 
@@ -110,4 +111,16 @@
      */
     int deleteConfigById(String Id);
 
+    /**
+     * 推送超时工单
+     * @return
+     */
+    ResultData pushOvertimeGuideRepairOrder();
+
+    /**
+     * 更改状态为好评
+     * @return
+     */
+    int updateEvaluate();
+
 }
diff --git a/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java b/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
index d9da9ee..534597c 100644
--- a/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
+++ b/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dg.core.ResultData;
 import com.dg.core.db.gen.entity.*;
 import com.dg.core.db.gen.mapper.*;
 import com.dg.core.service.IGuideRepairOrderService;
@@ -110,8 +111,8 @@
                     entity.setState("8");
                     entity.setDepartmentalId(sysUser.getDepartmentId());
                     entity.setToUserId(guideRepairOrder.getGuideUserId() + "");
-                    entity.setFromUserId(guideRepairOrder.getSubmitUserId());
-                    entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId());
+//                    entity.setFromUserId(guideRepairOrder.getSubmitUserId());
+//                    entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId());
                     entity.setGuidOrderNum(guideRepairOrder.getOrderNum());
                     //超时时间设置业务开始
                     guideRepairOrder = this.setTimeoutTim(guideRepairOrder);
@@ -340,5 +341,52 @@
         return baseMapper.deleteConfigById(Id);
     }
 
+    @Override
+    public ResultData pushOvertimeGuideRepairOrder() {
+        List<GuideRepairOrder> guideRepairOrders = baseMapper.selectOvertime();
+        WxUtil wxUtil = new WxUtil();
+        String accessToken = "0";
+        try {
+            accessToken = wxUtil.getBatteryCarAccessToken();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        for (GuideRepairOrder guideRepairOrder:guideRepairOrders) {
+            SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, guideRepairOrder.getGuideUserId()));
+            if (sysUser!=null)
+            {
+                smsUtil.sendSmsOvertime(sysUser.getPhonenumber(), sysUser.getUserName());
+                wxUtil.sendGuideRepairOrderOvertime(sysUser.getOpenid(),accessToken,"86JgWHhR8b1XxD72WYqMnndyfkiMtSSoCk9NFMwLEZ8",sysUser);
+                guideRepairOrder.setIsPush(1);
+                guideRepairOrder.setIsTimeout("2");
+                baseMapper.updateById(guideRepairOrder);
+            }
+        }
+        return ResultData.success();
+    }
+
+    @Override
+    public int updateEvaluate() {
+        //查找一天没有评价的单据
+        List<GuideRepairOrder> guideRepairOrders = baseMapper.selectEvaluate();
+        for (GuideRepairOrder guideRepairOrder:guideRepairOrders) {
+            guideRepairOrder.setEvaluateState("1");
+            guideRepairOrder.setEvaluateContent("好评");
+            guideRepairOrder.setServiceState(1);
+            guideRepairOrder.setState("3");
+            baseMapper.updateById(guideRepairOrder);
+            //新增默认好评进展
+            GuideEvolveEntity entity = new GuideEvolveEntity();
+            entity.setCreateTime(LocalDateTime.now());
+            entity.setUpdateTime(LocalDateTime.now());
+            entity.setState("12");
+            entity.setFromUserId(guideRepairOrder.getSubmitUserId()+"");
+            entity.setGuideId(guideRepairOrder.getId().toString());
+            guideEvolveMapper.insertConfig(entity);
+
+        }
+        return 0;
+    }
+
 
 }
diff --git a/flower_city/src/main/java/com/dg/core/task/SendWsListener.java b/flower_city/src/main/java/com/dg/core/task/SendWsListener.java
index d05cbe6..a4b30fc 100644
--- a/flower_city/src/main/java/com/dg/core/task/SendWsListener.java
+++ b/flower_city/src/main/java/com/dg/core/task/SendWsListener.java
@@ -1,5 +1,8 @@
 package com.dg.core.task;
 
+import com.dg.core.service.IGuideRepairOrderService;
+
+import javax.annotation.Resource;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 import javax.servlet.annotation.WebListener;
@@ -10,6 +13,9 @@
 
 @WebListener
 public class SendWsListener implements ServletContextListener {
+
+    @Resource
+    private IGuideRepairOrderService iGuideRepairOrderService;
     @Override
     public void contextDestroyed(ServletContextEvent arg0) {
         System.out.println("定时发送Xml信息监听--已关闭!");
@@ -47,6 +53,10 @@
             @Override
             public void run() {
                 System.out.println("每刻任务已执行");
+                //定时更新超时状态
+                iGuideRepairOrderService.pushOvertimeGuideRepairOrder();
+                //定时更新未评价的单据评价状态
+                iGuideRepairOrderService.updateEvaluate();
                 // TODO 写你的逻辑
             }
         }, defaultdate, 1 * 60 * 1000);// 定时每15分钟
@@ -57,40 +67,40 @@
          * 启动服务器后,若此时时间没过8点,等待。到了8点自动执行一次,24小时后(第二天8点)再执行一次,周而复始
          * 启动服务器后,若此时时间已经超过8点,则等到24小时后(第二天8点)才执行一次,周而复始
          */
-        Timer dTimer = new Timer();
-        dTimer.schedule(new TimerTask() {
-
-            @Override
-            public void run() {
-                System.out.println("每日任务已经执行");
-                // TODO 写你的逻辑
-            }
-        }, sendDate, 24 * 60 * 60 * 1000);// 定时24小时:24 * 60 * 60 * 1000
-        System.out.println("每日定时发送Xml信息监听--已启动!");
+//        Timer dTimer = new Timer();
+//        dTimer.schedule(new TimerTask() {
+//
+//            @Override
+//            public void run() {
+//                System.out.println("每日任务已经执行");
+//                // TODO 写你的逻辑
+//            }
+//        }, sendDate, 24 * 60 * 60 * 1000);// 定时24小时:24 * 60 * 60 * 1000
+//        System.out.println("每日定时发送Xml信息监听--已启动!");
 
         /**
          * ----------------每月任务 ----------------
          * 启动服务器后,若此时时间没过8点,等待。到了8点自动执行判断是否是当前月份的1号,若是则执行一次,
          * 24小时后(第二天8点)再执行一次判断(每月1号以后后的29天或30天后才会是下月1号,再执行一次),周而复始 启动服务器后,若此时时间已经超过8点,会立刻执行一次,等到下个月1号再次执行一次,周而复始
          */
-        Timer mTimer = new Timer();
-        mTimer.schedule(new TimerTask() {
-
-            @Override
-            public void run() {
-                Calendar c = Calendar.getInstance();
-                int day = c.get(Calendar.DAY_OF_MONTH);
-                System.out.println("月任务 判断中");
-                if (day == 1) {
-                    // 每天执行,若为每月1号才执行
-                    System.out.println("月任务执行已执行");
-                    // TODO 写你的逻辑
-                }
-
-            }
-        }, sendDate, 24 * 60 * 60 * 1000);// 每天执行一次检查
-
-        System.out.println("每月定时发送Xml信息监听--已启动!");
+//        Timer mTimer = new Timer();
+//        mTimer.schedule(new TimerTask() {
+//
+//            @Override
+//            public void run() {
+//                Calendar c = Calendar.getInstance();
+//                int day = c.get(Calendar.DAY_OF_MONTH);
+//                System.out.println("月任务 判断中");
+//                if (day == 1) {
+//                    // 每天执行,若为每月1号才执行
+//                    System.out.println("月任务执行已执行");
+//                    // TODO 写你的逻辑
+//                }
+//
+//            }
+//        }, sendDate, 24 * 60 * 60 * 1000);// 每天执行一次检查
+//
+//        System.out.println("每月定时发送Xml信息监听--已启动!");
 
     }
 }
\ No newline at end of file
diff --git a/flower_city/src/main/java/com/dg/core/util/WxUtil.java b/flower_city/src/main/java/com/dg/core/util/WxUtil.java
index fcf3365..49bcfbf 100644
--- a/flower_city/src/main/java/com/dg/core/util/WxUtil.java
+++ b/flower_city/src/main/java/com/dg/core/util/WxUtil.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.dg.core.db.gen.entity.GuideEvolveEntity;
 import com.dg.core.db.gen.entity.GuideRepairOrder;
+import com.dg.core.db.gen.entity.SysUser;
 import com.dg.core.db.manual.mapper.util.ConstantPropertiesUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -230,8 +231,7 @@
         subscribeDTO.setTemplate_id(templateId);
         subscribeDTO.setMiniprogram_state("formal");//测试,部署正式版本时候需要更改为formal
         List<TemplateParam> paras=new ArrayList<TemplateParam>();
-        Calendar calendar = Calendar.getInstance();
-        paras.add(new TemplateParam("thing4","您有一个新的导办工单需要处理"));//超时提示内容
+         paras.add(new TemplateParam("thing4","您有一个新的导办工单需要处理"));//工单新增提示内容
         paras.add(new TemplateParam("thing2",guideRepairOrder.getConsultUserName()));//咨询人
         paras.add(new TemplateParam("thing3",guideRepairOrder.getConsultContent()));//咨询内容
         subscribeDTO.setTemplateParamList(paras);
@@ -243,5 +243,32 @@
     }
 
 
+    /**
+     * 工单超时推送
+     *
+     * @param openId
+     *            用户openid
+     * @param accessToken
+     *            token会话标识
+     */
+    public  void sendGuideRepairOrderOvertime(String openId, String accessToken, String templateId, SysUser sysUser){
+        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
+        subscribeDTO.setTouser(openId);
+        subscribeDTO.setTemplate_id(templateId);
+        subscribeDTO.setMiniprogram_state("formal");//测试,部署正式版本时候需要更改为formal
+        List<TemplateParam> paras=new ArrayList<TemplateParam>();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        paras.add(new TemplateParam("time1",calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DATE)+"日"));//超时时间
+        paras.add(new TemplateParam("thing2",sysUser.getUserName()+"导办人员有个工单已超时"));//咨询人
+         subscribeDTO.setTemplateParamList(paras);
+        try {
+            sendSubscribe(accessToken,subscribeDTO);
+        }catch (Exception e){
+            System.out.println(e.getMessage());
+        }
+    }
+
+
 
 }
diff --git a/flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml b/flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
index 6f48a62..30684bf 100644
--- a/flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
+++ b/flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
@@ -244,6 +244,20 @@
         LIMIT #{time}
     </select>
 
+    <select id="selectOvertime"  resultMap="GuideRepairOrderResult">
+        <include refid="selectGuideRepairOrderVo"/>
+        <where>
+            state=2 and is_push=2 and  SYSDATE()>timeout_time and  1>(select count(*)  from automessage_guide_evolve where state=9 and  a.id=guide_id )
+        </where>
+    </select>
+
+    <select id="selectEvaluate"  resultMap="GuideRepairOrderResult">
+        <include refid="selectGuideRepairOrderVo"/>
+        <where>
+           state=4 and datediff(now(),update_time)>=1
+        </where>
+    </select>
+
 
 
 
diff --git a/flower_city/src/main/resources/mapper/SysUserMapper.xml b/flower_city/src/main/resources/mapper/SysUserMapper.xml
index 77a9a96..953fd63 100644
--- a/flower_city/src/main/resources/mapper/SysUserMapper.xml
+++ b/flower_city/src/main/resources/mapper/SysUserMapper.xml
@@ -165,7 +165,7 @@
     <select id="selectListByDepartmentId"  resultMap="SysUserResult">
         <include refid="selectSysUserVo"/>
          <where>
-            user_type=2 and status=0
+            user_type=2 and status=0 and leisure_state=0
             <if test="list!=null">
                 and  department_id in
                 <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">

--
Gitblit v1.7.1