feat: 老法规企标体系关联导入
This commit is contained in:
+46
@@ -0,0 +1,46 @@
|
||||
package com.jero.modules.laws.oldSystem.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
* @Date: 2023/12/5 10:49
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class ESOldStandardSystem {
|
||||
|
||||
@Excel(name = "ID", width = 15, orderNum = "0")
|
||||
private String id;
|
||||
|
||||
@Excel(name = "BZH", width = 15, orderNum = "1")
|
||||
private String bzh;
|
||||
|
||||
@Excel(name = "BZMC", width = 15, orderNum = "4")
|
||||
private String bzmc;
|
||||
|
||||
@Excel(name = "BZYWMC", width = 15, orderNum = "5")
|
||||
private String bzywmc;
|
||||
|
||||
@Excel(name = "BZFL-NEW", width = 15, orderNum = "6")
|
||||
private String bzfl;
|
||||
|
||||
@Excel(name = "错误信息", width = 35, orderNum = "52")
|
||||
@TableField(exist = false)
|
||||
private String errorInfo;
|
||||
|
||||
/**
|
||||
* 判断是否是空行
|
||||
* @return 如果所有字段都为null或空字符串,返回true,否则返回false
|
||||
*/
|
||||
public boolean isEmptyRow() {
|
||||
return id == null && bzmc == null && bzywmc == null && bzfl == null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.jero.modules.laws.enterprise.entity;
|
||||
package com.jero.modules.laws.oldSystem.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
+115
-9
@@ -16,25 +16,21 @@ import com.jero.modules.activiti.util.ExcelUtils;
|
||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthUser;
|
||||
import com.jero.modules.laws.enterprise.entity.OldSystemImportDTO;
|
||||
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
|
||||
import com.jero.modules.laws.oldSystem.entity.OldSystemImportDTO;
|
||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService;
|
||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
|
||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||
import com.jero.modules.laws.home.service.ILawsHomeSearchService;
|
||||
import com.jero.modules.laws.oldSystem.entity.ESAuthAll;
|
||||
import com.jero.modules.laws.oldSystem.entity.ESAuthDept;
|
||||
import com.jero.modules.laws.oldSystem.entity.ESAuthUser;
|
||||
import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation;
|
||||
import com.jero.modules.laws.oldSystem.entity.*;
|
||||
import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService;
|
||||
import com.jero.modules.laws.oldSystem.service.OldSystemService;
|
||||
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsTreeNode;
|
||||
import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper;
|
||||
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsReplacedStandardService;
|
||||
import com.jero.modules.laws.standard.service.*;
|
||||
import com.jero.modules.laws.standard.util.StandardSplitUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
@@ -42,6 +38,7 @@ import com.jero.modules.system.entity.SysDepart;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysDepartService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import com.jero.modules.tag.enums.TableNameEnum;
|
||||
import io.minio.errors.MinioException;
|
||||
import lombok.Cleanup;
|
||||
import lombok.SneakyThrows;
|
||||
@@ -52,6 +49,7 @@ import org.jeecgframework.poi.excel.ExcelExportUtil;
|
||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.entity.ImportParams;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -124,6 +122,12 @@ public class OldSystemServiceImpl implements OldSystemService {
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService esService;
|
||||
|
||||
@Resource
|
||||
private ILawsTreeNodeService treeNodeService;
|
||||
|
||||
@Resource
|
||||
private ILawsNodeRelationService lawsNodeRelationService;
|
||||
|
||||
@Override
|
||||
public void importExcelOldSystem(MultipartFile file, String type, HttpServletResponse response) {
|
||||
List<OldSystemImportDTO> errImportList = new ArrayList<>();
|
||||
@@ -858,7 +862,109 @@ public class OldSystemServiceImpl implements OldSystemService {
|
||||
|
||||
@Override
|
||||
public void importEsStandSystem(MultipartFile file, HttpServletResponse response) {
|
||||
List<ESOldStandardSystem> errImportList = new ArrayList<>();
|
||||
// 验证文件是否为压缩格式file.getContentType()).contains("xls")
|
||||
if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) {
|
||||
throw new JeroBootException("文件格式不正确,请上传Excel。");
|
||||
}
|
||||
ImportParams params = new ImportParams();
|
||||
params.setTitleRows(0);
|
||||
params.setNeedSave(true);
|
||||
|
||||
// 获取所有企标转为Map
|
||||
// 筛选有oldSystemId的数据
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
|
||||
List<LawsEnterpriseStandard> esList = esService.list(esWrapper.isNotNull(LawsEnterpriseStandard::getOldSystemId));
|
||||
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o));
|
||||
|
||||
// 获取所有企标体系节点并转为Map
|
||||
String moduleCode = TableNameEnum.ENTERPRISE_STANDARDS.getValue();
|
||||
LambdaQueryWrapper<LawsTreeNode> treeNodeWrapper = new LambdaQueryWrapper<>();
|
||||
treeNodeWrapper.eq(LawsTreeNode::getModuleCode, moduleCode);
|
||||
treeNodeWrapper.eq(LawsTreeNode::getDelFlag, YesOrNoEnum.NO.getValue());
|
||||
List<LawsTreeNode> treeNodeList = treeNodeService.list(treeNodeWrapper);
|
||||
Map<String, LawsTreeNode> nodeIdMap = treeNodeList.stream().collect(Collectors.toMap(LawsTreeNode::getId, o -> o));
|
||||
// 构建路径Map
|
||||
Map<String, LawsTreeNode> pathMap = treeNodeList.stream()
|
||||
.collect(Collectors.toMap(
|
||||
node -> buildPathToRoot(node.getId(), nodeIdMap),
|
||||
o -> o));
|
||||
|
||||
// 获取数据
|
||||
List<ESOldStandardSystem> datalist;
|
||||
try {
|
||||
// 获取当前时间戳(毫秒)
|
||||
long startTime = System.currentTimeMillis();
|
||||
@Cleanup
|
||||
InputStream inputStream = file.getInputStream();
|
||||
datalist = ExcelImportUtil.importExcel(inputStream, ESOldStandardSystem.class, params);
|
||||
// 删除空行
|
||||
datalist.removeIf(ESOldStandardSystem::isEmptyRow);
|
||||
// 只取用企标数据
|
||||
// 区分数据
|
||||
log.info("获取数据成功,总数据条数:{}", datalist.size());
|
||||
// 获取当前时间戳(毫秒)
|
||||
long endTime = System.currentTimeMillis();
|
||||
// 计算执行时间(毫秒)
|
||||
long executionTime = endTime - startTime;
|
||||
log.info("数据转换执行时间:" + executionTime + " 毫秒");
|
||||
|
||||
for (ESOldStandardSystem ss : datalist) {
|
||||
try {
|
||||
String bzfl = ss.getBzfl();
|
||||
// 根据标准分类找到对应的节点
|
||||
LawsTreeNode treeNode = pathMap.get(bzfl);
|
||||
if (treeNode == null) {
|
||||
throw new JeroBootException("未找到该节点,节点名称:" + bzfl);
|
||||
}
|
||||
// 根据当前数据的id找到对应的企标
|
||||
LawsEnterpriseStandard es = esMap.get(ss.getId());
|
||||
if (es == null) {
|
||||
throw new JeroBootException("未找到该企标,标准编号:" + ss.getBzh() + ",标准名称:" + ss.getBzmc());
|
||||
}
|
||||
lawsNodeRelationService.removeByStandardId(es.getId());
|
||||
lawsNodeRelationService.addRelation(treeNode.getId(), null, es.getId());
|
||||
}catch (Exception e) {
|
||||
log.error("错误数据:{}", ss.toString());
|
||||
ss.setErrorInfo(e.getMessage());
|
||||
errImportList.add(ss);
|
||||
}
|
||||
}
|
||||
log.info("企标体系导入成功");
|
||||
} catch (Exception e) {
|
||||
log.error("导入失败;{}", e.getMessage());
|
||||
|
||||
}
|
||||
if (!errImportList.isEmpty()) {
|
||||
log.info("导入失败数据条数:{}", errImportList.size());
|
||||
this.exportWithExcel(response, errImportList, "ESStandSystemErrorData.xls");
|
||||
}
|
||||
log.info("企标体系导入结束");
|
||||
}
|
||||
|
||||
// 获取父节点的nodeCode
|
||||
private String getParentNodeCode(String nodeCode) {
|
||||
if (nodeCode.length() > 3) {
|
||||
return nodeCode.substring(0, nodeCode.length() - 3);
|
||||
} else {
|
||||
return null; // 没有父节点
|
||||
}
|
||||
}
|
||||
|
||||
// 在您的类中添加这个方法
|
||||
private String buildPathToRoot(String nodeId, Map<String, LawsTreeNode> nodeIdMap) {
|
||||
// 获取当前节点
|
||||
LawsTreeNode currentNode = nodeIdMap.get(nodeId);
|
||||
if (currentNode == null) {
|
||||
return ""; // 或者处理节点不存在的情况
|
||||
}
|
||||
// 检查是否是根节点
|
||||
if (currentNode.getParentId() == null || currentNode.getParentId().isEmpty()) {
|
||||
return currentNode.getNodeName(); // 根节点的情况
|
||||
}
|
||||
// 递归地构建路径
|
||||
String parentPath = buildPathToRoot(currentNode.getParentId(), nodeIdMap);
|
||||
return parentPath + "/" + currentNode.getNodeName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user