From 494dda498bb3373fd3fe484155b29549296fe760 Mon Sep 17 00:00:00 2001 From: "shuo.wang" Date: Thu, 29 May 2025 14:49:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/FileTypeEnum.java | 2 + .../dto/ImportOaOldShopDataErrorDTO.java | 9 ++ .../cool/store/service/DataHandlerServer.java | 4 + .../service/impl/DataHandlerServerImpl.java | 88 +++++++++++++++++++ .../webb/DataHandlerController.java | 24 +++++ .../controller/webb/LineAuditController.java | 10 +-- 6 files changed, 132 insertions(+), 5 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java index f19f046b6..e7542a5c1 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java @@ -23,6 +23,8 @@ public enum FileTypeEnum { ZXJP_OPEN_SHOP_REPORT("zxjpOpenShopReport","正新鸡排开店"), IMPORT_OA_OLD_SHOP_STAGE_DATA("importOaOldShopStageData", "导入OA旧阶段数据"), IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR("OaOldShopStageDataError", "导入OA旧数据阶段错误列表"), + IMPORT_FITMENT_SHOP_STAGE("importFitmentShopStage", "导入装修阶段完成数据"), + IMPORT_FITMENT_SHOP_STAGE_DATA_ERROR_LIST("OaOldShopStageDataErrorList", "导入装修阶段完成数据错误列表 "), ; private String fileType; private String desc; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/ImportOaOldShopDataErrorDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/ImportOaOldShopDataErrorDTO.java index 5343f2478..0860d82f5 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/ImportOaOldShopDataErrorDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/ImportOaOldShopDataErrorDTO.java @@ -19,4 +19,13 @@ public class ImportOaOldShopDataErrorDTO { @ExcelProperty(value = "错误原因", order = 2) @ColumnWidth(40) private String errorReason; + + public ImportOaOldShopDataErrorDTO() { + + } + + public ImportOaOldShopDataErrorDTO(String shopCode, String errorReason) { + this.shopCode = shopCode; + this.errorReason = errorReason; + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java index fd900a551..f12717c35 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DataHandlerServer.java @@ -32,4 +32,8 @@ public interface DataHandlerServer { Boolean dataHandlerV20241012(List> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task); Integer JingDongStageHandler(); + + //处理测量 设计 施工 验收 完成 + Boolean dataHandlerV2025029(List> dataMapList, String originalFilename, LoginUserInfo user, + ImportTaskDO task); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java index 0ac224030..9c2c376c9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java @@ -954,6 +954,94 @@ public class DataHandlerServerImpl implements DataHandlerServer { } + @Override + public Boolean dataHandlerV2025029(List> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task) { + + List list = new ArrayList<>(); + List errorList = new ArrayList<>(); + ListUtils.emptyIfNull(dataMapList) + .forEach(data -> { + try { + ImportOaOldShopDataDTO importOaOldShopDataDTO = new ImportOaOldShopDataDTO(); + importOaOldShopDataDTO.setShopCode(String.valueOf(data.get("门店编码"))); + list.add(importOaOldShopDataDTO); + } catch (Exception e) { + log.info("dataHandlerV2025029 转化dto error:{}", JSONObject.toJSONString(data)); + } + }); + log.info("导入数据条数:{}", list.size()); + if (CollectionUtils.isEmpty(list)) { + log.info("导入数据转化为空"); + return false; + } + List shopCodeList = list.stream().map(ImportOaOldShopDataDTO::getShopCode).collect(Collectors.toList()); + List shopInfoList = shopInfoDAO.selectByShopCodeList(shopCodeList); + if (CollectionUtils.isEmpty(shopInfoList)) { + log.info("导入数据根据shopCode 未找到数据"); + } + List shopIds = shopInfoList.stream().map(ShopInfoDO::getId).collect(Collectors.toList()); + Map> shopMapByCode = shopInfoList.stream().collect(Collectors.groupingBy(ShopInfoDO::getShopCode)); + //装修验收数据 + List acceptanceInfoDOList = acceptanceInfoDAO.selectByShopIds(shopIds); + Map acceptanceInfoMap = acceptanceInfoDOList.stream().collect(Collectors.toMap(AcceptanceInfoDO::getShopId, item -> item)); + //合同阶段 + List signFranchiseStageList = shopStageInfoDAO.getSubStageList(shopIds, ShopSubStageEnum.SHOP_STAGE_8.getShopSubStage()); + Map signFranchiseStageMap = signFranchiseStageList.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopId, Function.identity())); + //装修阶段需要变更的shopId + List fitmentFhopIdList = new ArrayList<>(); + //装修验收表需要初始化的门店 + List initFitmentShopIdList = new ArrayList<>(); + for (ImportOaOldShopDataDTO dto : list) { + String shopCode = dto.getShopCode(); + List shopInfoDOS = shopMapByCode.get(shopCode); + if (CollectionUtils.isEmpty(shopInfoDOS)){ + errorList.add(new ImportOaOldShopDataErrorDTO(dto.getShopCode(), "门店编码未找到")); + continue; + } + if (shopInfoDOS.size() > 1){ + errorList.add(new ImportOaOldShopDataErrorDTO(dto.getShopCode(), "门店编码重复")); + continue; + } + ShopInfoDO shopInfoDO = shopInfoDOS.get(0); + Long shopId = shopInfoDO.getId(); + ShopStageInfoDO signFranchiseStage = signFranchiseStageMap.get(shopId); + if (!signFranchiseStage.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84.getShopSubStageStatus())){ + errorList.add(new ImportOaOldShopDataErrorDTO(dto.getShopCode(), "合同阶段未完成")); + continue; + } + AcceptanceInfoDO acceptanceInfoDO = acceptanceInfoMap.get(shopId); + if (Objects.isNull(acceptanceInfoDO)){ + initFitmentShopIdList.add(shopId); + } + fitmentFhopIdList.add(shopId); + } + //装修stage + shopStageInfoDAO.dataUpdateStatus(fitmentFhopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_863); + shopStageInfoDAO.dataUpdateStatus(fitmentFhopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_91); + shopStageInfoDAO.dataUpdateStatus(fitmentFhopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112); + shopStageInfoDAO.dataUpdateStatus(fitmentFhopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123); + //装修表初始化 + acceptanceInfoDAO.initAcceptanceInfo(initFitmentShopIdList); + if (!errorList.isEmpty()) { + task.setStatus(ImportTaskStatusEnum.ERROR.getCode()); + String url = null; + try { + url = easyExcelUtil.exportExcel(ImportOaOldShopDataErrorDTO.class, errorList, null, + FileTypeEnum.IMPORT_FITMENT_SHOP_STAGE_DATA_ERROR_LIST.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()), + FileTypeEnum.IMPORT_FITMENT_SHOP_STAGE_DATA_ERROR_LIST.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date())); + } catch (Exception e) { + log.info("导出失败列表失败 errorList:{}", JSONObject.toJSONString(errorList)); + } + task.setFileUrl(url); + } else { + task.setStatus(ImportTaskStatusEnum.SUCCESS.getCode()); + } + task.setTotalNum(dataMapList.size()); + task.setSuccessNum(dataMapList.size() - errorList.size()); + importTaskMapper.update(eid, task); + return null; + } + private static @NotNull ShopStageInfoDO getShopStageInfoDO(ShopSubStageEnum shopSubStageEnum, ShopStageInfoDO shopStageInfoDO, ShopSubStageStatusEnum shopSubStageStatus) { ShopStageEnum shopStageEnum = shopSubStageEnum.getShopStageEnum(); ShopStageInfoDO shopStageInfo = new ShopStageInfoDO(); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DataHandlerController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DataHandlerController.java index 8d5dfa431..8199a274e 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DataHandlerController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DataHandlerController.java @@ -128,4 +128,28 @@ public class DataHandlerController { public ResponseResult JingDongStageHandler() { return ResponseResult.success(dataHandlerServer.JingDongStageHandler()); } + + @PostMapping("/dataHandlerV2025029") + @ApiOperation("导入OA2025029旧数据") + public ResponseResult dataHandlerV2025029(MultipartFile file) { + ExcelReader reader = null; + try { + reader = ExcelUtil.getReader(file.getInputStream()); + } catch (IOException e) { + log.error("read file error:", e); + } + assert reader != null; + List> dataMapList = reader.read(0, 1, Integer.MAX_VALUE); + ImportTaskDO importTaskDO = new ImportTaskDO(); + importTaskDO.setFileName(file.getOriginalFilename()); + importTaskDO.setFileType(FileTypeEnum.IMPORT_FITMENT_SHOP_STAGE.getFileType()); + importTaskDO.setIsImport(true); + importTaskDO.setStatus(ImportTaskStatusEnum.PROGRESS.getCode()); + importTaskDO.setCreateUserId(CurrentUserHolder.getUserId()); + importTaskDO.setCreateName(CurrentUserHolder.getUser().getName()); + importTaskDO.setCreateTime(System.currentTimeMillis()); + importTaskMapper.insert(eid, importTaskDO); + dataHandlerServer.dataHandlerV2025029(dataMapList, file.getOriginalFilename(), CurrentUserHolder.getUser(), importTaskDO); + return ResponseResult.success(true); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java index 44a955b78..aa90f3b0d 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/LineAuditController.java @@ -62,10 +62,10 @@ public class LineAuditController { return ResponseResult.success(bankService.repayment(request)); } -// @ApiOperation("结束跟进") -// @PostMapping("/close") -// public ResponseResult auditClose(@RequestBody AuditCloseRequest request){ -// return ResponseResult.success(lineFlowService.auditClose(request, CurrentUserHolder.getUser())); -// } + @ApiOperation("结束跟进") + @PostMapping("/close") + public ResponseResult auditClose(@RequestBody AuditCloseRequest request){ + return ResponseResult.success(lineFlowService.auditClose(request, CurrentUserHolder.getUser())); + } }