lidongdong
2022-10-20 9b601b29f82fe6c307b1032b23d445e7f04c42a8
flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -12,6 +12,7 @@
import com.dg.core.util.Snowflake;
import com.dg.core.util.TestDate;
import com.dg.core.util.WxUtil;
import com.iceyyy.workday.WorkUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -73,8 +74,8 @@
        }
        if (isAdd) {
            //自动分配业务代码开始
            List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode());
            if (organizationChartEntities != null) {
            List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(transactionEvent.getDepartmentId(),guideRepairOrder.getAreaCode());
            if (organizationChartEntities.size() > 0) {
                for (OrganizationChartEntity organizationChart : organizationChartEntities) {
                    departmentIds.add(organizationChart.getId().toString());
                }
@@ -106,17 +107,19 @@
                    GuideEvolveEntity entity = new GuideEvolveEntity();
                    entity.setCreateTime(LocalDateTime.now());
                    entity.setUpdateTime(LocalDateTime.now());
                    entity.setState("10");
                    entity.setState("8");
                    entity.setDepartmentalId(sysUser.getDepartmentId());
                    entity.setToUserId(guideRepairOrder.getGuideUserId() + "");
                    entity.setFromUserId(guideRepairOrder.getSubmitUserId());
                    entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId());
                    entity.setGuidOrderNum(guideRepairOrder.getOrderNum());
                    //超时时间设置业务开始
                    guideRepairOrder=this.setTimeoutTim(guideRepairOrder);
                    guideRepairOrder = this.setTimeoutTim(guideRepairOrder);
                    //超时时间设置业务结束
                    //消息推送
                    this.sendGuideRepairOrderSubmit(sysUser.getOpenid(),guideRepairOrder);
                    this.sendGuideRepairOrderSubmit(sysUser.getOpenid(), guideRepairOrder);
                    //短信发送
                    smsUtil.sendSmsSubmit(sysUser.getPhonenumber(), sysUser.getUserName());
                    guideEvolveMapper.insertConfig(entity);
                }
            } else {//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配
@@ -213,32 +216,38 @@
    @Override
    public int updateSysUserOrderNum(GuideEvolveEntity order) {
        if (order.getState().equals("11")) {
            SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
            GuideRepairOrder guideRepairOrder = baseMapper.selectOne(new QueryWrapper<GuideRepairOrder>().lambda()
                    .eq(GuideRepairOrder::getId, order.getGuideId()));
            if (guideRepairOrder!=null){
                this.sendGuideRepairOrderSubmit(sysUser.getOpenid(),guideRepairOrder);
        if (order.getState() != null) {
            if (order.getState().equals("11")) {
                SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
                GuideRepairOrder guideRepairOrder = baseMapper.selectOne(new QueryWrapper<GuideRepairOrder>().lambda()
                        .eq(GuideRepairOrder::getId, order.getGuideId()));
                if (guideRepairOrder != null) {
                    this.sendGuideRepairOrderSubmit(sysUser.getOpenid(), guideRepairOrder);
                }
                //短信发送
                smsUtil.sendSmsSubmit(sysUser.getPhonenumber(), sysUser.getUserName());
                sysUser.setTransactionNum(sysUser.getTransactionNum() + 1);
                return sysUserMapper.updateById(sysUser);
            } else if (order.getState().equals("10")) {
                SysUser sysUserTo = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
                SysUser sysUserFrom = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId()));
                sysUserTo.setTransactionNum(sysUserTo.getTransactionNum() + 1);
                sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum() - 1);
                sysUserMapper.updateById(sysUserFrom);
                GuideRepairOrder guideRepairOrder = baseMapper.selectOne(new QueryWrapper<GuideRepairOrder>().lambda()
                        .eq(GuideRepairOrder::getId, order.getGuideId()));
                //短信发送
                smsUtil.sendSmsSubmit(sysUserTo.getPhonenumber(), sysUserTo.getUserName());
                if (guideRepairOrder != null) {
                    this.sendGuideRepairOrderSubmit(sysUserTo.getOpenid(), guideRepairOrder);
                }
                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);
            }
            sysUser.setTransactionNum(sysUser.getTransactionNum() + 1);
            return sysUserMapper.updateById(sysUser);
        } else if (order.getState().equals("10")) {
            SysUser sysUserTo = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
            SysUser sysUserFrom = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId()));
            sysUserTo.setTransactionNum(sysUserTo.getTransactionNum() + 1);
            sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum() - 1);
            sysUserMapper.updateById(sysUserFrom);
            GuideRepairOrder guideRepairOrder = baseMapper.selectOne(new QueryWrapper<GuideRepairOrder>().lambda()
                    .eq(GuideRepairOrder::getId, order.getGuideId()));
            if (guideRepairOrder!=null){
                this.sendGuideRepairOrderSubmit(sysUserTo.getOpenid(),guideRepairOrder);
            }
            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;
    }
