diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java index a3961735a8..413cba21d6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java @@ -95,4 +95,10 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { @TableField(exist = false) private String categoryName; + @TableField(exist = false) + private Integer rowNum; + + @TableField(exist = false) + private Boolean existStatus = false; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java index 6dd5fcb893..cfa2ff9f9d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java @@ -2,6 +2,7 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum; import com.epmet.commons.tools.enums.DictTypeEnum; @@ -12,6 +13,7 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dao.IcDangerousChemicalsDao; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.entity.IcDangerousChemicalsEntity; import com.epmet.excel.IcCityManagementExcel; @@ -43,23 +45,34 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener errorRows = new ArrayList<>(); private List otherRows = new ArrayList<>(); private List insertList = new ArrayList<>(); + private Map existMap = null; - public DangerousChemicalsImportListener(AgencyInfoCache agencyInfo, IcDangerousChemicalsService icDangerousChemicalsService, CoverageService coverageService,EpmetAdminOpenFeignClient adminOpenFeignClient){ + public DangerousChemicalsImportListener(AgencyInfoCache agencyInfo, IcDangerousChemicalsService icDangerousChemicalsService, CoverageService coverageService, EpmetAdminOpenFeignClient adminOpenFeignClient, IcDangerousChemicalsDao icDangerousChemicalsDao){ this.agencyInfo = agencyInfo; this.icDangerousChemicalsService = icDangerousChemicalsService; this.coverageService = coverageService; this.adminOpenFeignClient = adminOpenFeignClient; + this.icDangerousChemicalsDao = icDangerousChemicalsDao; } @Override public void invoke(DangerousChemicalsModel data, AnalysisContext context) { Integer rowNum = context.readRowHolder().getRowIndex() + NumConstant.ONE; + data.setRowNum(rowNum); try { + existMap = null == existMap ? getExistMap(agencyInfo.getId()) : existMap; ValidatorUtils.validateEntity(data); + if (StringUtils.isNotBlank(existMap.get(data.getName()))){ + DangerousChemicalsModel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + errorRow.setErrorInfo("数据库存在该条数据"); + errorRows.add(errorRow); + return; + } IcDangerousChemicalsEntity e = ConvertUtils.sourceToTarget(data, IcDangerousChemicalsEntity.class); e.setSourceType("import"); e.setAgencyId(agencyInfo.getId()); @@ -78,7 +91,6 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener getExistMap(String agencyId){ + LambdaQueryWrapper tWrapper = new LambdaQueryWrapper<>(); + tWrapper.eq(IcDangerousChemicalsEntity::getAgencyId, agencyId); + List entityList = icDangerousChemicalsDao.selectList(tWrapper); + Map existMap = new HashMap<>(16); + if (CollectionUtils.isNotEmpty(entityList)){ + existMap = entityList.stream().collect(Collectors.toMap(IcDangerousChemicalsEntity::getName,IcDangerousChemicalsEntity::getId,(v1,v2) -> v1)); + } + return existMap; + } /** * Desc: 数据库插入 */ @@ -116,10 +138,31 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener groupByName = insertList.stream().collect(Collectors.groupingBy(IcDangerousChemicalsEntity::getName, Collectors.counting())); + groupByName.forEach((k,v) -> { + if (v.compareTo(NumConstant.ONE_L) != NumConstant.ZERO){ + insertList.forEach(i -> { + if (i.getName().equals(k)){ + i.setExistStatus(true); + } + }); + } + }); + Map> groupByStatus = insertList.stream().collect(Collectors.groupingBy(IcDangerousChemicalsEntity::getExistStatus)); + if (CollectionUtils.isNotEmpty(groupByStatus.get(true))){ + groupByStatus.get(true).forEach(t -> { + DangerousChemicalsModel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(t, DangerousChemicalsModel.RowRemarkMessage.class); + errorRow.setErrorInfo("表格中存在重复数据"); + errorRows.add(errorRow); + }); + } + if (CollectionUtils.isNotEmpty(groupByStatus.get(false))){ + icDangerousChemicalsService.insertBatch(groupByStatus.get(false)); + } } } finally { insertList.clear(); + existMap.clear(); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java index b74ac10121..199ab033cd 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java @@ -1,5 +1,6 @@ package com.epmet.model; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.epmet.commons.tools.constant.NumConstant; @@ -46,6 +47,9 @@ public class DangerousChemicalsModel { @ExcelProperty(value = "备注") private String remark; + @ExcelIgnore + private Integer rowNum; + @Data public static class RowRemarkMessage { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index 6126741fd6..069a321fb9 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -82,6 +82,8 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl list(IcDangerousChemicalsListFormDTO formDTO) { @@ -233,7 +235,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows();