| package com.doumee.service.business.impl; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| 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.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 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()) | 
|                     .ge(Objects.nonNull(pageWrap.getModel().getStartDate()),BikeRepair::getCreateDate,pageWrap.getModel().getStartDate()) | 
|                     .le(Objects.nonNull(pageWrap.getModel().getEndDate()),BikeRepair::getCreateDate,pageWrap.getModel().getEndDate()); | 
|         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()); | 
|   | 
|     } | 
|   | 
|   | 
|   | 
| } |