diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index 8c439aa218..86417c86ea 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -19,6 +19,7 @@ public interface ImportTaskConstants { String BIZ_TYPE_ATTENTION_VACCINATION = "attention_vaccination"; String BIZ_TYPE_ATTENTION_TRIP_REPORT = "attention_vaccination"; String BIZ_TYPE_IC_PARTY_MEMBER = "ic_party_member"; + String BIZ_TYPE_IC_DANGEROUS_CHEMICALS = "ic_dangerous_chemicals"; /** * 核酸检测 */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java index ef85be1d31..2258b94762 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java @@ -69,12 +69,21 @@ public class IcPartyUnitDTO implements Serializable { @NotBlank(message = "分类不能为空",groups = AddGroup.class) private String type; + /** + * 分类名称 + */ + private String typeName; + /** * 服务事项 多选逗号隔开 */ private String serviceMatter; private List serviceMatterList; + /** + * 服务事项名称 + */ + private List serviceMatterNameList; /** * 联系人 diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/CommunitySelfOrganizationListFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/CommunitySelfOrganizationListFormDTO.java index 7a8fba0899..30c0584e95 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/CommunitySelfOrganizationListFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/CommunitySelfOrganizationListFormDTO.java @@ -50,4 +50,6 @@ public class CommunitySelfOrganizationListFormDTO implements Serializable { private String remark; private String categoryCode; + //查详情时候用 + private String orgId; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java index 755a5d881d..f3c8430b3e 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java @@ -157,4 +157,5 @@ public interface EpmetHeartOpenFeignClient { */ @PostMapping("/heart/resi/volunteer/addVolunteer") Result addVolunteer(@RequestBody ResiVolunteerAuthenticateFormDTO formDTO); + } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java index e818a49b04..10670de1ab 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java @@ -13,11 +13,13 @@ import com.epmet.dto.form.IcDemandFormDTO; import com.epmet.dto.form.PartyUnitListFormDTO; import com.epmet.dto.form.demand.DemandRecId; import com.epmet.dto.form.demand.IcEventCommentToDemandFromDTO; +import com.epmet.dto.form.demand.ServiceItemSelectFormDTO; import com.epmet.dto.form.demand.UserDemandNameQueryFormDTO; import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO; import com.epmet.dto.form.resi.VolunteerCommonFormDTO; import com.epmet.dto.result.PartyUnitListResultDTO; import com.epmet.dto.result.demand.IcResiDemandDictDTO; +import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.PageVolunteerInfoResultDTO; import com.epmet.feign.EpmetHeartOpenFeignClient; @@ -158,4 +160,5 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli public Result addVolunteer(ResiVolunteerAuthenticateFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "addVolunteer", formDTO); } + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index 399e9c7e81..ccdc9c79d7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -255,6 +255,17 @@ public class IcCommunitySelfOrganizationController { return new Result().ok(icCommunitySelfOrganizationService.communitySelfOrganizationList(tokenDto, formDTO)); } + /** + * 社区自组织详情 + * @param orgId 社区自组织id + * @return + */ + @PostMapping("community-self-org-detail/{orgId}") + public Result communitySelfOrganizationDetail(@LoginUser TokenDto tokenDto,@PathVariable("orgId") String orgId){ + return new Result().ok(icCommunitySelfOrganizationService.communitySelfOrganizationDetail(orgId,tokenDto.getCustomerId())); + } + + /** * @Description 社区自组织删除 * @param formDTO diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java index 14008a7ce2..1da3a3137e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java @@ -181,4 +181,11 @@ public interface IcCommunitySelfOrganizationService extends BaseService queryCoordinateList(CategorySelfOrgFormDTO formDTO); + + /** + * 社区自组织详情 + * @param orgId + * @return + */ + CommunitySelfOrganizationListDTO communitySelfOrganizationDetail(String orgId,String customerId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 52b11d72a1..7f6eee3a8f 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -800,4 +800,30 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl(list, NumConstant.ONE_NEG); } + /** + * 社区自组织详情 + * + * @param orgId + * @return + */ + @Override + public CommunitySelfOrganizationListDTO communitySelfOrganizationDetail(String orgId,String customerId) { + //获取分类名称字典 + Result> dictMapRes=adminOpenFeignClient.dictMap(DictTypeEnum.SELF_ORG_CATEGORY.getCode()); + Map dictMap = dictMapRes.success() && MapUtils.isNotEmpty(dictMapRes.getData()) ? dictMapRes.getData() : new HashMap<>(); + CommunitySelfOrganizationListFormDTO formDTO=new CommunitySelfOrganizationListFormDTO(); + formDTO.setCustomerId(customerId); + formDTO.setOrgId(orgId); + List list=baseDao.selectCommunitySelfOrganizationList(formDTO); + if(CollectionUtils.isEmpty(list)){ + return null; + } + for (CommunitySelfOrganizationListDTO l : list) { + //赋值分类名称 + l.setCategoryName(dictMap.get(l.getCategoryCode())); + } + return list.get(NumConstant.ZERO); + } + + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index 5d7f450672..91dc0baa57 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -60,15 +60,16 @@ import com.epmet.excel.IcPartyUnitImportExcel; import com.epmet.excel.IcPartyUnitImportFailedExcel; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.EpmetHeartOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcPartyUnitService; -import com.epmet.service.IcResiDemandDictService; import com.epmet.service.IcServiceItemDictService; import com.epmet.service.IcUserDemandRecService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; @@ -103,13 +104,13 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl search(PartyUnitFormDTO formDTO) { @@ -198,6 +199,25 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl pointMap = icUserDemandRecService.getServicePoint(entity.getCustomerId(), UserDemandConstant.PARTY_UNIT); dto.setServiceMatterList(Arrays.asList(dto.getServiceMatter().split(StrConstant.COMMA))); dto.setScore(null == pointMap.get(id) ? NumConstant.ZERO : pointMap.get(id)); + // 分类名称 + //获取分类名称字典 + Result> typeDictMapRes=epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode()); + Map typeDictMap = typeDictMapRes.success() && MapUtils.isNotEmpty(typeDictMapRes.getData()) ? typeDictMapRes.getData() : new HashMap<>(); + dto.setType(MapUtils.isNotEmpty(typeDictMap) && typeDictMap.containsKey(dto.getType()) ? typeDictMap.get(dto.getType()) : StrConstant.EPMETY_STR); + // 服务事项 + if(CollectionUtils.isNotEmpty(dto.getServiceMatterList())){ + List serviceMateerRes=icServiceItemDictService.queryDictList(entity.getCustomerId()); + if(CollectionUtils.isNotEmpty(serviceMateerRes)){ + Map serviceMap=serviceMateerRes.stream().collect(Collectors.toMap(OptionDTO::getValue,OptionDTO::getLabel)); + List serviceMatterNameList=new ArrayList<>(); + for(String serviceMatterCode:dto.getServiceMatterList()){ + if(MapUtils.isNotEmpty(serviceMap)&&serviceMap.containsKey(serviceMatterCode)){ + serviceMatterNameList.add(serviceMap.get(serviceMatterCode)); + } + } + dto.setServiceMatterNameList(serviceMatterNameList); + } + } } return dto; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml index d7b90133a4..bb705fc32a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml @@ -62,7 +62,9 @@ so.remark FROM ic_community_self_organization so WHERE so.DEL_FLAG = 0 - AND so.ORG_ID = #{agencyId} + + AND so.ORG_ID = #{agencyId} + AND so.CUSTOMER_ID = #{customerId} AND so.ORGANIZATION_NAME LIKE CONCAT('%',#{organizationName},'%') @@ -76,6 +78,9 @@ AND so.ORGANIZATION_CREATED_TIME #{endTime} + + AND so.ID = #{orgId} + ORDER BY so.ORGANIZATION_CREATED_TIME DESC diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java index 646843848d..04862f1752 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcCityManagementController.java @@ -7,40 +7,47 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcCityManagementDTO; import com.epmet.dto.form.IcCityManagementAddEditFormDTO; import com.epmet.dto.form.IcCityManagementListFormDTO; import com.epmet.dto.result.IcCityManagementListResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcCityManagementExcel; import com.epmet.service.IcCityManagementService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; +import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.UUID; /** @@ -52,7 +59,7 @@ import java.util.List; @RestController @RequestMapping("icCityManagement") @Slf4j -public class IcCityManagementController { +public class IcCityManagementController implements ResultDataResolver { @Autowired private IcCityManagementService icCityManagementService; @@ -159,6 +166,48 @@ public class IcCityManagementController { } } + @PostMapping("import") + public Result importExcel(MultipartFile file) { + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_city_management", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【城市管理导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入优势资源管理信息错误", + "导入势资源管理信息失败"); + + // 3.执行导入 + icCityManagementService.importExcel(fileSavePath, rstData.getTaskId()); + + return new Result(); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java index 97e34f384b..d7679b31fa 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java @@ -7,40 +7,48 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcDangerousChemicalsDTO; import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO; import com.epmet.dto.form.IcDangerousChemicalsListFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.IcDangerousChemicalsListResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcDangerousChemicalsExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcDangerousChemicalsService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; +import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.UUID; /** @@ -56,6 +64,8 @@ public class IcDangerousChemicalsController { @Autowired private IcDangerousChemicalsService icDangerousChemicalsService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @RequestMapping("list") public Result> list(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsListFormDTO formDTO) { @@ -159,7 +169,51 @@ public class IcDangerousChemicalsController { } } - + /** + * Desc: 重点危化品企业导入 + * @param file + * @param tokenDto + * @author zxc + * @date 2022/6/20 10:25 + */ + @PostMapping("import") + public Result dangerousChemicalsImport(@RequestParam("file")MultipartFile file,@LoginUser TokenDto tokenDto){ + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_dangerous_chemicals", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【重点危化品企业导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + InputStream is = null; + FileOutputStream os = null; + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + // 2.生成导入任务记录 + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_IC_DANGEROUS_CHEMICALS); + importFormDTO.setOperatorId(tokenDto.getUserId()); + importFormDTO.setOriginFileName(file.getOriginalFilename()); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "", "存在进行中的导入"); + } + icDangerousChemicalsService.dangerousChemicalsImport(fileSavePath,importTask.getData().getTaskId(),tokenDto); + return new Result(); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java index b503c39720..71f9fe324b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPublicServiceController.java @@ -7,41 +7,48 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcPublicServiceDTO; import com.epmet.dto.form.IcPublicServiceAddEditFormDTO; import com.epmet.dto.form.IcPublicServiceListFormDTO; import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO; import com.epmet.dto.result.IcPublicServiceListResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcPublicServiceExcel; import com.epmet.service.IcPublicServiceService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; +import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.UUID; /** @@ -53,7 +60,7 @@ import java.util.List; @RestController @RequestMapping("icPublicService") @Slf4j -public class IcPublicServiceController { +public class IcPublicServiceController implements ResultDataResolver { @Autowired private IcPublicServiceService icPublicServiceService; @@ -160,6 +167,48 @@ public class IcPublicServiceController { } } + @PostMapping("import") + public Result importExcel(MultipartFile file) { + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_public_service", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【优势资源管理导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入优势资源管理信息错误", + "导入势资源管理信息失败"); + + // 3.执行导入 + icPublicServiceService.importExcel(fileSavePath, rstData.getTaskId()); + + return new Result(); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java index 1664941d01..df66d7a734 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcSuperiorResourceController.java @@ -6,41 +6,49 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcSuperiorResourceDTO; import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO; import com.epmet.dto.form.IcSuperiorResourceListFormDTO; import com.epmet.dto.result.IcSuperiorResourceListResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcSuperiorResourceExcel; import com.epmet.service.IcSuperiorResourceService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; +import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.UUID; /** @@ -52,7 +60,7 @@ import java.util.List; @RestController @RequestMapping("icSuperiorResource") @Slf4j -public class IcSuperiorResourceController { +public class IcSuperiorResourceController implements ResultDataResolver { @Autowired private IcSuperiorResourceService icSuperiorResourceService; @@ -159,5 +167,48 @@ public class IcSuperiorResourceController { } } + @PostMapping("import") + public Result importExcel(MultipartFile file) { + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【优势资源管理导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_IC_VACCINE), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入优势资源管理信息错误", + "导入势资源管理信息失败"); + + // 3.执行导入 + icSuperiorResourceService.importExcel(fileSavePath, rstData.getTaskId()); + + return new Result(); + } + } 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 e4e9e35252..a3961735a8 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 @@ -1,5 +1,6 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; @@ -88,4 +89,10 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { */ private String remark; + @TableField(exist = false) + private String dangerTypeName; + + @TableField(exist = false) + private String categoryName; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java index 07b7ceae8b..5cc3b6556f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcCityManagementExcel.java @@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** * 城市管理图层 * @@ -15,10 +17,12 @@ public class IcCityManagementExcel { @ExcelProperty(value = "场所名称") @ColumnWidth(25) + @NotBlank(message = "场所名称为必填项") private String name; @ExcelProperty(value = "场所类别") @ColumnWidth(20) + @NotBlank(message = "场所类别为必填项") private String categoryName; @ExcelProperty(value = "占地面积") @@ -31,6 +35,27 @@ public class IcCityManagementExcel { @ExcelProperty(value = "地址") @ColumnWidth(25) + @NotBlank(message = "地址为必填项") private String address; + @Data + public static class RowRemarkMessage { + + @ExcelProperty("场所名称") + @ColumnWidth(20) + private String name; + + @ExcelProperty("场所类别") + @ColumnWidth(20) + private String categoryName; + + @ExcelProperty("地址") + @ColumnWidth(20) + private String address; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java index b8e97b24ce..9f3728cb22 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcPublicServiceExcel.java @@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** * 公共服务图层 * @@ -15,10 +17,12 @@ public class IcPublicServiceExcel { @ExcelProperty(value = "场所名称") @ColumnWidth(25) + @NotBlank(message = "场所名称为必填项") private String name; @ExcelProperty(value = "场所类别") @ColumnWidth(20) + @NotBlank(message = "场所类别为必填项") private String categoryName; @ExcelProperty(value = "占地面积") @@ -31,6 +35,27 @@ public class IcPublicServiceExcel { @ExcelProperty(value = "地址") @ColumnWidth(25) + @NotBlank(message = "地址为必填项") private String address; + @Data + public static class RowRemarkMessage { + + @ExcelProperty("场所名称") + @ColumnWidth(20) + private String name; + + @ExcelProperty("场所类别") + @ColumnWidth(20) + private String categoryName; + + @ExcelProperty("地址") + @ColumnWidth(20) + private String address; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java index b62792ec1c..1f3b1a8667 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcSuperiorResourceExcel.java @@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** * 优势资源管理 * @@ -15,10 +17,12 @@ public class IcSuperiorResourceExcel { @ExcelProperty(value = "场所名称") @ColumnWidth(25) + @NotBlank(message = "场所名称为必填项") private String name; @ExcelProperty(value = "场所类别") @ColumnWidth(20) + @NotBlank(message = "场所类别为必填项") private String categoryName; @ExcelProperty(value = "占地面积") @@ -31,7 +35,27 @@ public class IcSuperiorResourceExcel { @ExcelProperty(value = "地址") @ColumnWidth(25) + @NotBlank(message = "地址为必填项") private String address; + @Data + public static class RowRemarkMessage { + + @ExcelProperty("场所名称") + @ColumnWidth(20) + private String name; + + @ExcelProperty("场所类别") + @ColumnWidth(20) + private String categoryName; + + @ExcelProperty("地址") + @ColumnWidth(20) + private String address; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java new file mode 100644 index 0000000000..064a322727 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcCityManagementExcelImportListener.java @@ -0,0 +1,132 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; +import com.epmet.entity.IcCityManagementEntity; +import com.epmet.excel.IcCityManagementExcel; +import com.epmet.service.CoverageService; +import com.epmet.service.impl.IcCityManagementServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 城市管理excel导入监听器 + */ +@Data +@Slf4j +public class IcCityManagementExcelImportListener implements ReadListener { + + //最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String currentUserId; + private String currentCustomerId; + private String currentAgencyId; + private String currentAgencyPids; + + //数据 + private List datas = new ArrayList<>(); + //错误项列表 + private List errorRows = new ArrayList<>(); + //其他被标记出来的列表列表 + private List otherRows = new ArrayList<>(); + private IcCityManagementServiceImpl IcCityManagementServiceImpl; + private CoverageService coverageService; + + public IcCityManagementExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcCityManagementServiceImpl IcCityManagementServiceImpl, CoverageService coverageService) { + this.currentUserId = currentUserId; + this.currentCustomerId = currentCustomerId; + this.currentAgencyId = currentAgencyId; + this.currentAgencyPids = currentAgencyPids; + this.IcCityManagementServiceImpl = IcCityManagementServiceImpl; + this.coverageService = coverageService; + } + + @Override + public void invoke(IcCityManagementExcel data, AnalysisContext context) { + + try { + // 先校验数据 + ValidatorUtils.validateEntity(data); + + // 去除前后空格 + if (StringUtils.isNotBlank(data.getName())) { + data.setName(data.getName().trim()); + } + if (StringUtils.isNotBlank(data.getCategoryName())) { + data.setCategoryName(data.getCategoryName().trim()); + } + if (StringUtils.isNotBlank(data.getAddress())) { + data.setAddress(data.getAddress().trim()); + } + + IcCityManagementEntity IcCityManagementEntity = ConvertUtils.sourceToTarget(data, IcCityManagementEntity.class); + IcCityManagementEntity.setSourceType("import"); + IcCityManagementEntity.setCategory(data.getCategoryName()); + IcCityManagementEntity.setAreaCovered(data.getAreaCoveredName()); + IcCityManagementEntity.setCapacity(data.getCapacityName()); + datas.add(IcCityManagementEntity); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【城市管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + IcCityManagementExcel.RowRemarkMessage errorRow = new IcCityManagementExcel.RowRemarkMessage(); + errorRow.setName(data.getName()); + errorRow.setCategoryName(data.getCategoryName()); + errorRow.setAddress(data.getAddress()); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + List dictList = coverageService.dictMap(currentCustomerId, "city_management"); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName)); + datas.forEach(d -> { + d.setCategory(dictMap.get(d.getCategory())); + }); + IcCityManagementServiceImpl.insertBatch(datas); + + } finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java new file mode 100644 index 0000000000..de96036a56 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPublicServiceExcelImportListener.java @@ -0,0 +1,132 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; +import com.epmet.entity.IcPublicServiceEntity; +import com.epmet.excel.IcPublicServiceExcel; +import com.epmet.service.CoverageService; +import com.epmet.service.impl.IcPublicServiceServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 公共服务管理excel导入监听器 + */ +@Data +@Slf4j +public class IcPublicServiceExcelImportListener implements ReadListener { + + //最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String currentUserId; + private String currentCustomerId; + private String currentAgencyId; + private String currentAgencyPids; + + //数据 + private List datas = new ArrayList<>(); + //错误项列表 + private List errorRows = new ArrayList<>(); + //其他被标记出来的列表列表 + private List otherRows = new ArrayList<>(); + private IcPublicServiceServiceImpl IcPublicServiceServiceImpl; + private CoverageService coverageService; + + public IcPublicServiceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcPublicServiceServiceImpl IcPublicServiceServiceImpl, CoverageService coverageService) { + this.currentUserId = currentUserId; + this.currentCustomerId = currentCustomerId; + this.currentAgencyId = currentAgencyId; + this.currentAgencyPids = currentAgencyPids; + this.IcPublicServiceServiceImpl = IcPublicServiceServiceImpl; + this.coverageService = coverageService; + } + + @Override + public void invoke(IcPublicServiceExcel data, AnalysisContext context) { + + try { + // 先校验数据 + ValidatorUtils.validateEntity(data); + + // 去除前后空格 + if (StringUtils.isNotBlank(data.getName())) { + data.setName(data.getName().trim()); + } + if (StringUtils.isNotBlank(data.getCategoryName())) { + data.setCategoryName(data.getCategoryName().trim()); + } + if (StringUtils.isNotBlank(data.getAddress())) { + data.setAddress(data.getAddress().trim()); + } + + IcPublicServiceEntity IcPublicServiceEntity = ConvertUtils.sourceToTarget(data, IcPublicServiceEntity.class); + IcPublicServiceEntity.setSourceType("import"); + IcPublicServiceEntity.setCategory(data.getCategoryName()); + IcPublicServiceEntity.setAreaCovered(data.getAreaCoveredName()); + IcPublicServiceEntity.setCapacity(data.getCapacityName()); + datas.add(IcPublicServiceEntity); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【公共服务管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + IcPublicServiceExcel.RowRemarkMessage errorRow = new IcPublicServiceExcel.RowRemarkMessage(); + errorRow.setName(data.getName()); + errorRow.setCategoryName(data.getCategoryName()); + errorRow.setAddress(data.getAddress()); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + List dictList = coverageService.dictMap(currentCustomerId, "public_service"); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName)); + datas.forEach(d -> { + d.setCategory(dictMap.get(d.getCategory())); + }); + IcPublicServiceServiceImpl.insertBatch(datas); + + } finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java new file mode 100644 index 0000000000..69ade8cc8d --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcSuperiorResourceExcelImportListener.java @@ -0,0 +1,134 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; +import com.epmet.dto.result.IcSuperiorResourceListResultDTO; +import com.epmet.entity.IcSuperiorResourceEntity; +import com.epmet.excel.IcSuperiorResourceExcel; +import com.epmet.service.CoverageService; +import com.epmet.service.impl.IcSuperiorResourceServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 优势资源管理excel导入监听器 + */ +@Data +@Slf4j +public class IcSuperiorResourceExcelImportListener implements ReadListener { + + //最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String currentUserId; + private String currentCustomerId; + private String currentAgencyId; + private String currentAgencyPids; + + //数据 + private List datas = new ArrayList<>(); + //错误项列表 + private List errorRows = new ArrayList<>(); + //其他被标记出来的列表列表 + private List otherRows = new ArrayList<>(); + private IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl; + private CoverageService coverageService; + + public IcSuperiorResourceExcelImportListener(String currentUserId, String currentCustomerId, String currentAgencyId, String currentAgencyPids, IcSuperiorResourceServiceImpl icSuperiorResourceServiceImpl, CoverageService coverageService) { + this.currentUserId = currentUserId; + this.currentCustomerId = currentCustomerId; + this.currentAgencyId = currentAgencyId; + this.currentAgencyPids = currentAgencyPids; + this.icSuperiorResourceServiceImpl = icSuperiorResourceServiceImpl; + this.coverageService = coverageService; + } + + @Override + public void invoke(IcSuperiorResourceExcel data, AnalysisContext context) { + + try { + // 先校验数据 + ValidatorUtils.validateEntity(data); + + // 去除前后空格 + if (StringUtils.isNotBlank(data.getName())) { + data.setName(data.getName().trim()); + } + if (StringUtils.isNotBlank(data.getCategoryName())) { + data.setCategoryName(data.getCategoryName().trim()); + } + if (StringUtils.isNotBlank(data.getAddress())) { + data.setAddress(data.getAddress().trim()); + } + + IcSuperiorResourceEntity icSuperiorResourceEntity = ConvertUtils.sourceToTarget(data, IcSuperiorResourceEntity.class); + icSuperiorResourceEntity.setSourceType("import"); + icSuperiorResourceEntity.setCategory(data.getCategoryName()); + icSuperiorResourceEntity.setAreaCovered(data.getAreaCoveredName()); + icSuperiorResourceEntity.setCapacity(data.getCapacityName()); + datas.add(icSuperiorResourceEntity); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【优势资源管理导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + IcSuperiorResourceExcel.RowRemarkMessage errorRow = new IcSuperiorResourceExcel.RowRemarkMessage(); + errorRow.setName(data.getName()); + errorRow.setCategoryName(data.getCategoryName()); + errorRow.setAddress(data.getAddress()); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + List dictList = coverageService.dictMap(currentCustomerId, "superior_resource"); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName)); + datas.forEach(d -> { + d.setCategory(dictMap.get(d.getCategory())); + }); + icSuperiorResourceServiceImpl.insertBatch(datas); + + } finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } +} 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 new file mode 100644 index 0000000000..d5a58f174f --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java @@ -0,0 +1,154 @@ +package com.epmet.model; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.enums.DictTypeEnum; +import com.epmet.commons.tools.exception.EpmetException; +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.dto.result.IcCoverageCategoryDictListResultDTO; +import com.epmet.entity.IcDangerousChemicalsEntity; +import com.epmet.feign.EpmetAdminOpenFeignClient; +import com.epmet.service.CoverageService; +import com.epmet.service.IcDangerousChemicalsService; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author zxc + * @DateTime 2022/6/20 10:31 + * @DESC + */ +@Data +@Slf4j +public class DangerousChemicalsImportListener extends AnalysisEventListener { + + private IcDangerousChemicalsService icDangerousChemicalsService; + private EpmetAdminOpenFeignClient adminOpenFeignClient; + private CoverageService coverageService; + private AgencyInfoCache agencyInfo; + + private List errorRows = new ArrayList<>(); + private List otherRows = new ArrayList<>(); + private List insertList = new ArrayList<>(); + + public DangerousChemicalsImportListener(AgencyInfoCache agencyInfo, IcDangerousChemicalsService icDangerousChemicalsService, CoverageService coverageService,EpmetAdminOpenFeignClient adminOpenFeignClient){ + this.agencyInfo = agencyInfo; + this.icDangerousChemicalsService = icDangerousChemicalsService; + this.coverageService = coverageService; + this.adminOpenFeignClient = adminOpenFeignClient; + } + + @Override + public void invoke(DangerousChemicalsModel data, AnalysisContext context) { + Integer rowNum = context.readRowHolder().getRowIndex() + NumConstant.ONE; + if (StringUtils.isBlank(data.getName())){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("企业名称不能为空"); + errorRows.add(row); + return; + } + if (StringUtils.isBlank(data.getCategoryName())){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("企业类型不能为空"); + errorRows.add(row); + return; + } + if (StringUtils.isBlank(data.getAddress())){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("经营地址不能为空"); + errorRows.add(row); + return; + } + if (data.getName().trim().length() > NumConstant.FIFTY){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("企业名称长度超出50字限制"); + errorRows.add(row); + } + if (data.getPrincipalMobile().trim().length() > NumConstant.FIFTY){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("联系电话长度超出50字限制"); + errorRows.add(row); + } + if (data.getAddress().trim().length() > NumConstant.FIFTY){ + DangerousChemicalsModel.RowRemarkMessage row = ConvertUtils.sourceToTarget(data, DangerousChemicalsModel.RowRemarkMessage.class); + row.setRowNum(rowNum); + row.setErrorInfo("经营地址长度超出50字限制"); + errorRows.add(row); + } + IcDangerousChemicalsEntity e = ConvertUtils.sourceToTarget(data, IcDangerousChemicalsEntity.class); + e.setSourceType("import"); + e.setAgencyId(agencyInfo.getId()); + e.setCustomerId(agencyInfo.getCustomerId()); + e.setAgencyIdPath(agencyInfo.getPids().equals(NumConstant.ZERO_STR) || agencyInfo.getPids().equals("") ? agencyInfo.getId() : agencyInfo.getPids().concat(":").concat(agencyInfo.getId())); + insertList.add(e); + if (insertList.size() == NumConstant.ONE_HUNDRED){ + execPersist(); + } + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + execPersist(); + } + + /** + * Desc: 数据库插入 + */ + private void execPersist() { + try { + if (CollectionUtils.isNotEmpty(insertList)) { + //危化品种类字典 + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode()); + if (!statusRes.success()){ + throw new EpmetException("获取IC_DANGER_TYPE字典表失败"); + } + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(16); + //企业类别字典数据 + List dictList = coverageService.dictMap(agencyInfo.getCustomerId(), "dangerous_chemicals"); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getCategoryKey, IcCoverageCategoryDictListResultDTO::getCategoryName)); + insertList.forEach(i -> { + statusMap.forEach((k,v) -> { + if (i.getDangerTypeName().equals(v)){ + i.setDangerType(k); + } + }); + dictMap.forEach((k,v) -> { + if (i.getCategoryName().equals(v)){ + i.setCategory(k); + } + }); + }); + icDangerousChemicalsService.insertBatch(insertList); + } + } finally { + insertList.clear(); + } + } + + /** + * 获取错误行 + * @return + */ + public List getErrorRows() { + return errorRows; + } +} 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 new file mode 100644 index 0000000000..a56c947429 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java @@ -0,0 +1,91 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @Author zxc + * @DateTime 2022/6/20 10:33 + * @DESC + */ +@Data +public class DangerousChemicalsModel { + + @NotBlank(message = "企业名称为必填项") + @Length(max = 50,message = "企业名称长度超出50字限制") + @ExcelProperty(value = "企业名称") + private String name; + + @NotBlank(message = "企业类型为必填项") + @ExcelProperty(value = "企业类型") + private String categoryName; + + @ExcelProperty(value = "周边安全间距(公里)") + private String safeDistance = NumConstant.ZERO_STR; + + @ExcelProperty(value = "危化品种类") + private String dangerTypeName; + + @ExcelProperty(value = "负责人") + private String principalName; + + @Length(max = 50,message = "联系电话长度超出50字限制") + @ExcelProperty(value = "联系电话") + private String principalMobile; + + @Length(max = 50,message = "经营地址长度超出50字限制") + @ExcelProperty(value = "经营地址") + private String address; + + @ExcelProperty(value = "备注") + private String remark; + + @Data + public static class RowRemarkMessage { + + @ExcelProperty(value = "行号") + private Integer rowNum; + + @ColumnWidth(20) + @ExcelProperty(value = "企业名称") + private String name; + + @ColumnWidth(20) + @ExcelProperty(value = "企业类型") + private String categoryName; + + @ColumnWidth(20) + @ExcelProperty(value = "周边安全间距(公里)") + private String safeDistance = NumConstant.ZERO_STR; + + @ColumnWidth(20) + @ExcelProperty(value = "危化品种类") + private String dangerTypeName; + + @ColumnWidth(20) + @ExcelProperty(value = "负责人") + private String principalName; + + @ColumnWidth(20) + @ExcelProperty(value = "联系电话") + private String principalMobile; + + @ColumnWidth(40) + @ExcelProperty(value = "经营地址") + private String address; + + @ColumnWidth(60) + @ExcelProperty(value = "备注") + private String remark; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java index 5b5c6ab410..f14db83adb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcCityManagementService.java @@ -8,6 +8,8 @@ import com.epmet.dto.form.IcCityManagementListFormDTO; import com.epmet.dto.result.IcCityManagementListResultDTO; import com.epmet.entity.IcCityManagementEntity; +import java.nio.file.Path; + /** * 城市管理图层 * @@ -67,4 +69,5 @@ public interface IcCityManagementService extends BaseService implements IcCityManagementService { @Autowired private CoverageService coverageService; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @Override @@ -160,5 +191,103 @@ public class IcCityManagementServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_ity_management", "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + + EasyExcel.write(os, IcCityManagementExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【城市管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【城市管理导入】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【城市管理导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(userId); + importFinishTaskForm.setResultDesc("导入失败"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【城市管理导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } + + } \ No newline at end of file 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 2b55ec4150..db9c3f5dc0 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 @@ -1,5 +1,6 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -8,33 +9,58 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcDangerousChemicalsDao; import com.epmet.dto.IcDangerousChemicalsDTO; import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO; import com.epmet.dto.form.IcDangerousChemicalsListFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.IcCityManagementListResultDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcDangerousChemicalsListResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.IcDangerousChemicalsEntity; import com.epmet.feign.EpmetAdminOpenFeignClient; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; +import com.epmet.model.DangerousChemicalsImportListener; +import com.epmet.model.DangerousChemicalsModel; import com.epmet.service.CoverageService; import com.epmet.service.IcDangerousChemicalsService; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -44,12 +70,17 @@ import java.util.stream.Collectors; * @since v1.0.0 2022-06-16 */ @Service +@Slf4j public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl implements IcDangerousChemicalsService { @Autowired private EpmetAdminOpenFeignClient adminOpenFeignClient; @Autowired private CoverageService coverageService; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; @Override public PageData list(IcDangerousChemicalsListFormDTO formDTO) { @@ -182,4 +213,93 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + boolean failed = errorRows.size() > 0; + // 合并到一起写入 + errorRows.addAll(otherRows); + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_dangerous_chemicals", "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + EasyExcel.write(os, DangerousChemicalsModel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e){ + log.error("【重点危化品企业导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + if (!result.success()) { + log.error("【重点危化品企业导入】finishImportTask失败"); + } + }catch (Exception e){ + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【重点危化品企业导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(tokenDto.getUserId()); + importFinishTaskForm.setResultDesc("导入失败"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【重点危化品企业导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java index 13630ad5aa..9131912181 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPublicServiceServiceImpl.java @@ -1,35 +1,60 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcPublicServiceDao; import com.epmet.dto.IcPublicServiceDTO; import com.epmet.dto.form.IcPublicServiceAddEditFormDTO; import com.epmet.dto.form.IcPublicServiceListFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcPublicServiceListResultDTO; -import com.epmet.dto.result.IcSuperiorResourceListResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.IcPublicServiceEntity; +import com.epmet.excel.IcPublicServiceExcel; +import com.epmet.excel.handler.IcPublicServiceExcelImportListener; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.CoverageService; import com.epmet.service.IcPublicServiceService; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -39,10 +64,15 @@ import java.util.stream.Collectors; * @since v1.0.0 2022-06-16 */ @Service +@Slf4j public class IcPublicServiceServiceImpl extends BaseServiceImpl implements IcPublicServiceService { @Autowired private CoverageService coverageService; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @Override @@ -162,4 +192,101 @@ public class IcPublicServiceServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + + EasyExcel.write(os, IcPublicServiceExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【公共服务管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【公共服务管理导入】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【公共服务管理导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(userId); + importFinishTaskForm.setResultDesc("导入失败"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【公共服务管理导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java index 3e306a1826..873b17157e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcSuperiorResourceServiceImpl.java @@ -1,35 +1,60 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcSuperiorResourceDao; import com.epmet.dto.IcSuperiorResourceDTO; import com.epmet.dto.form.IcSuperiorResourceAddEditFormDTO; import com.epmet.dto.form.IcSuperiorResourceListFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcSuperiorResourceListResultDTO; -import com.epmet.dto.result.StaffRoleResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.IcSuperiorResourceEntity; +import com.epmet.excel.IcSuperiorResourceExcel; +import com.epmet.excel.handler.IcSuperiorResourceExcelImportListener; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.CoverageService; import com.epmet.service.IcSuperiorResourceService; +import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -39,10 +64,15 @@ import java.util.stream.Collectors; * @since v1.0.0 2022-06-16 */ @Service +@Slf4j public class IcSuperiorResourceServiceImpl extends BaseServiceImpl implements IcSuperiorResourceService { @Autowired private CoverageService coverageService; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @Override @@ -162,4 +192,102 @@ public class IcSuperiorResourceServiceImpl extends BaseServiceImpl errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("ic_superior_resource", "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + + EasyExcel.write(os, IcSuperiorResourceExcel.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【优势资源管理导入】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【优势资源管理导入】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【优势资源管理导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(userId); + importFinishTaskForm.setResultDesc("导入失败"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【优势资源管理导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } + + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java index b357632bf8..3b14fc3266 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java @@ -172,6 +172,11 @@ approved:人工审核通过) */ private String auditReason; + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPoint; + /** * 删除标识:0.未删除 1.已删除 */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java index 6774329890..07d9a8bcf9 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java @@ -98,6 +98,10 @@ public class IcEventAddEditFormDTO implements Serializable { * 处理中:processing;已办结:closed_case */ private String status; + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPoint; /** * 立项接口入参对象 */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventListFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventListFormDTO.java index 7d8187c110..22343e9007 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventListFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventListFormDTO.java @@ -6,6 +6,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** * @Description 【迁入管理】列表--接口入参 @@ -75,4 +76,13 @@ public class IcEventListFormDTO implements Serializable { private String customerId; private String staffId; + /** + * 事件ID集合 + */ + private List icEventIdList; + /** + * 操作类型 0:取消标记 1:标记 + */ + private String type; + } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java index 408d0c1ea6..beac1277a0 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java @@ -192,6 +192,16 @@ public class IcEventListResultDTO implements Serializable { */ private String imageUrl; + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPoint; + + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPointName; + /** * 事件附件 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java index 12416e4276..951d2196fc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java @@ -491,4 +491,14 @@ public class IcEventController { return new Result(); } + /** + * @Author sun + * @Description 标记事件为难点堵点 + **/ + @PostMapping("difficultpointevent") + public Result difficultPointEvent(@RequestBody IcEventListFormDTO formDTO) { + icEventService.difficultPointEvent(formDTO); + return new Result(); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java index 386225e922..8240dee3c6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcEventDTO; import com.epmet.dto.form.IcEventCategoryAnalysisFormDTO; import com.epmet.dto.form.IcEventListFormDTO; import com.epmet.dto.form.MyReportIcEvFormDTO; @@ -136,4 +137,6 @@ public interface IcEventDao extends BaseDao { * @return */ Integer getResiReportEventCount(@Param("reportorIdCard") String reportorIdCard); + + List getByEventIds(@Param("icEventIdList") List icEventIdList); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java index a8e83bcf7c..ce8d9bdd6a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java @@ -171,4 +171,9 @@ public class IcEventEntity extends BaseEpmetEntity { */ private String auditReason; + /** + * 是否标记难点堵点 0:否 1:是 + */ + private String difficultPoint; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java index 2a3545fc9c..eb26fc1fa5 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java @@ -220,4 +220,6 @@ public interface IcEventService extends BaseService { * @Description 工作端事件红点消除 **/ void govRedDot(String icEventId); + + void difficultPointEvent(IcEventListFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java index ed76a24e82..f8de2e8936 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java @@ -677,6 +677,7 @@ public class IcEventServiceImpl extends BaseServiceImpl list = baseDao.getByEventIds(formDTO.getIcEventIdList()); + if (!CollectionUtils.isEmpty(list)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "存在已结案或已标记为难点堵点的事件,不允许重复操作", "存在已结案或已标记为难点堵点的事件,不允许重复操作"); + } + } + + List entityList = new ArrayList<>(); + String userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID); + formDTO.getIcEventIdList().forEach(ev -> { + IcEventEntity entity = new IcEventEntity(); + entity.setId(ev); + entity.setDifficultPoint(formDTO.getType()); + entity.setUpdatedBy(userId); + entity.setUpdatedTime(new Date()); + entityList.add(entity); + }); + updateBatchById(entityList); + + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.25__alter_ic_event.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.25__alter_ic_event.sql new file mode 100644 index 0000000000..c460c844b2 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.25__alter_ic_event.sql @@ -0,0 +1,2 @@ +ALTER TABLE `ic_event` +ADD COLUMN `DIFFICULT_POINT` varchar(3) NULL DEFAULT '0' COMMENT '是否标记难点堵点 0:否 1:是' AFTER `AUDIT_REASON`; diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml index b03c73efaf..bb3165fb8b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml @@ -126,6 +126,8 @@ + + + + \ No newline at end of file