Merge remote-tracking branch 'origin/dev_20230216' into dev_20230216

This commit is contained in:
SUNJIABIN
2023-03-07 15:38:01 +08:00
19 changed files with 789 additions and 82 deletions
@@ -416,6 +416,10 @@ public class SarBussionessStandController extends BaseController<SarBussionessSt
}
}
@ApiOperation(value = "|SarBussionessStand|清空附件 重新挂靠")
@GetMapping("/emptyFileAnewStorage")
public ResponseMessage emptyFileAnewStorage (){
return sarBussionessStandEOService.emptyFileAnewStorage();
}
}
@@ -1,5 +1,6 @@
package com.adc.da.slrs.sarBussionessStand.dao;
import com.adc.da.slrs.sarBussionessStand.entity.OldSystem;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport;
import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO;
@@ -119,5 +120,7 @@ public interface SarBussionessStandDao extends BaseMapper<SarBussionessStand> {
void importSarBussionessStand(SarBussionessStand sarBussionessStands);
List<OldSystem> selectListInfo();
}
@@ -0,0 +1,33 @@
package com.adc.da.slrs.sarBussionessStand.entity;
import lombok.Data;
@Data
public class OldSystem {
//kmpro_addon34 与 buss_id 对应
private String loreDocId;
//lore_depot_sort
private String sortId;
//lore_attache
private String fileSign;
//lore_attache
private String fileSrc;
//lore_depot_sort
private String sortSign;
//新系统返回数据所需要的
private String attfid;
private String standId;
private String buildId;
// 需要组合的数据
private String attFileId;
private String original;
private String Translation;
}
@@ -55,8 +55,9 @@ public interface ISarBussionessStandService extends IService<SarBussionessStand>
void convertDocAllQB(List<SarBussStandFile> list);
void checkFileByEncrypt();
ResponseMessage emptyFileAnewStorage();
//导入
ResponseMessage<SarBussionessStand> importSarBussionessStandFile(MultipartFile file) throws Exception;
ResponseMessage<SarBussionessStand> importSarBussionessStandFile(MultipartFile file);
}
@@ -41,6 +41,7 @@ import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn;
import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService;
import com.adc.da.slrs.sarBussStandVal.dao.SarBussStandValDao;
import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal;
import com.adc.da.slrs.sarBussionessStand.entity.OldSystem;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport;
@@ -55,6 +56,7 @@ import com.adc.da.slrs.sarMenuStandard.service.ISarMenuStandardNewService;
import com.adc.da.slrs.sarResource.entity.TsResource;
import com.adc.da.slrs.sarResource.service.ITsResourceService;
import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao;
import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo;
import com.adc.da.slrs.sarStandFile.entity.SarStandFile;
import com.adc.da.slrs.sarStandItems.entity.SarStandItems;
import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao;
@@ -229,6 +231,9 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
@Autowired
private ISarBussStandAttrInfoService sarBussStandAttrInfoService;
@Autowired
private SarStandardsInfoDao sarStandardsInfoDao;
@Override
public SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId){
@@ -2003,7 +2008,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
* @throws Exception
*/
@Override
public ResponseMessage<SarBussionessStand> importSarBussionessStandFile(MultipartFile file) throws Exception {
public ResponseMessage<SarBussionessStand> importSarBussionessStandFile(MultipartFile file) {
//给出头部信息
String[] headerExcel = {"企标编号,中文名称,英文名称,文本状态,发布日期,企标实施日期,企标制修订状态,起草部门,废止日期,代替企标编号,复审日期,起草人,被代替企标编号,采用标准,文件上传人员,采标程度,引用标准,适用车型,能源类型,适用产品线,上传时间,体系类别,备案日期,关联模块-乘用车VPPS编码,关联模块--乘用车vpps中文名称,关联模块--卡车VPPS编码,关联模块--卡车vpps中文名称,附件,企标类型,标准年份,"};
@@ -2028,7 +2033,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
saveDirectory.mkdir();
}
//将文件写入到指定路径中
FileUtils.copyInputStreamToFile(file.getInputStream(),new File(path + "/" + fileNameStr));
//FileUtils.copyInputStreamToFile(file.getInputStream(),new File(path + "/" + fileNameStr));
try {
//解压缩
String zipEntryName = FileUnZip.unZipFiles(path + "/" + fileNameStr, path);
@@ -2714,6 +2719,210 @@ public class SarBussionessStandServiceImpl extends ServiceImpl<SarBussionessStan
row.setAttrInfoMap(getAttrMap);
}
}
/*
//1:数据迁移方案
//方案一:清空附件 重新挂靠
//1.流程:
//a.备份并清空新系统中标准下附件
//识别老系统中原文标签下标准对应新系统标准数据
//b.将老系统中原文附件迁移至新系统存储空间,涉及到文件的复制和转码(其中转码失败率比较高,需要一定时间)
//c.对应的文件路径储存在新系统数据库中,并且对应挂靠新系统中标准的发布稿原文下
//d.搜索中心的刷新
//
//2.关联关系
//新系统中数据表sar_standards_info表的BUILD_ID字段,对应老系统中数据表kmpro_addon34表的lore_doc_id字段
//
//老系统中
//kmpro_addon34表,记录所有标准信息
//lore_depot_sort 表中Sign字段可以看出是原文或译文
//lore_attache表中记录附件名称和路径
//
//新系统中
//sar_standards_info表,记录所有海外标准信息
//sar_buss_stand_attr_info表,记录标准对应附件(目前只有发布稿原文的字段,没有发布稿译文的存储字段。。)
//att_file_01——att_file_10表,记录附件对应存储位置
//
:
*/
@Override
public ResponseMessage emptyFileAnewStorage() {
//1 查询 新系统的所有数据 其中包含为 国内 海外 获取到 DUILD_Id 字段用来对比
List<OldSystem> SarBussionessStandList = sarBussionessStandEODao.selectListInfo();
List<OldSystem> SarStandardsInfoList = sarStandardsInfoDao.selectListInfo();
// 获取 kmpro_addon34 表的 lore_doc_id
List<OldSystem> oldSystemInfoList = sarStandardsInfoDao.selectOldSystemInfo();
//组合数据
List<OldSystem> oldArr = new ArrayList();
List<OldSystem> oldInfoArr = new ArrayList();
//文件id
List<String> fileIdList = new ArrayList<>();
//文件路径
List<String> fileSrcList = new ArrayList<>();
//国内海外
for (OldSystem oldSystem: oldSystemInfoList){
for (OldSystem SarStandardsInfo: SarStandardsInfoList){
//lore_doc_id 与 DUILD_Id
if(StringUtils.isNotBlank(SarStandardsInfo.getBuildId())){
if(oldSystem.getLoreDocId().equals(SarStandardsInfo.getBuildId())){
//查询文件是否是多个 是否存在
List<OldSystem> fileList = sarStandardsInfoDao.OldSystemFile(oldSystem.getLoreDocId());
if(!fileList.isEmpty()){
if(fileList.size()==1){
//判断文件是否存在 重新存入文件 获取id 存入att 表
OldSystem old = new OldSystem();
File file = new File(fileList.get(0).getFileSrc());
AttFileVo attFileVo = attFileEOService.saveFileInfo(file);
//文件id 和数据id
if(attFileVo != null) {
fileIdList.add(attFileVo.getId());
fileSrcList.add(fileList.get(0).getFileSrc());
old.setStandId(SarStandardsInfo.getStandId());
old.setSortSign(SarStandardsInfo.getSortSign());
//判断存入原本版本 还是译文版本
if (SarStandardsInfo.getSortSign().contains("译")) {
old.setTranslation(attFileVo.getId());
} else {
old.setOriginal(attFileVo.getId());
}
oldArr.add(old);
}
}else {
String yuan = "";
String yi = "";
OldSystem old = new OldSystem();
//每一个文件 都是一个英文版 或者译文版
// 如果每一个文件是 那我必然不能 这样子拼接
// 应该是先判断他是 英文版 还是译文版 然后再 去拼接
for (OldSystem src:fileList){
File file = new File(src.getFileSrc());
AttFileVo attFileVo = attFileEOService.saveFileInfo(file);
if(attFileVo != null) {
if (SarStandardsInfo.getSortSign().contains("译")) {
if (StringUtils.isNotBlank(yi)) {
yi = "," + attFileVo.getId();
} else {
yi = attFileVo.getId();
}
if (StringUtils.isNotBlank(yi)) {
old.setTranslation(yi);
}
} else {
if (StringUtils.isNotBlank(yuan)) {
yuan = "," + attFileVo.getId();
} else {
yuan = attFileVo.getId();
}
if (StringUtils.isNotBlank(yuan)) {
old.setOriginal(yuan);
}
}
fileSrcList.add(src.getFileSrc());
fileIdList.add(attFileVo.getId());
}
}
old.setStandId(SarStandardsInfo.getStandId());
oldArr.add(old);
}
}
}
}
}
}
// 企业
for (OldSystem oldSystem: oldSystemInfoList){
for (OldSystem sarBussionessStand: SarBussionessStandList){
//lore_doc_id 与 DUILD_Id
if(StringUtils.isNotBlank(sarBussionessStand.getBuildId())){
if(oldSystem.getLoreDocId().equals(sarBussionessStand.getBuildId())){
//查询文件是否是多个 是否存在
List<OldSystem> fileList = sarStandardsInfoDao.OldSystemFile(oldSystem.getLoreDocId());
if(!fileList.isEmpty()){
if(fileList.size()==1){
//判断文件是否存在 重新存入文件 获取id 存入att 表
OldSystem old = new OldSystem();
File file = new File(fileList.get(0).getFileSrc());
AttFileVo attFileVo = attFileEOService.saveFileInfo(file);
//文件id 和数据id
if(attFileVo != null) {
fileIdList.add(attFileVo.getId());
fileSrcList.add(fileList.get(0).getFileSrc());
old.setStandId(sarBussionessStand.getStandId());
old.setSortSign(sarBussionessStand.getSortSign());
//判断存入原本版本 还是译文版本
if (sarBussionessStand.getSortSign().contains("译")) {
old.setTranslation(attFileVo.getId());
} else {
old.setOriginal(attFileVo.getId());
}
oldInfoArr.add(old);
}
}else {
String yuan = "";
String yi = "";
OldSystem old = new OldSystem();
for (OldSystem src:fileList) {
File file = new File(src.getFileSrc());
AttFileVo attFileVo = attFileEOService.saveFileInfo(file);
if (attFileVo != null) {
if (sarBussionessStand.getSortSign().contains("译")) {
if (StringUtils.isNotBlank(yi)) {
yi = "," + attFileVo.getId();
} else {
yi = attFileVo.getId();
}
old.setTranslation(yi);
} else {
if (StringUtils.isNotBlank(yuan)) {
yuan = "," + attFileVo.getId();
} else {
yuan = attFileVo.getId();
}
old.setOriginal(yuan);
}
fileSrcList.add(src.getFileSrc());
fileIdList.add(attFileVo.getId());
}
}
old.setStandId(sarBussionessStand.getStandId());
oldInfoArr.add(old);
}
}
}
}
}
}
// 获取完整数据以后 数据库 增加字段, 然后区分是否是译文 原文 然后 进行保存 通过 id 可以找到对应的数据
// 企业
for(OldSystem data : oldInfoArr) {
SarBussStandAttrInfo sarBussStandAttrInfo = new SarBussStandAttrInfo();
String id = sarBussStandAttrInfoEODao.selectFieldValByStandId("id", data.getStandId());
if(StringUtils.isNotBlank(id)) {
sarBussStandAttrInfo.setId(id);
sarBussStandAttrInfo.setFbgbuss(data.getOriginal());
sarBussStandAttrInfo.setTranslation(data.getTranslation());
}
sarBussStandAttrInfoEODao.updateById(sarBussStandAttrInfo);
}
//海外 国内
for(OldSystem data : oldInfoArr) {
SarStandAttrInfo sarStandAttrInfo = new SarStandAttrInfo();
String id = sarStandAttrInfoEODao.selectFieldValByStandId("id", data.getStandId());
if(StringUtils.isNotBlank(id)) {
sarStandAttrInfo.setId(id);
sarStandAttrInfo.setFbgbjbd(data.getOriginal());
sarStandAttrInfo.setTranslation(data.getTranslation());
}
sarStandAttrInfoEODao.updateById(sarStandAttrInfo);
}
//文件删除
// for (String s : fileSrcList){
// File file = new File(s);
// file.delete();
// }
return Result.success();
}
}