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 { 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); 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); 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; 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(); } 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(); } 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; } } 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信息监听--已启动!"); } } 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()); } } } 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> 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=",">