| | |
| | | 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 |
| | |
| | | |
| | | @Resource |
| | | private GuideEvolveMapper guideEvolveMapper; |
| | | |
| | | @Resource |
| | | private AutomessageSysSettingsMapper iSysSettingsMapper; |
| | | |
| | | @Resource |
| | | SmsUtil smsUtil; |
| | |
| | | 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); |
| | |
| | | return 1; |
| | | else |
| | | return 0; |
| | | } |
| | | else { |
| | | } else { |
| | | return 0; |
| | | } |
| | | } |
| | |
| | | |
| | | @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()); |
| | | } |
| | |
| | | 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 |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | } |