fengjin
2022-10-17 fc17ca4f6b87d5a08f67544bac3e5175fbb53085
1.提交订单给导办人员消息推送 2.提交设置超时时间 3.修改bug
13个文件已修改
431 ■■■■■ 已修改文件
flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/controller/CommonController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/db/gen/mapper/AutomessageSysUserRecordMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/interceptor/AuthorizationInterceptor.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/ISysUserRecordService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/impl/SysUserRecordServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/util/TestDate.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/util/WxUtil.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/resources/mapper/AutomessageSysUserRecordMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -23,22 +30,25 @@
    private TransactionEventMapper transactionEventMapper;
    @Resource
    private  GuideRepairOrderImageMapper guideRepairOrderImageMapper;
    private GuideRepairOrderImageMapper guideRepairOrderImageMapper;
    @Resource
    private SysUserMapper sysUserMapper;
    @Resource
    private OrganizationChartMapper  organizationChartMapper;
    @Resource
    private  GuideEvolveMapper guideEvolveMapper;
    private OrganizationChartMapper organizationChartMapper;
    @Resource
    private GuideEvolveMapper guideEvolveMapper;
    @Resource
    private AutomessageSysSettingsMapper iSysSettingsMapper;
    @Resource
    SmsUtil smsUtil;
    @Override
    public  int addOrder(GuideRepairOrder guideRepairOrder){
    public int addOrder(GuideRepairOrder guideRepairOrder) {
        TransactionEvent transactionEvent = transactionEventMapper.selectOne(new QueryWrapper<TransactionEvent>().lambda().
                eq(TransactionEvent::getId, guideRepairOrder.getMatterId()));
@@ -46,131 +56,141 @@
        guideRepairOrder.setMatterName(transactionEvent.getMatterName());
        guideRepairOrder.setDepartmentId(transactionEvent.getDepartmentId());
        guideRepairOrder.setClassifyId(transactionEvent.getClassifyId());
        List<String> departmentIds=new ArrayList<>();
        Boolean isAdd=true;//是否能够新建工单
        List<String> departmentIds = new ArrayList<>();
        Boolean isAdd = true;//是否能够新建工单
        List<GuideRepairOrder> guideRepairOrders = baseMapper.selectList(new QueryWrapper<GuideRepairOrder>().lambda()
                .eq(GuideRepairOrder::getMatterId, guideRepairOrder.getMatterId())
                .eq(GuideRepairOrder::getConsultContent, guideRepairOrder.getConsultContent()));
        if (guideRepairOrders.size()==0){
            isAdd=true;
        }else {
            for (GuideRepairOrder guideRepair:guideRepairOrders) {
                if (guideRepair.getState().equals("1")||guideRepair.getState().equals("2")||guideRepair.getState().equals("6")||guideRepair.getState().equals("7")){
                    isAdd=false;
        if (guideRepairOrders.size() == 0) {
            isAdd = true;
        } else {
            for (GuideRepairOrder guideRepair : guideRepairOrders) {
                if (guideRepair.getState().equals("1") || guideRepair.getState().equals("2") || guideRepair.getState().equals("6") || guideRepair.getState().equals("7")) {
                    isAdd = false;
                    break;
                }
            }
        }
         if (isAdd) {
        //自动分配业务代码开始
        List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode());
        if (organizationChartEntities!=null){
            for (OrganizationChartEntity organizationChart:organizationChartEntities) {
                departmentIds.add(organizationChart.getId().toString());
            }
            List<SysUser> sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
            if (sysUsers.size()==0) {//如果此所属地区部门没有导半人员则看其下级地区有没有相关分类导办人员
                for (OrganizationChartEntity organizationChart:organizationChartEntities) {
                    //获取下级部门
                    List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda()
                            .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString()));
                    if (organizationChartEntitiesUser!=null)
                        departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds);
        if (isAdd) {
            //自动分配业务代码开始
            List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode());
            if (organizationChartEntities != null) {
                for (OrganizationChartEntity organizationChart : organizationChartEntities) {
                    departmentIds.add(organizationChart.getId().toString());
                }
                sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
                if (sysUsers.size()==0){//如果其下级部门仍没有该分类的导半人员则查询所以该所属地区的导办人员
                    sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds,null,null);//获取导半人员
                    if(sysUsers.size()==0)//如果该所属地区没有导办人员则为特殊单据需要手动分配
                        guideRepairOrder.setState("1");
                List<SysUser> sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
                if (sysUsers.size() == 0) {//如果此所属地区部门没有导半人员则看其下级地区有没有相关分类导办人员
                    for (OrganizationChartEntity organizationChart : organizationChartEntities) {
                        //获取下级部门
                        List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda()
                                .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString()));
                        if (organizationChartEntitiesUser != null)
                            departmentIds = this.getDepartmentIds(organizationChartEntitiesUser, departmentIds);
                    }
                    sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员
                    if (sysUsers.size() == 0) {//如果其下级部门仍没有该分类的导半人员则查询所以该所属地区的导办人员
                        sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, null, null);//获取导半人员
                        if (sysUsers.size() == 0)//如果该所属地区没有导办人员则为特殊单据需要手动分配
                            guideRepairOrder.setState("1");
                    }
                }
                if (sysUsers.size() > 0) {//系统分配导办人员
                    SysUser sysUser = sysUsers.get(0);//因为sql用了升序排序所以第一条就是待办结最少的人员之一
                    guideRepairOrder.setState("2");
                    sysUser.setTransactionNum(sysUser.getTransactionNum() + 1);
                    sysUserMapper.updateById(sysUser);
                    guideRepairOrder.setGuideUserId(sysUser.getUserId().toString());
                    guideRepairOrder.setGuideDepartmentId(sysUser.getDepartmentId());
                    //新增分配记录
                    GuideEvolveEntity entity = new GuideEvolveEntity();
                    entity.setCreateTime(LocalDateTime.now());
                    entity.setUpdateTime(LocalDateTime.now());
                    entity.setState("10");
                    entity.setDepartmentalId(sysUser.getDepartmentId());
                    entity.setToUserId(guideRepairOrder.getGuideUserId() + "");
                    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 {//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配
                guideRepairOrder.setState("1");
            }
            if (sysUsers.size()>0){//系统分配导办人员
                SysUser sysUser = sysUsers.get(0);//因为sql用了升序排序所以第一条就是待办结最少的人员之一
                guideRepairOrder.setState("2");
                sysUser.setTransactionNum(sysUser.getTransactionNum()+1);
                sysUserMapper.updateById(sysUser);
                guideRepairOrder.setGuideUserId(sysUser.getUserId().toString());
                guideRepairOrder.setGuideDepartmentId(sysUser.getDepartmentId());
                //新增分配记录
                GuideEvolveEntity entity=new GuideEvolveEntity();
                entity.setCreateTime(LocalDateTime.now());
                entity.setUpdateTime(LocalDateTime.now());
                entity.setState("10");
                entity.setDepartmentalId(sysUser.getDepartmentId());
                entity.setToUserId(guideRepairOrder.getGuideUserId()+"");
                entity.setFromUserId(guideRepairOrder.getSubmitUserId());
                entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId());
                entity.setGuidOrderNum(guideRepairOrder.getOrderNum());
//                smsUtil.sendSmsOvertime(sysUser.getPhonenumber(),guideRepairOrder.getMatterName());
                guideEvolveMapper.insertConfig(entity);
            }
        }
        else{//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配
           guideRepairOrder.setState("1");
        }
        //自动分配业务代码结束
        guideRepairOrder.setCreateTime(LocalDateTime.now());
        guideRepairOrder.setUpdateTime(LocalDateTime.now());
        transactionEvent.setTransactionNum(transactionEvent.getTransactionNum()+1);
        //保存图片地址
        if (guideRepairOrder.getImages()!=null){
           String[] images = guideRepairOrder.getImages().split(",");
           for (String image: images) {
            GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
            guideRepairOrderImage.setId(Snowflake.getId());
            guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
            guideRepairOrderImage.setUrl(image);
            guideRepairOrderImage.setCreateTime(LocalDateTime.now());
            guideRepairOrderImage.setType(1);
            guideRepairOrderImageMapper.insert(guideRepairOrderImage);
          }
        }
        //保存视频地址
        if (guideRepairOrder.getVideo()!=null){
          if (guideRepairOrder.getOrderNum()!=null){
            GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
            guideRepairOrderImage.setId(Snowflake.getId());
            guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
            guideRepairOrderImage.setUrl(guideRepairOrder.getVideo());
            guideRepairOrderImage.setCreateTime(LocalDateTime.now());
            guideRepairOrderImage.setType(2);
            guideRepairOrderImageMapper.insert(guideRepairOrderImage);
        }
        }
            //自动分配业务代码结束
        int ans= baseMapper.insert(guideRepairOrder);
        int i = transactionEventMapper.updateById(transactionEvent);
        if (ans>0&&i>0)
            return 1;
        else
            guideRepairOrder.setCreateTime(LocalDateTime.now());
            guideRepairOrder.setUpdateTime(LocalDateTime.now());
            transactionEvent.setTransactionNum(transactionEvent.getTransactionNum() + 1);
            //保存图片地址
            if (guideRepairOrder.getImages() != null) {
                String[] images = guideRepairOrder.getImages().split(",");
                for (String image : images) {
                    GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
                    guideRepairOrderImage.setId(Snowflake.getId());
                    guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
                    guideRepairOrderImage.setUrl(image);
                    guideRepairOrderImage.setCreateTime(LocalDateTime.now());
                    guideRepairOrderImage.setType(1);
                    guideRepairOrderImageMapper.insert(guideRepairOrderImage);
                }
            }
            //保存视频地址
            if (guideRepairOrder.getVideo() != null) {
                if (guideRepairOrder.getOrderNum() != null) {
                    GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage();
                    guideRepairOrderImage.setId(Snowflake.getId());
                    guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum());
                    guideRepairOrderImage.setUrl(guideRepairOrder.getVideo());
                    guideRepairOrderImage.setCreateTime(LocalDateTime.now());
                    guideRepairOrderImage.setType(2);
                    guideRepairOrderImageMapper.insert(guideRepairOrderImage);
                }
            }
            int ans = baseMapper.insert(guideRepairOrder);
            int i = transactionEventMapper.updateById(transactionEvent);
            if (ans > 0 && i > 0)
                return 1;
            else
                return 0;
        } else {
            return 0;
         }
         else {
             return  0;
         }
        }
    }
    public  List<String> getDepartmentIds(  List<OrganizationChartEntity> organizationChartEntities,List<String> departmentIds){
        for (OrganizationChartEntity organizationChart:organizationChartEntities) {
    public List<String> getDepartmentIds(List<OrganizationChartEntity> organizationChartEntities, List<String> departmentIds) {
        for (OrganizationChartEntity organizationChart : organizationChartEntities) {
            departmentIds.add(organizationChart.getId().toString());
            List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda()
                    .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString()));
            if (organizationChartEntitiesUser!=null)
                departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds);
            if (organizationChartEntitiesUser != null)
                departmentIds = this.getDepartmentIds(organizationChartEntitiesUser, departmentIds);
        }
        return  departmentIds;
        return departmentIds;
    }
    @Override
    public GuideRepairOrder selectConfigData(String Id, String orderNum) {
        return baseMapper.selectConfigData(Id,orderNum);
        return baseMapper.selectConfigData(Id, orderNum);
    }
    @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());
        }
