package com.doumee.service.business.impl; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.model.LoginUserInfo; 
 | 
import com.google.common.collect.Lists; 
 | 
  
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.Constants; 
 | 
import com.doumee.core.dingding.DingDingNotice; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.business.BikeRepairMapper; 
 | 
import com.doumee.dao.business.MultifileMapper; 
 | 
import com.doumee.dao.business.join.BikeRepairJoinMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.business.web.request.BikeRepairDTO; 
 | 
import com.doumee.dao.business.web.request.BikeRepairProblemDTO; 
 | 
import com.doumee.dao.business.web.request.BikeRepairQuery; 
 | 
import com.doumee.dao.business.web.request.RepairRequest; 
 | 
import com.doumee.service.business.BikeRepairService; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.shiro.SecurityUtils; 
 | 
import org.springframework.beans.BeanUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 车辆问题上报信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/09/27 18:06 
 | 
 */ 
 | 
@Service 
 | 
public class BikeRepairServiceImpl implements BikeRepairService { 
 | 
  
 | 
    @Autowired 
 | 
    private BikeRepairMapper bikeRepairMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private BikeRepairJoinMapper bikeRepairJoinMapper; 
 | 
  
 | 
    @Autowired 
 | 
    SystemDictDataBiz systemDictDataBiz; 
 | 
  
