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 deleteWrapper = new UpdateWrapper<>(bikeRepair); bikeRepairMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } bikeRepairMapper.deleteBatchIds(ids); } @Override public void updateById(BikeRepair bikeRepair) { bikeRepairMapper.updateById(bikeRepair); } @Override public void updateByIdInBatch(List 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 wrapper = new QueryWrapper<>(bikeRepair); return bikeRepairMapper.selectOne(wrapper.last(" limit 1")); } @Override public List findList(BikeRepair bikeRepair) { QueryWrapper wrapper = new QueryWrapper<>(bikeRepair); return bikeRepairMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper 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,pageWrap.getModel().getStartDate()); } if (Objects.nonNull(pageWrap.getModel().getEndDate())) { queryWrapper.le(BikeRepair::getCreateDate, pageWrap.getModel().getEndDate()); } return PageData.from(bikeRepairJoinMapper.selectJoinPage(page, BikeRepairDTO.class,queryWrapper)); } @Override public List getBikeRepairProblemDTO(String id) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Multifile::getObjId,id) .eq(Multifile::getObjType,Constants.ZERO) .eq(Multifile::getIsdeleted,Constants.ZERO); List 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 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 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()); } }