@@ -183,57 +203,106 @@
    }
    @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) {
        return baseMapper.selectConfigList(page, state, matterName, ids);
    }
    @Override
    public int countConfigList(String matterName,List<String> ids) {
        return baseMapper.countConfigList(matterName,ids);
    public int countConfigList(String matterName, List<String> ids) {
        return baseMapper.countConfigList(matterName, ids);
    }
    @Override
    public int countUser(String userId, String state) {
        return baseMapper.countUser(userId,state);
        return baseMapper.countUser(userId, state);
    }
    @Override
    public int updateSysUserOrderNum(GuideEvolveEntity order) {
       if(order.getState().equals("13")){
           SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
           sysUser.setTransactionNum(sysUser.getTransactionNum()+1);
           return  sysUserMapper.updateById(sysUser);
       }else if(order.getState().equals("12")){
            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);
        if (order.getState().equals("13")) {
            SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId()));
            sysUser.setTransactionNum(sysUser.getTransactionNum() + 1);
            return sysUserMapper.updateById(sysUser);
        } else if (order.getState().equals("12")) {
            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);
            return  sysUserMapper.updateById(sysUserTo);
       }
            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
     */
    @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);
    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);
    }
    @Override
    public List<CountListNum> countListNum(String state, List<String> ids, Integer time) {
        return baseMapper.countListNum(state, ids,time);
        return baseMapper.countListNum(state, ids, time);
    }
    @Override
    public SysUser getSubmitUser(GuideRepairOrder guideRepairOrder){
        return sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId,guideRepairOrder.getSubmitUserId()));
    public SysUser getSubmitUser(GuideRepairOrder guideRepairOrder) {
        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}