@@ -251,8 +260,9 @@
     */
    @Override
    public int countStatisticsNum(String state, List<String> ids, String time,
                                  String isTimeout, String evaluateState, List<String> classifyIds) {
        return baseMapper.countStatisticsNum(state, ids, time, isTimeout, evaluateState, classifyIds);
                                  String isTimeout, String evaluateState,
                                  List<String> classifyIds,String serviceState) {
        return baseMapper.countStatisticsNum(state, ids, time, isTimeout, evaluateState, classifyIds,serviceState);
    }
    @Override
@@ -266,10 +276,10 @@
    }
    @Override
    public GuideRepairOrder setTimeoutTim(GuideRepairOrder guideRepairOrder){
    public GuideRepairOrder setTimeoutTim(GuideRepairOrder guideRepairOrder) {
        AutomessageSysSettings automessageSysSettings = iSysSettingsMapper.selectOne(
                new QueryWrapper<AutomessageSysSettings>().lambda()
                        .eq(AutomessageSysSettings::getSettingName,"系统超时基础设置"));
                        .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);//上午工作结束时间
@@ -277,50 +287,57 @@
        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)){//提交时间是上午上班前
        DateTime dateTimeUser = DateTime.now();
        String format = "YYYYMMdd";
        String dateTimeToday = dateTimeUser.toString(format);
        if (!WorkUtils.isWorkendDay(dateTimeToday)) {
            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)){//提交时间在上午工作日内
                        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)){//提交时间在工作日午休内
            } 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)){//提交时间在下午工作日内
                        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)){//提交时间在下午下班后
            } 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点+设置超时时间
                        9 + automessageSysSettings.getTimeoutNotificationNum(), 0);//设置时间为下一个工作日时间的9点+设置超时时间
                guideRepairOrder.setTimeoutTime(localDateTime);
            }
        }else//当前不是工作日则获取下一个工作日
        } 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点+设置超时时间
                    9 + automessageSysSettings.getTimeoutNotificationNum(), 0);//设置时间为下一个工作日时间的9点+设置超时时间
            guideRepairOrder.setTimeoutTime(localDateTime);
        }
        return guideRepairOrder;
    }
    @Override
    public void  sendGuideRepairOrderSubmit (String openid,GuideRepairOrder guideRepairOrder){
        WxUtil wxUtil=new WxUtil();
        String accessToken="0";
    public void sendGuideRepairOrderSubmit(String openid, GuideRepairOrder guideRepairOrder) {
        WxUtil wxUtil = new WxUtil();
        String accessToken = "0";
        try {
            accessToken= wxUtil.getBatteryCarAccessToken();
            accessToken = wxUtil.getBatteryCarAccessToken();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        wxUtil.sendGuideRepairOrderSubmit(openid,accessToken,"WggWK_yG7_qfrTj8bQe-2co4ATgpXamLzT1xvrTu4K0",guideRepairOrder);
        wxUtil.sendGuideRepairOrderSubmit(openid, accessToken, "WggWK_yG7_qfrTj8bQe-2co4ATgpXamLzT1xvrTu4K0", guideRepairOrder);
//                    smsUtil.sendSmsOvertime(sysUser.getPhonenumber(),guideRepairOrder.getMatterName());
    }
    @Override
    public int deleteConfigById(String Id) {
        return baseMapper.deleteConfigById(Id);
    }
}