 | 
    @Autowired 
 | 
    private MultifileMapper multifileMapper; 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public String create(BikeRepair bikeRepair) { 
 | 
        bikeRepairMapper.insert(bikeRepair); 
 | 
        return bikeRepair.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(String id) { 
 | 
        bikeRepairMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(BikeRepair bikeRepair) { 
 | 
        UpdateWrapper<BikeRepair> deleteWrapper = new UpdateWrapper<>(bikeRepair); 
 | 
        bikeRepairMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<String> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        bikeRepairMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(BikeRepair bikeRepair) { 
 | 
        bikeRepairMapper.updateById(bikeRepair); 
 | 
    } 
 | 
    @Override 
 | 
    public   void dealDo(BikeRepair param){ 
 | 
  
 | 
        BikeRepair bikeRepair = findById(param.getId()); 
 | 
        if(bikeRepair == null ){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY); 
 | 
        } 
 | 
        if(Constants.formatIntegerNum(bikeRepair.getStatus()) != Constants.ZERO ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"该上报已处理,无需重复处理!"); 
 | 
        } 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        bikeRepair.setDealInfo(param.getDealInfo()); 
 | 
        bikeRepair.setDealUser(user.getId()); 
 | 
        bikeRepair.setStatus(Constants.ONE); 
 | 
        bikeRepair.setDealDate(new Date()); 
 | 
        bikeRepairMapper.updateById(bikeRepair); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<BikeRepair> bikeRepairs) { 
 | 
        if (CollectionUtils.isEmpty(bikeRepairs)) { 
 | 
            return; 
 | 
        } 
 | 
        for (BikeRepair bikeRepair: bikeRepairs) { 
 | 
            this.updateById(bikeRepair); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public BikeRepair findById(String id) { 
 | 
        return bikeRepairMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public BikeRepair findOne(BikeRepair bikeRepair) { 
 | 
        QueryWrapper<BikeRepair> wrapper = new QueryWrapper<>(bikeRepair); 
 | 
        return bikeRepairMapper.selectOne(wrapper.last(" limit 1")); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<BikeRepair> findList(BikeRepair bikeRepair) { 
 | 
        QueryWrapper<BikeRepair> wrapper = new QueryWrapper<>(bikeRepair); 
 | 
        return bikeRepairMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<BikeRepairDTO> findPage(PageWrap<BikeRepairQuery> pageWrap) { 
 | 
        IPage<BikeRepair> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<BikeRepair> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        queryWrapper.leftJoin(Member.class,Member::getId,BikeRepair::getMemberId) 
 | 
                    .leftJoin(BaseParam.class,BaseParam::getId,BikeRepair::getTypeId); 
 | 
        queryWrapper.selectAll(BikeRepair.class) 
 | 
                    .selectAs(Member::getOpenid,BikeRepairDTO::getOpenid) 
 | 
                    .selectAs(BikeRepair::getBinkeId,BikeRepairDTO::getBikeCode) 
 | 
                    .selectAs(BaseParam::getName,BikeRepairDTO::getBikeTypeName); 
 | 
        queryWrapper.like(StringUtils.isNotEmpty(pageWrap.getModel().getOpenid()),Member::getOpenid,pageWrap.getModel().getOpenid()) 
 | 
                    .like(StringUtils.isNotEmpty(pageWrap.getModel().getBikeCode()),BikeRepair::getBinkeId,pageWrap.getModel().getBikeCode()) 
 | 
                    .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus()); 
 | 
        if (Objects.nonNull(pageWrap.getModel().getStartDate())) { 
 | 
            queryWrapper.ge(BikeRepair::getCreateDate,Utils.Date.getStart(pageWrap.getModel().getStartDate())); 
 | 
        } 
 | 
        if (Objects.nonNull(pageWrap.getModel().getEndDate())) { 
 | 
            queryWrapper.le(BikeRepair::getCreateDate,Utils.Date.getEnd(pageWrap.getModel().getEndDate())); 
 | 
        } 
 | 
        queryWrapper.orderByDesc(BikeRepair::getCreateDate); 
 | 
        return PageData.from(bikeRepairJoinMapper.selectJoinPage(page, BikeRepairDTO.class,queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<Multifile> getBikeRepairProblemDTO(String id) { 
 | 
        QueryWrapper<Multifile> wrapper = new QueryWrapper<>(); 
 | 
        wrapper.lambda() 
 | 
                .eq(Multifile::getObjId,id) 
 | 
                .eq(Multifile::getObjType,Constants.ZERO) 
 | 
                .eq(Multifile::getIsdeleted,Constants.ZERO); 
 | 
        List<Multifile> multifiles = multifileMapper.selectList(wrapper); 
 | 
        //TODO 需要修改 
 | 
        String path =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode()+ systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.REPAIR).getCode(); 
 | 
        if (!CollectionUtils.isEmpty(multifiles)){ 
 | 
            multifiles.forEach(s->{ 
 | 
                if(StringUtils.isNotBlank(s.getFileurl())){ 
 | 
                    //完整附件地址 
 | 
                    s.setFileurlfull(path+s.getFileurl()); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        return multifiles; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(BikeRepair bikeRepair) { 
 | 
        QueryWrapper<BikeRepair> wrapper = new QueryWrapper<>(bikeRepair); 
 | 
        return bikeRepairMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void saveRepair(RepairRequest repairRequest) throws Exception{ 
 | 
        BikeRepair bikeRepair = new BikeRepair(); 
 | 
        BeanUtils.copyProperties(repairRequest,bikeRepair); 
 | 
        bikeRepair.setCreateDate(new Date()); 
 | 
        bikeRepair.setIsdeleted(Constants.ZERO); 
 | 
        bikeRepair.setStatus(Constants.ZERO); 
 | 
        bikeRepair.setId(Constants.getUUID()); 
 | 
        bikeRepairMapper.insert(bikeRepair); 
 | 
        //处理附件信息 
 | 
        List<String> stringList = repairRequest.getFileUrlList(); 
 | 
        if(!Objects.isNull(stringList)&&stringList.size()>Constants.ZERO){ 
 | 
            for (int i = 0; i < stringList.size(); i++) { 
 | 
                Multifile multifile = new Multifile(); 
 | 
                multifile.setId(Constants.getUUID()); 
 | 
                multifile.setCreateDate(new Date()); 
 | 
                multifile.setIsdeleted(Constants.ZERO); 
 | 
                multifile.setSortnum(i+Constants.ONE); 
 | 
                multifile.setObjId(bikeRepair.getId()); 
 | 
                multifile.setType(Constants.ZERO); 
 | 
                multifile.setObjType(Constants.ZERO); 
 | 
                multifile.setFileurl(stringList.get(i)); 
 | 
                multifileMapper.insert(multifile); 
 | 
            } 
 | 
        } 
 | 
        //发送钉钉通知 
 | 
        DingDingNotice.bikeRepair(repairRequest, 
 | 
                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_URL).getCode(), 
 | 
                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode()); 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |