package com.hivekion.baseData.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hivekion.baseData.domain.TblFuel; import com.hivekion.baseData.domain.TblFuelVo.TblFuelViewVo; import com.hivekion.baseData.domain.TblPropulsionVo.TblPropulsionViewVo; import com.hivekion.baseData.domain.TblShipFuel; import com.hivekion.baseData.domain.TblShipVo.TblShipFuelAddInputVo; import com.hivekion.baseData.mapper.TblFuelMapper; import com.hivekion.baseData.mapper.TblShipFuelMapper; import com.hivekion.baseData.service.ITblShipFuelService; import com.hivekion.baseData.service.ITblShipPropulsionService; import com.hivekion.common.exception.BusinessException; import com.hivekion.dicData.service.IDicFuelTypeService; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class TblShipFuelServiceImpl extends ServiceImpl implements ITblShipFuelService { @Autowired private TblFuelMapper fuelMapper; @Autowired private IDicFuelTypeService fuelTypeService; @Autowired private ITblShipPropulsionService propulsionService; @Override public List getList(String Guid) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TblShipFuel::getGuid, Guid); List list = this.list(wrapper); List result = new ArrayList<>(); for (TblShipFuel Fuels : list) { TblFuel tblFuel = fuelMapper.selectById(Fuels.getComponentId()); TblFuelViewVo vo = new TblFuelViewVo(); BeanUtils.copyProperties(tblFuel, vo); vo.setType(fuelTypeService.getName(tblFuel.getType())); result.add(vo); } return result; } @Override public boolean remove(String Guid, String ComponentGuid, Integer status, Integer ComponentNumber) { if (status == 0) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TblShipFuel::getGuid, Guid); wrapper.eq(TblShipFuel::getComponentGuid, ComponentGuid); // wrapper.eq(TblShipFuel::getComponentNumber, ComponentNumber); return this.remove(wrapper); } else { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TblShipFuel::getGuid, Guid); return this.remove(wrapper); } } @Override public boolean add(TblShipFuelAddInputVo vo) { TblShipFuel fuel = new TblShipFuel(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TblShipFuel::getId, vo.getId()); BeanUtils.copyProperties(vo, fuel); List list = this.list(wrapper).stream() .sorted(Comparator.comparing(TblShipFuel::getComponentNumber)).collect(Collectors.toList()); if (list.size() != 0) { fuel.setComponentNumber(list.get(list.size() - 1).getComponentNumber() + 1); } else { fuel.setComponentNumber(1); } fuel.setGuid("dataship-" + String.format("%16d", vo.getId()).replace(" ", "0")); fuel.setComponentGuid( "datafuel-" + String.format("%16d", vo.getComponentId()).replace(" ", "0")); List propulsionList = propulsionService.getList(fuel.getGuid()); if (propulsionList == null) { throw new BusinessException(500, "请先添加对应的推进系统"); } return this.save(fuel); } }