fengjin
2022-10-17 b69d2017fecdad6a1c9a09c0006e70ecea9efed0
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;
    }
}