flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -1,28 +1,41 @@
package com.dg.core.service.impl;
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.GuideRepairOrder;
import com.dg.core.db.gen.entity.GuideRepairOrderImage;
import com.dg.core.db.gen.entity.Slideshow;
import com.dg.core.db.gen.entity.TransactionEvent;
import com.dg.core.db.gen.mapper.GuideRepairOrderImageMapper;
import com.dg.core.db.gen.mapper.GuideRepairOrderMapper;
import com.dg.core.db.gen.mapper.TransactionEventMapper;
import com.dg.core.db.gen.entity.*;
import com.dg.core.db.gen.mapper.*;
import com.dg.core.service.IGuideRepairOrderService;
import com.dg.core.util.SmsUtil;
import com.dg.core.util.Snowflake;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Service
public class GuideRepairOrderServiceImpl extends ServiceImpl<GuideRepairOrderMapper, GuideRepairOrder>  implements IGuideRepairOrderService {
public class GuideRepairOrderServiceImpl extends ServiceImpl<GuideRepairOrderMapper, GuideRepairOrder>
        implements IGuideRepairOrderService {
    @Resource
    private TransactionEventMapper transactionEventMapper;
    @Resource
    private  GuideRepairOrderImageMapper guideRepairOrderImageMapper;
    @Resource
    private SysUserMapper sysUserMapper;
    @Resource
    private OrganizationChartMapper  organizationChartMapper;
    @Resource
    private  GuideEvolveMapper guideEvolveMapper;
    @Resource
    SmsUtil smsUtil;
    @Override
    public  int addOrder(GuideRepairOrder guideRepairOrder){
@@ -33,16 +46,83 @@
        guideRepairOrder.setMatterName(transactionEvent.getMatterName());
        guideRepairOrder.setDepartmentId(transactionEvent.getDepartmentId());
        guideRepairOrder.setClassifyId(transactionEvent.getClassifyId());
        guideRepairOrder.setState("1");
        List<String> departmentIds=new ArrayList<>();
        //自动分配业务代码开始
        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);
                }
                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());
//                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);
         String[] images = guideRepairOrder.getImages().split(",");
        for (String image: images) {
        //保存图片地址
        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)
@@ -52,6 +132,18 @@
    }
    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);
        }
        return  departmentIds;
    }
    @Override
    public GuideRepairOrder selectConfigData(String Id, String orderNum) {
        return baseMapper.selectConfigData(Id,orderNum);
@@ -59,6 +151,67 @@
    @Override
    public int updateConfig(GuideRepairOrder order) {
        if  ( order.getGuideUserId()!=null&&!order.getGuideUserId().equals(""))
        {
            SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getGuideUserId()));
            order.setGuideUserPhone(sysUser.getPhonenumber());
        }
        return baseMapper.updateConfig(order);
    }
    @Override
    public List<GuideRepairOrder> selectBySubmitId(String submitUserId) {
        return baseMapper.selectBySubmitId(submitUserId);
    }
    @Override
    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);
    }
    @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);
            sysUserMapper.updateById(sysUserFrom);
            return  sysUserMapper.updateById(sysUserTo);
       }
        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);
    }
    @Override
    public List<CountListNum> countListNum(String state, List<String> ids, Integer 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()));
    }
}