flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
@@ -174,7 +174,7 @@ } if(StringUtils.equals(entity.getState(),"2")){//如果用户选择未解决则状态改为待办 order.setState("2"); entity.setState("8"); entity.setState("9"); } else if(StringUtils.equals(entity.getState(),"4")){ if (order.getSubmitType().equals(1))//小程序提交 @@ -187,14 +187,14 @@ throw new RuntimeException(e); } SysUser submitUser = iGuideRepairOrderService.getSubmitUser(order); wxUtil.sendGuideRepairOrderComplete(submitUser.getOpenid(),accessToken,guideRepairOrderCompleteTemplateId,order); wxUtil.sendGuideRepairOrderComplete(submitUser.getOpenid(),accessToken,guideRepairOrderCompleteTemplateId,entity); } else if (order.getSubmitType().equals(2)){ smsUtil.sendSmsComplete(order.getConsultUserPhone(),order.getMatterName()); } //待评价 order.setState("4"); entity.setState("9"); entity.setState("7"); } //新增已办结记录 entity.setCreateTime(LocalDateTime.now()); @@ -203,6 +203,7 @@ entity.setToUserId(order.getGuideUserId()); entity.setGuideId(order.getId().toString()); iGuideEvolveService.insertConfig(entity); iGuideRepairOrderService.updateSysUserOrderNum(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } @@ -271,12 +272,6 @@ { return ResultData.error("工单id不能为空"); } if(!StringUtils.equals(entity.getState(),"4")) { return ResultData.error("该工单不能评价!"); } if(StringUtils.isEmpty(entity.getEvaluateState())) { return ResultData.error("满意程度不能为空!"); flower_city/src/main/java/com/dg/core/controller/CommonController.java
@@ -139,7 +139,7 @@ } /** * 通用上传请求(多个) * 判断当前时间是否是工作日,格式为“2022-10-16”,不传默认为今天 */ @ApiOperation("判断当前时间是否是工作日,格式为“2022-10-16”,不传默认为今天") @GetMapping("/isWeekday") flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
@@ -134,9 +134,9 @@ entity.setFromUserId(order.getGuideUserId()); entity.setFromDepartmentalId(order.getGuideDepartmentId()); entity.setGuideId(order.getId().toString()); iGuideRepairOrderService.updateSysUserOrderNum(entity); iGuideEvolveService.insertConfig(entity); order=iGuideRepairOrderService.setTimeoutTim(order); return toAjax(iGuideRepairOrderService.updateConfig(order)); } @@ -179,8 +179,10 @@ entity.setFromUserId(sysUser.getUserId()+""); entity.setFromDepartmentalId(sysUser.getDepartmentId()); entity.setGuideId(order.getId().toString()); order=iGuideRepairOrderService.setTimeoutTim(order); iGuideEvolveService.insertConfig(entity); iGuideRepairOrderService.updateSysUserOrderNum(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } @@ -219,7 +221,7 @@ } if(StringUtils.equals(entity.getState(),"2")){//如果用户选择未解决则状态改为待办 order.setState("2"); entity.setState("8"); entity.setState("9"); } else if(StringUtils.equals(entity.getState(),"4")){ //待评价 @@ -233,13 +235,13 @@ throw new RuntimeException(e); } SysUser submitUser = iGuideRepairOrderService.getSubmitUser(order); wxUtil.sendGuideRepairOrderComplete(submitUser.getOpenid(),accessToken,guideRepairOrderCompleteTemplateId,order); wxUtil.sendGuideRepairOrderComplete(submitUser.getOpenid(),accessToken,guideRepairOrderCompleteTemplateId,entity); } else if (order.getSubmitType().equals(2)){ smsUtil.sendSmsComplete(order.getConsultUserPhone(),order.getMatterName()); } order.setState("4"); entity.setState("9"); entity.setState("7"); } //新增已办结记录 entity.setCreateTime(LocalDateTime.now()); @@ -248,6 +250,7 @@ entity.setFromUserId(sysUser.getUserId()+""); entity.setGuideId(order.getId().toString()); iGuideEvolveService.insertConfig(entity); iGuideRepairOrderService.updateSysUserOrderNum(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } @@ -316,11 +319,6 @@ if(entity.getId()<=0) { return ResultData.error("工单id不能为空"); } if(!StringUtils.equals(entity.getState(),"4")) { return ResultData.error("该工单不能评价!"); } if(StringUtils.isEmpty(entity.getEvaluateState())) flower_city/src/main/java/com/dg/core/db/gen/mapper/AutomessageSysUserRecordMapper.java
@@ -40,4 +40,10 @@ */ List<AppletUserCount> selectByYear(); /** * 删除因为token问题产出的重复脏数据 * @return */ Integer deleteDistinct(); } flower_city/src/main/java/com/dg/core/interceptor/AuthorizationInterceptor.java
@@ -85,7 +85,10 @@ newSysUser.setOpenid(huaChengSysUser.getOpenid()); IUserService.insertConfig(newSysUser); } //新增浏览记录 iSysUserRecordService.add(sysUser); //删除因为token问题产出的重复脏数据 iSysUserRecordService.deleteDistinct(); } return true; flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
@@ -86,4 +86,11 @@ */ SysUser getSubmitUser(GuideRepairOrder guideRepairOrder); /** * 设置超时时间 * @return */ GuideRepairOrder setTimeoutTim(GuideRepairOrder guideRepairOrder); } flower_city/src/main/java/com/dg/core/service/ISysUserRecordService.java
@@ -25,4 +25,10 @@ * @return */ ResultData selectByDateType(Integer dateType); /** * 删除因为token问题产出的重复脏数据 * @return */ Integer deleteDistinct(); } flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -1,18 +1,25 @@ package com.dg.core.service.impl; import cn.hutool.core.date.DateTime; 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.db.gen.entity.*; import com.dg.core.db.gen.mapper.*; import com.dg.core.service.IGuideRepairOrderService; import com.dg.core.service.ISysSettingsService; import com.dg.core.util.SmsUtil; import com.dg.core.util.Snowflake; import com.dg.core.util.TestDate; import com.dg.core.util.WxUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @Service @@ -33,6 +40,9 @@ @Resource private GuideEvolveMapper guideEvolveMapper; @Resource private AutomessageSysSettingsMapper iSysSettingsMapper; @Resource SmsUtil smsUtil; @@ -101,14 +111,26 @@ entity.setFromUserId(guideRepairOrder.getSubmitUserId()); entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId()); entity.setGuidOrderNum(guideRepairOrder.getOrderNum()); //超时时间设置业务开始 guideRepairOrder=this.setTimeoutTim(guideRepairOrder); //超时时间设置业务结束 //消息推送 WxUtil wxUtil=new WxUtil(); String accessToken="0"; try { accessToken= wxUtil.getBatteryCarAccessToken(); } catch (Exception e) { throw new RuntimeException(e); } wxUtil.sendGuideRepairOrderSubmit(sysUser.getOpenid(),accessToken,"WggWK_yG7_qfrTj8bQe-2co4ATgpXamLzT1xvrTu4K0",guideRepairOrder); // smsUtil.sendSmsOvertime(sysUser.getPhonenumber(),guideRepairOrder.getMatterName()); guideEvolveMapper.insertConfig(entity); } } else{//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配 } else {//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配 guideRepairOrder.setState("1"); } //自动分配业务代码结束 guideRepairOrder.setCreateTime(LocalDateTime.now()); guideRepairOrder.setUpdateTime(LocalDateTime.now()); transactionEvent.setTransactionNum(transactionEvent.getTransactionNum()+1); @@ -144,8 +166,7 @@ return 1; else return 0; } else { } else { return 0; } } @@ -169,8 +190,7 @@ @Override public int updateConfig(GuideRepairOrder order) { if ( order.getGuideUserId()!=null&&!order.getGuideUserId().equals("")) { if (order.getGuideUserId() != null && !order.getGuideUserId().equals("")) { SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getGuideUserId())); order.setGuideUserPhone(sysUser.getPhonenumber()); } @@ -210,12 +230,17 @@ sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum()-1); sysUserMapper.updateById(sysUserFrom); return sysUserMapper.updateById(sysUserTo); } else if (order.getState().equals("7")) { SysUser sysUserFrom = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId())); sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum() - 1); return sysUserMapper.updateById(sysUserFrom); } return 0; } /** * 1 今天 2昨天 3本月 4本年度 String time * * @param state * @param ids * @return @@ -236,5 +261,49 @@ return sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId,guideRepairOrder.getSubmitUserId())); } @Override public GuideRepairOrder setTimeoutTim(GuideRepairOrder guideRepairOrder){ AutomessageSysSettings automessageSysSettings = iSysSettingsMapper.selectOne( new QueryWrapper<AutomessageSysSettings>().lambda() .eq(AutomessageSysSettings::getSettingName,"系统超时基础设置")); LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0);//今天开始时间 LocalDateTime morningStartTime = LocalDate.now().atTime(9, 0, 0);//上午工作开始时间 LocalDateTime morningEndTime = LocalDate.now().atTime(12, 0, 0);//上午工作结束时间 LocalDateTime afternoonStartTime = LocalDate.now().atTime(13, 30, 0);//下午工作开始时间 LocalDateTime afternoonEndTime = LocalDate.now().atTime(17, 0, 0);//下午工作结束时间 LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59);//今天结束时间 TestDate td = new TestDate(); DateTime dateTimeUser= DateTime.now(); if (td.isWeekday(dateTimeUser)){ if ( LocalDateTime.now().isAfter(startTime)&&LocalDateTime.now().isBefore(morningStartTime)){//提交时间是上午上班前 guideRepairOrder.setTimeoutTime(LocalDate.now(). atTime(9+automessageSysSettings.getTimeoutNotificationNum(),0,0)); }else if (LocalDateTime.now().isAfter(morningStartTime)&&LocalDateTime.now().isBefore(morningEndTime)){//提交时间在上午工作日内 guideRepairOrder.setTimeoutTime(LocalDateTime.now().plusHours(automessageSysSettings.getTimeoutNotificationNum())); }else if(LocalDateTime.now().isAfter(morningEndTime)&&LocalDateTime.now().isBefore(afternoonStartTime)){//提交时间在工作日午休内 guideRepairOrder.setTimeoutTime(LocalDate.now(). atTime(13+automessageSysSettings.getTimeoutNotificationNum(),30,0)); }else if(LocalDateTime.now().isAfter(afternoonStartTime)&&LocalDateTime.now().isBefore(afternoonEndTime)){//提交时间在下午工作日内 guideRepairOrder.setTimeoutTime(LocalDateTime.now().plusHours(automessageSysSettings.getTimeoutNotificationNum())); }else if(LocalDateTime.now().isAfter(afternoonEndTime)&&LocalDateTime.now().isBefore(endTime)){//提交时间在下午下班后 DateTime dateTime = td.nextWeekDay(dateTimeUser); Calendar calendar = dateTime.toCalendar(); LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 9+automessageSysSettings.getTimeoutNotificationNum(),0);//设置时间为下一个工作日时间的9点+设置超时时间 guideRepairOrder.setTimeoutTime(localDateTime); } }else//当前不是工作日则获取下一个工作日 { DateTime dateTime = td.nextWeekDay(dateTimeUser); Calendar calendar = dateTime.toCalendar(); LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 9+automessageSysSettings.getTimeoutNotificationNum(),0);//设置时间为下一个工作日时间的9点+设置超时时间 guideRepairOrder.setTimeoutTime(localDateTime); } return guideRepairOrder; } } flower_city/src/main/java/com/dg/core/service/impl/SysUserRecordServiceImpl.java
@@ -58,4 +58,9 @@ return null; } @Override public Integer deleteDistinct() { return baseMapper.deleteDistinct(); } } flower_city/src/main/java/com/dg/core/util/TestDate.java
@@ -112,7 +112,7 @@ } /** * 判断改日期是否为工作日 * 判断该日期是否为工作日 * * @param dateTime * @return @@ -130,4 +130,23 @@ return true; } /** * 获取该日期的下个工作日是多少 * * @param dateTime * @return */ public DateTime nextWeekDay(DateTime dateTime){ TestDate td=new TestDate(); Calendar calendar = Calendar.getInstance(); calendar.setTime(dateTime); while (true){ calendar.add(calendar.DATE,1); if (td.isWeekday(new DateTime(calendar))){ return new DateTime(calendar);//返回日期 } } } } flower_city/src/main/java/com/dg/core/util/WxUtil.java
@@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; 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.manual.mapper.util.ConstantPropertiesUtil; import lombok.extern.slf4j.Slf4j; @@ -194,16 +195,16 @@ * @param accessToken * token会话标识 */ public void sendGuideRepairOrderComplete(String openId, String accessToken, String templateId, GuideRepairOrder guideRepairOrder){ public void sendGuideRepairOrderComplete(String openId, String accessToken, String templateId, GuideEvolveEntity guideRepairOrder){ 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(); paras.add(new TemplateParam("thing1",guideRepairOrder.getMatterName()));//业务办理类型 paras.add(new TemplateParam("thing3","已完成")); paras.add(new TemplateParam("phrase8","待评价")); paras.add(new TemplateParam("thing1","导办申请"));//业务办理类型 paras.add(new TemplateParam("thing3",guideRepairOrder.getRemark())); paras.add(new TemplateParam("phrase8","已完成")); calendar.setTime(new Date()); paras.add(new TemplateParam("time4",calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DATE)+"日"));//结束日期 subscribeDTO.setTemplateParamList(paras); @@ -216,21 +217,21 @@ /** * 工单超时推送 * 工单提交推送 * * @param openId * 用户openid * @param accessToken * token会话标识 */ public void sendGuideRepairOrderOvertime(String openId, String accessToken, String templateId, GuideRepairOrder guideRepairOrder){ public void sendGuideRepairOrderSubmit(String openId, String accessToken, String templateId, GuideRepairOrder guideRepairOrder){ 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(); paras.add(new TemplateParam("thing4","给您分配的工单:'"+guideRepairOrder.getMatterName()+"',已超时请即使处理"));//超时提示内容 paras.add(new TemplateParam("thing4","您有一个新的导办工单需要处理"));//超时提示内容 paras.add(new TemplateParam("thing2",guideRepairOrder.getConsultUserName()));//咨询人 paras.add(new TemplateParam("thing3",guideRepairOrder.getConsultContent()));//咨询内容 subscribeDTO.setTemplateParamList(paras); flower_city/src/main/resources/mapper/AutomessageSysUserRecordMapper.xml
@@ -162,4 +162,13 @@ GROUP BY d.date </select> <!-- 删除因为token问题产出的重复脏数据--> <delete id="deleteDistinct" parameterType="string"> DELETE FROM automessage_sys_user_record where id in (select id FROM( Select id,user_id,DATE_FORMAT(create_time,'%Y-%m-%d')create_time From automessage_sys_user_record Group By user_id,DATE_FORMAT(create_time,'%Y-%m-%d') Having Count(*)>1) k) </delete> </mapper> flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
@@ -30,6 +30,8 @@ <id property="video" column="video" /> <id property="isTimeout" column="is_timeout" /> <id property="submitType" column="submit_type" /> <id property="timeoutTime" column="timeout_time" /> <id property="isPush" column="is_push" /> </resultMap> <sql id="selectGuideRepairOrderVo"> @@ -39,6 +41,8 @@ matter_id, submit_type, matter_name, timeout_time, is_push, (select organization_name from automessage_organization_chart where a.department_id=id)organizationName, concat( (select classify_name from automessage_classify_administration where id=(select parent_id from automessage_classify_administration where id=a.classify_id)), @@ -139,6 +143,7 @@ <if test="suggest != null and suggest != '' ">suggest=#{suggest},</if> <if test="serviceState != null ">service_state=#{serviceState},</if> <if test="isTimeout != null ">is_timeout=#{isTimeout},</if> <if test="timeoutTime != null ">timeout_time=#{timeoutTime},</if> update_time=sysdate() </set> where id= #{id}