From 5ef1face419bece72054ff455e1912390b7c3784 Mon Sep 17 00:00:00 2001 From: jiangchao Date: Fri, 3 Mar 2023 11:18:03 +0800 Subject: [PATCH] feature(*): 上传人员指标 --- fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java | 16 ++++++++++++++++ fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 0 deletions(-) diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java index 4c13f9e..3e6e510 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java @@ -126,6 +126,22 @@ public class EvalIndicatorController { } /** + * 上传人员指标 + * + * @return + */ + @IgnoreAuth + @PostMapping("/analysis-staff-indicator") + @ControllerMethod("上传人员指标") + public Message> analysisStaffExcel(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) { + if (file.isEmpty()) { + throw new BusinessException("请上传文件"); + } + evalIndicatorReportService.analysisStaffExcel(file, user); + return success(); + } + + /** * 上传门店指标 * * @return diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java index 1775dfb..79a24d2 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java @@ -184,6 +184,51 @@ public class EvalIndicatorReportService { } } + public List analysisStaffExcel(MultipartFile file, LoginAuthBean user) { + MultiKeyMap staffPostMap = getShopUserPoolMap(user); + Map evalIndicatorMap = getNameIndicatorMap(); + List details = new ArrayList<>(); + List indicatorValues = this.analysisExcel(file, StaffIndicatorValueVO.class); + Integer errorNum = 0; + Set uploadIndicatorCodes = new HashSet<>(); + + MultiKeyMap repeatMap = new MultiKeyMap<>(); + for (StaffIndicatorValueVO staff : indicatorValues) { + Optional valueOptional = Optional.ofNullable(staff); + EvalIndicatorImportDetailVO importDetail = convertStaffVo(valueOptional); + details.add(importDetail); + if (repeatMap.containsKey(staff.getStaffName(), staff.getShopName(), staff.getIndicatorName())) { + importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_STAFF); + errorNum += 1; + continue; + } + repeatMap.put(staff.getStaffName(), staff.getShopName(), staff.getIndicatorName(), ""); + + importDetail.setDataDate(transferDate(staff.getDataDate())); + if (! staffPostMap.containsKey(staff.getShopName(), staff.getStaffName())) { + importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_STAFF); + errorNum += 1; + continue; + } + EvalUserPool userPool = staffPostMap.get(staff.getShopName(), staff.getStaffName()); + importDetail.setUserId(userPool.getUserId()); + importDetail.setShopId(userPool.getShopId()); + + if (! evalIndicatorMap.containsKey(staff.getIndicatorName())) { + importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_INDICATOR); + errorNum += 1; + continue; + } + EvalIndicator evalIndicator = evalIndicatorMap.get(staff.getIndicatorName()); + uploadIndicatorCodes.add(evalIndicator.getCode()); + importDetail.setIndicatorCode(evalIndicator.getCode()); + importDetail.setIndicatorName(evalIndicator.getName()); + importDetail.setIndicatorValue(new BigDecimal(staff.getIndicatorValue())); + importDetail.setDataType(evalIndicator.getDataType()); + } + return details; + } + @Transactional(rollbackFor = Exception.class) public void uploadShopIndicator(MultipartFile file, LoginAuthBean user) { Map shopPoolMap = this.getShopPoolMap(user); @@ -243,6 +288,13 @@ public class EvalIndicatorReportService { } } + public EvalIndicatorImportDetailVO convertStaffVo(Optional valueOptional) { + EvalIndicatorImportDetailVO detail = new EvalIndicatorImportDetailVO(); + detail.setIndicatorName(valueOptional.map(StaffIndicatorValueVO::getIndicatorName).orElse("")); + detail.setUserName(valueOptional.map(StaffIndicatorValueVO::getStaffName).orElse("")); + detail.setShopName(valueOptional.map(StaffIndicatorValueVO::getShopName).orElse("")); + return detail; + } public EvalIndicatorImportDetail convertStaffPo(Optional valueOptional) { EvalIndicatorImportDetail detail = new EvalIndicatorImportDetail(); detail.setIndicatorName(valueOptional.map(StaffIndicatorValueVO::getIndicatorName).orElse("")); -- libgit2 0.22.2