add:企标发布稿文件出现文件重复,编写去重接口
This commit is contained in:
+8
@@ -83,4 +83,12 @@ public class SarBussStandFileController extends BaseController<SarBussStandFile>
|
||||
//非在线编辑文件可转换pdf
|
||||
return sarBussStandFileEOService.batchUpdateSarBussFileMQ();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "企标发布稿重复问题,去重处理")
|
||||
@GetMapping("/batchUpdateSarBussFileRepeat")
|
||||
public ResponseMessage<String> batchUpdateSarBussFileRepeat() throws Exception {
|
||||
String result = sarBussStandFileEOService.batchUpdateSarBussFileRepeat();
|
||||
return Result.success(result);
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -21,4 +21,6 @@ public interface ISarBussStandFileService extends IService<SarBussStandFile> {
|
||||
ResponseMessage<List<SarBussStandFile>> batchUpdateSarBussFile();
|
||||
|
||||
ResponseMessage<List<SarBussStandFile>> batchUpdateSarBussFileMQ();
|
||||
|
||||
String batchUpdateSarBussFileRepeat();
|
||||
}
|
||||
|
||||
+55
@@ -7,11 +7,15 @@ import com.adc.da.common.UseModuleEnum;
|
||||
import com.adc.da.http.ResponseMessage;
|
||||
import com.adc.da.http.Result;
|
||||
import com.adc.da.mq.CreateOnlineEditingFileMQService;
|
||||
import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo;
|
||||
import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService;
|
||||
import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile;
|
||||
import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao;
|
||||
import com.adc.da.slrs.sarBussStandFile.service.ISarBussStandFileService;
|
||||
import com.adc.da.slrs.sarBussionessStand.service.impl.SarBussionessStandServiceImpl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -20,7 +24,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -47,6 +56,9 @@ public class SarBussStandFileServiceImpl extends ServiceImpl<SarBussStandFileDao
|
||||
@Autowired
|
||||
private CreateOnlineEditingFileMQService createOnlineEditingFileMQService;
|
||||
|
||||
@Resource
|
||||
private ISarBussStandAttrInfoService standAttrInfoService;
|
||||
|
||||
@Override
|
||||
public List<SarBussStandFile> selectFileByAttId(String attId) throws Exception{
|
||||
return sarStandFileEODao.selectFileByAttId(attId);
|
||||
@@ -140,4 +152,47 @@ public class SarBussStandFileServiceImpl extends ServiceImpl<SarBussStandFileDao
|
||||
}
|
||||
return Result.success(sarBussStandFileArrayList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String batchUpdateSarBussFileRepeat() {
|
||||
// 获取所有企标详情的企标ID和发布稿字段
|
||||
LambdaQueryWrapper<SarBussStandAttrInfo> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(SarBussStandAttrInfo::getValidFlag,"0");
|
||||
wrapper.isNotNull(SarBussStandAttrInfo::getFbgbuss);
|
||||
wrapper.ne(SarBussStandAttrInfo::getFbgbuss,"");
|
||||
wrapper.select(SarBussStandAttrInfo::getStandId,SarBussStandAttrInfo::getFbgbuss);
|
||||
List<SarBussStandAttrInfo> allStand = standAttrInfoService.list(wrapper);
|
||||
// 转换为Map
|
||||
Map<String,String> fbBussMap = new HashMap<>();
|
||||
allStand.forEach(each -> fbBussMap.put(each.getStandId(),each.getFbgbuss()));
|
||||
// 循环每条数据
|
||||
for (Map.Entry<String, String> entry : fbBussMap.entrySet()) {
|
||||
// 把发布告文件做分割
|
||||
List<String> attIdList = Arrays.asList(entry.getValue().split(","));
|
||||
// 根据发布稿文件查询发布告的具体信息,获取原文件名
|
||||
LambdaQueryWrapper<SarBussStandFile> wrapper1 = new LambdaQueryWrapper<>();
|
||||
wrapper1.eq(SarBussStandFile::getValidFlag,"0");
|
||||
wrapper1.in(SarBussStandFile::getAttId, attIdList);
|
||||
List<SarBussStandFile> sarBussStandFileList = sarStandFileEODao.selectList(wrapper1);
|
||||
// 对文件名做去重
|
||||
List<SarBussStandFile> collect = sarBussStandFileList.stream()
|
||||
.filter(distinctByKey(SarBussStandFile::getFileName))
|
||||
// .sorted(Comparator.comparing(SarBussStandFile::getCreationTime))
|
||||
.collect(Collectors.toList());
|
||||
// 如果长度不相等,说明执行了去重,需要修改,重新放回企标详情表中
|
||||
String fbgbuss = collect.stream().map(SarBussStandFile::getAttId).collect(Collectors.joining(","));
|
||||
if (fbgbuss.length() != entry.getValue().length()) {
|
||||
LambdaUpdateWrapper<SarBussStandAttrInfo> wrapper2 = new LambdaUpdateWrapper<>();
|
||||
wrapper2.eq(SarBussStandAttrInfo::getStandId,entry.getKey());
|
||||
wrapper2.set(SarBussStandAttrInfo::getFbgbuss,fbgbuss);
|
||||
standAttrInfoService.update(wrapper2);
|
||||
logger.info("出现重复的企标:"+ entry.getKey() + ",去重后发布稿包含:" + fbgbuss + "---去重前发布稿包含:" + entry.getValue());
|
||||
}
|
||||
}
|
||||
return "去重成功";
|
||||
}
|
||||
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
|
||||
Set<Object> seen = ConcurrentHashMap.newKeySet();
|
||||
return t -> seen.add(keyExtractor.apply(t));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user