fengjin
2022-10-21 1fb23cbeeaaeda0a66cf8fe8977c3f5915743cc7
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;
@@ -74,8 +75,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());
                }
@@ -107,17 +108,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.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 {//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配
@@ -198,13 +201,21 @@
    }
    @Override
    public List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state, String matterName, List<String> ids) {
        return baseMapper.selectConfigList(page, state, matterName, ids);
    public List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state,
                                                   String matterName, List<String> ids,String status,
                                                   String guideUserId) {
        return baseMapper.selectConfigList(page, state, matterName, ids,status,guideUserId);
    }
    @Override
    public int countConfigList(String matterName, List<String> ids) {
        return baseMapper.countConfigList(matterName, ids);
    public List<GuideRepairOrder> selectConfigList(String matterName, List<String> ids,String status,
                                                   String guideUserId) {
        return baseMapper.selectConfigList(matterName, ids,status,guideUserId);
    }
    @Override
    public int countConfigList(String matterName, List<String> ids,String status,String guideUserId) {
        return baseMapper.countConfigList(matterName, ids,status,guideUserId);
    }
    @Override
@@ -214,32 +225,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;
    }
@@ -252,8 +269,10 @@
     */
    @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,
                                  String guideUserId) {
        return baseMapper.countStatisticsNum(state, ids, time, isTimeout, evaluateState, classifyIds,serviceState,guideUserId);
    }
    @Override
@@ -267,10 +286,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);//上午工作结束时间
@@ -278,50 +297,50 @@
        LocalDateTime afternoonEndTime = LocalDate.now().atTime(17, 0, 0);//下午工作结束时间
        LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59);//今天结束时间
        TestDate td = new TestDate();
        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)){//提交时间是上午上班前
        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());
    }
@@ -330,5 +349,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;
    }
}