package com.fdkankan.fusion.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fdkankan.fusion.common.ResultCode;
import com.fdkankan.fusion.entity.*;
import com.fdkankan.fusion.exception.BusinessException;
import com.fdkankan.fusion.mapper.IFusionMeterMapper;
import com.fdkankan.fusion.service.ICaseFusionService;
import com.fdkankan.fusion.service.ICaseService;
import com.fdkankan.fusion.service.IFusionMeterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2022-08-11
*/
@Service
public class FusionMeterServiceImpl extends ServiceImpl implements IFusionMeterService {
@Autowired
ICaseFusionService caseFusionService;
@Override
public List getListByFusionId(Integer fusionId, String meterTitle) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FusionMeter::getFusionId,fusionId);
wrapper.eq(FusionMeter::getBindHide,0);
if(StringUtils.isNotBlank(meterTitle)){
wrapper.like(FusionMeter::getMeterTitle,meterTitle);
}
return this.list(wrapper);
}
@Override
public FusionMeter add(FusionMeter fusionMeter) {
if(fusionMeter.getFusionId() == null || fusionMeter.getLength() == null
|| fusionMeter.getMeterType() == null || StringUtils.isEmpty(fusionMeter.getPosition())){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
String meterTitle = "总长度";
if(fusionMeter.getMeterType() == 2){
meterTitle = "总面积";
}
fusionMeter.setMeterTitle(meterTitle);
this.save(fusionMeter);
return fusionMeter;
}
@Override
public void deleteByFusionNumIds(List fusionNunIds) {
for (Integer fusionNunId : fusionNunIds) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.like(FusionMeter::getPosition,"\"fusionNumId\":\""+fusionNunId+"\"");
this.remove(wrapper);
}
}
@Override
public void deleteByFusionId(Integer fusionId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FusionMeter::getFusionId,fusionId);
this.remove(wrapper);
}
@Override
public void deleteByCaseId(Integer caseId) {
LambdaQueryWrapper fnwr = new LambdaQueryWrapper<>();
fnwr.eq(CaseFusion::getCaseId,caseId);
List list = caseFusionService.list(fnwr);
if(list.size() >0){
List fusionIds = list.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
if(fusionIds.size() >0){
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(FusionMeter::getFusionId,fusionIds);
this.remove(wrapper);
}
}
}
@Override
public void hideOrShow( List fusionNumIds, Integer hide) {
for (Integer fusionNunId : fusionNumIds) {
LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
wrapper.like(FusionMeter::getPosition,"\"fusionNumId\":\""+fusionNunId+"\"");
wrapper.set(FusionMeter::getBindHide,hide);
this.update(wrapper);
}
}
}