Commit dc3c54cfde111567eb851cacdc83f9c03c74155d

Authored by 姜超
1 parent 5ef1face

feature(*): 修改上传

修改上传
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalIndicatorImportRecordVO.java
@@ -10,6 +10,7 @@ import lombok.experimental.Accessors; @@ -10,6 +10,7 @@ import lombok.experimental.Accessors;
10 10
11 import java.time.LocalDate; 11 import java.time.LocalDate;
12 import java.util.Date; 12 import java.util.Date;
  13 +import java.util.List;
13 14
14 /** 15 /**
15 * <p> 16 * <p>
@@ -100,4 +101,15 @@ public class EvalIndicatorImportRecordVO{ @@ -100,4 +101,15 @@ public class EvalIndicatorImportRecordVO{
100 * 创建时间 101 * 创建时间
101 */ 102 */
102 private Date createTime; 103 private Date createTime;
  104 +
  105 + /**
  106 + * 保存的key
  107 + */
  108 + private String key;
  109 +
  110 + /**
  111 + * 导入详情
  112 + */
  113 + private List<EvalIndicatorImportDetailVO> details;
  114 +
103 } 115 }
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalRewardDistVO.java
@@ -91,6 +91,11 @@ public class EvalRewardDistVO { @@ -91,6 +91,11 @@ public class EvalRewardDistVO {
91 private Long groupId; 91 private Long groupId;
92 92
93 /** 93 /**
  94 + * 审批单号
  95 + */
  96 + private String approvalNo;
  97 +
  98 + /**
94 * 门店 99 * 门店
95 */ 100 */
96 private List<EvalShopPoolVO> shopPools; 101 private List<EvalShopPoolVO> shopPools;
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java
@@ -6,6 +6,7 @@ import cn.fw.common.web.annotation.ControllerMethod; @@ -6,6 +6,7 @@ import cn.fw.common.web.annotation.ControllerMethod;
6 import cn.fw.common.web.auth.LoginAuthBean; 6 import cn.fw.common.web.auth.LoginAuthBean;
7 import cn.fw.common.web.auth.annotation.CurrentUser; 7 import cn.fw.common.web.auth.annotation.CurrentUser;
8 import cn.fw.data.base.domain.common.Message; 8 import cn.fw.data.base.domain.common.Message;
  9 +import cn.fw.morax.common.utils.PublicUtil;
9 import cn.fw.morax.domain.db.eval.EvalIndicatorImportDetail; 10 import cn.fw.morax.domain.db.eval.EvalIndicatorImportDetail;
10 import cn.fw.morax.domain.dto.query.EvalIndicatorImportQueryDTO; 11 import cn.fw.morax.domain.dto.query.EvalIndicatorImportQueryDTO;
11 import cn.fw.morax.domain.vo.eval.*; 12 import cn.fw.morax.domain.vo.eval.*;
@@ -115,45 +116,43 @@ public class EvalIndicatorController { @@ -115,45 +116,43 @@ public class EvalIndicatorController {
115 * @return 116 * @return
116 */ 117 */
117 @IgnoreAuth 118 @IgnoreAuth
118 - @PostMapping("/staff-indicator") 119 + @PostMapping("/analysis-staff")
119 @ControllerMethod("上传人员指标") 120 @ControllerMethod("上传人员指标")
120 - public Message<Void> uploadStaffIndicator(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) { 121 + public Message<EvalIndicatorImportRecordVO> analysisStaffExcel(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) {
121 if (file.isEmpty()) { 122 if (file.isEmpty()) {
122 throw new BusinessException("请上传文件"); 123 throw new BusinessException("请上传文件");
123 } 124 }
124 - evalIndicatorReportService.uploadStaffIndicator(file, user);  
125 - return success(); 125 + return success(evalIndicatorReportService.uploadStaffIndicator(file, user));
126 } 126 }
127 127
128 /** 128 /**
129 - * 上传人员指标 129 + * 上传门店指标
130 * 130 *
131 * @return 131 * @return
132 */ 132 */
133 @IgnoreAuth 133 @IgnoreAuth
134 - @PostMapping("/analysis-staff-indicator")  
135 - @ControllerMethod("上传人员指标")  
136 - public Message<List<EvalIndicatorImportDetailVO>> analysisStaffExcel(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) { 134 + @PostMapping("/analysis-shop")
  135 + @ControllerMethod("上传门店指标")
  136 + public Message<Void> uploadShopIndicator(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) {
137 if (file.isEmpty()) { 137 if (file.isEmpty()) {
138 throw new BusinessException("请上传文件"); 138 throw new BusinessException("请上传文件");
139 } 139 }
140 - evalIndicatorReportService.analysisStaffExcel(file, user); 140 + evalIndicatorReportService.uploadShopIndicator(file, user);
141 return success(); 141 return success();
142 } 142 }
143 143
144 /** 144 /**
145 - * 上传门店指标 145 + * 保存上传人员数据
146 * 146 *
147 * @return 147 * @return
148 */ 148 */
149 - @IgnoreAuth  
150 - @PostMapping("/shop-indicator")  
151 - @ControllerMethod("上传门店指标")  
152 - public Message<Void> uploadShopIndicator(@RequestParam("file") MultipartFile file, @CurrentUser LoginAuthBean user) {  
153 - if (file.isEmpty()) {  
154 - throw new BusinessException("请上传文件"); 149 + @GetMapping("/save-import")
  150 + @ControllerMethod("保存上传人员数据")
  151 + public Message<Void> uploadStaffIndicator(String key) {
  152 + if (PublicUtil.isEmpty(key)) {
  153 + throw new BusinessException("参数错误");
155 } 154 }
156 - evalIndicatorReportService.uploadShopIndicator(file, user); 155 + evalIndicatorReportService.saveImportIndicator(key);
157 return success(); 156 return success();
158 } 157 }
159 158
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorReportService.java
@@ -18,13 +18,19 @@ import cn.fw.morax.service.biz.CommonService; @@ -18,13 +18,19 @@ import cn.fw.morax.service.biz.CommonService;
18 import cn.fw.morax.service.data.eval.*; 18 import cn.fw.morax.service.data.eval.*;
19 import cn.hutool.poi.excel.ExcelReader; 19 import cn.hutool.poi.excel.ExcelReader;
20 import cn.hutool.poi.excel.ExcelUtil; 20 import cn.hutool.poi.excel.ExcelUtil;
  21 +import com.alibaba.fastjson.JSON;
21 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 22 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
22 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 23 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
23 import com.google.common.collect.Lists; 24 import com.google.common.collect.Lists;
  25 +import lombok.Getter;
24 import lombok.RequiredArgsConstructor; 26 import lombok.RequiredArgsConstructor;
25 import lombok.extern.slf4j.Slf4j; 27 import lombok.extern.slf4j.Slf4j;
26 import org.apache.commons.collections4.map.MultiKeyMap; 28 import org.apache.commons.collections4.map.MultiKeyMap;
27 import org.apache.poi.ss.formula.functions.T; 29 import org.apache.poi.ss.formula.functions.T;
  30 +import org.checkerframework.checker.units.qual.K;
  31 +import org.springframework.beans.factory.annotation.Value;
  32 +import org.springframework.data.redis.core.BoundValueOperations;
  33 +import org.springframework.data.redis.core.StringRedisTemplate;
28 import org.springframework.stereotype.Service; 34 import org.springframework.stereotype.Service;
29 import org.springframework.transaction.annotation.Transactional; 35 import org.springframework.transaction.annotation.Transactional;
30 import org.springframework.web.multipart.MultipartFile; 36 import org.springframework.web.multipart.MultipartFile;
@@ -39,6 +45,7 @@ import java.time.LocalTime; @@ -39,6 +45,7 @@ import java.time.LocalTime;
39 import java.time.YearMonth; 45 import java.time.YearMonth;
40 import java.time.format.DateTimeFormatter; 46 import java.time.format.DateTimeFormatter;
41 import java.util.*; 47 import java.util.*;
  48 +import java.util.concurrent.TimeUnit;
42 import java.util.function.Function; 49 import java.util.function.Function;
43 import java.util.stream.Collectors; 50 import java.util.stream.Collectors;
44 51
@@ -57,9 +64,17 @@ public class EvalIndicatorReportService { @@ -57,9 +64,17 @@ public class EvalIndicatorReportService {
57 private final EvalIndicatorService evalIndicatorService; 64 private final EvalIndicatorService evalIndicatorService;
58 private final EvalUserPoolService evalUserPoolService; 65 private final EvalUserPoolService evalUserPoolService;
59 private final EvalShopPoolService evalShopPoolService; 66 private final EvalShopPoolService evalShopPoolService;
  67 + private final StringRedisTemplate stringRedisTemplate;
60 private final EvalGroupService evalGroupService; 68 private final EvalGroupService evalGroupService;
61 private final EvalService evalService; 69 private final EvalService evalService;
62 70
  71 + @Value("${spring.cache.custom.global-prefix}:eval-import:")
  72 + @Getter
  73 + private String evalImport;
  74 + @Value("${spring.cache.custom.global-prefix}:eval-import-detail:")
  75 + @Getter
  76 + private String evalImportDetail;
  77 +
63 public void staffTemplateFile(HttpServletRequest request, HttpServletResponse response) { 78 public void staffTemplateFile(HttpServletRequest request, HttpServletResponse response) {
64 String fileName = "人员导入标准模板.xlsx"; 79 String fileName = "人员导入标准模板.xlsx";
65 String encodeFileName = CommonService.getEncodeName(request, fileName); 80 String encodeFileName = CommonService.getEncodeName(request, fileName);
@@ -122,11 +137,11 @@ public class EvalIndicatorReportService { @@ -122,11 +137,11 @@ public class EvalIndicatorReportService {
122 } 137 }
123 138
124 @Transactional(rollbackFor = Exception.class) 139 @Transactional(rollbackFor = Exception.class)
125 - public void uploadStaffIndicator(MultipartFile file, LoginAuthBean user) { 140 + public EvalIndicatorImportRecordVO uploadStaffIndicator(MultipartFile file, LoginAuthBean user) {
126 MultiKeyMap<String, EvalUserPool> staffPostMap = getShopUserPoolMap(user); 141 MultiKeyMap<String, EvalUserPool> staffPostMap = getShopUserPoolMap(user);
127 Map<String, EvalIndicator> evalIndicatorMap = getNameIndicatorMap(); 142 Map<String, EvalIndicator> evalIndicatorMap = getNameIndicatorMap();
128 EvalIndicatorImportRecord importRecord = createRecord(user, DimensionTypeEnum.STAFF); 143 EvalIndicatorImportRecord importRecord = createRecord(user, DimensionTypeEnum.STAFF);
129 - evalIndicatorImportRecordService.save(importRecord); 144 +// evalIndicatorImportRecordService.save(importRecord);
130 List<EvalIndicatorImportDetail> details = new ArrayList<>(); 145 List<EvalIndicatorImportDetail> details = new ArrayList<>();
131 List<StaffIndicatorValueVO> indicatorValues = this.analysisExcel(file, StaffIndicatorValueVO.class); 146 List<StaffIndicatorValueVO> indicatorValues = this.analysisExcel(file, StaffIndicatorValueVO.class);
132 Long importRecordId = importRecord.getId(); 147 Long importRecordId = importRecord.getId();
@@ -168,73 +183,70 @@ public class EvalIndicatorReportService { @@ -168,73 +183,70 @@ public class EvalIndicatorReportService {
168 importDetail.setIndicatorValue(new BigDecimal(staff.getIndicatorValue())); 183 importDetail.setIndicatorValue(new BigDecimal(staff.getIndicatorValue()));
169 importDetail.setDataType(evalIndicator.getDataType()); 184 importDetail.setDataType(evalIndicator.getDataType());
170 } 185 }
171 - Optional<EvalIndicatorImportDetail> detailOptional = details.stream().findFirst(); 186 + Optional<EvalIndicatorImportDetail> detailOptional = details.stream().filter(detail -> PublicUtil.isEmpty(detail.getErrorType())).findFirst();
172 importRecord.setIndicatorCode(detailOptional.map(EvalIndicatorImportDetail::getIndicatorCode).orElse("")); 187 importRecord.setIndicatorCode(detailOptional.map(EvalIndicatorImportDetail::getIndicatorCode).orElse(""));
173 importRecord.setIndicatorName(detailOptional.map(EvalIndicatorImportDetail::getIndicatorName).orElse("")); 188 importRecord.setIndicatorName(detailOptional.map(EvalIndicatorImportDetail::getIndicatorName).orElse(""));
174 importRecord.setErrorNum(errorNum); 189 importRecord.setErrorNum(errorNum);
175 importRecord.setNum(indicatorValues.size()); 190 importRecord.setNum(indicatorValues.size());
176 importRecord.setSuccessNum(indicatorValues.size() - errorNum); 191 importRecord.setSuccessNum(indicatorValues.size() - errorNum);
177 - evalIndicatorImportRecordService.updateById(importRecord);  
178 - evalIndicatorImportDetailService.saveBatch(details);  
179 192
180 - for (String indicatorCode : uploadIndicatorCodes) {  
181 - ImportEvalIndicatorEvent importEvalIndicatorEvent = new ImportEvalIndicatorEvent(indicatorCode,  
182 - importRecord.getId(), importRecord.getGroupId(), importRecord.getUploadTime());  
183 - EventBusUtil.asyncPost(importEvalIndicatorEvent);  
184 - }  
185 - } 193 + String key = PublicUtil.getUUID() + user.getUserId();
  194 + stringRedisTemplate.opsForValue().set(getEvalImport() + key, JSON.toJSONString(importRecord), 1 , TimeUnit.DAYS);
  195 + stringRedisTemplate.opsForValue().set(getEvalImportDetail() + key, JSON.toJSONString(details), 1 , TimeUnit.DAYS);
186 196
187 - public List<EvalIndicatorImportDetailVO> analysisStaffExcel(MultipartFile file, LoginAuthBean user) {  
188 - MultiKeyMap<String, EvalUserPool> staffPostMap = getShopUserPoolMap(user);  
189 - Map<String, EvalIndicator> evalIndicatorMap = getNameIndicatorMap();  
190 - List<EvalIndicatorImportDetailVO> details = new ArrayList<>();  
191 - List<StaffIndicatorValueVO> indicatorValues = this.analysisExcel(file, StaffIndicatorValueVO.class);  
192 - Integer errorNum = 0;  
193 - Set<String> uploadIndicatorCodes = new HashSet<>(); 197 + EvalIndicatorImportRecordVO recordVO = PublicUtil.copy(importRecord, EvalIndicatorImportRecordVO.class);
  198 + List<EvalIndicatorImportDetailVO> detailVos = PublicUtil.copyList(details, EvalIndicatorImportDetailVO.class);
  199 + recordVO.setDetails(detailVos);
  200 + recordVO.setKey(key);
  201 + return recordVO;
194 202
195 - MultiKeyMap<String, String> repeatMap = new MultiKeyMap<>();  
196 - for (StaffIndicatorValueVO staff : indicatorValues) {  
197 - Optional<StaffIndicatorValueVO> valueOptional = Optional.ofNullable(staff);  
198 - EvalIndicatorImportDetailVO importDetail = convertStaffVo(valueOptional);  
199 - details.add(importDetail);  
200 - if (repeatMap.containsKey(staff.getStaffName(), staff.getShopName(), staff.getIndicatorName())) {  
201 - importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_STAFF);  
202 - errorNum += 1;  
203 - continue;  
204 - }  
205 - repeatMap.put(staff.getStaffName(), staff.getShopName(), staff.getIndicatorName(), ""); 203 +// evalIndicatorImportRecordService.updateById(importRecord);
  204 +// evalIndicatorImportDetailService.saveBatch(details);
206 205
207 - importDetail.setDataDate(transferDate(staff.getDataDate()));  
208 - if (! staffPostMap.containsKey(staff.getShopName(), staff.getStaffName())) {  
209 - importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_STAFF);  
210 - errorNum += 1;  
211 - continue;  
212 - }  
213 - EvalUserPool userPool = staffPostMap.get(staff.getShopName(), staff.getStaffName());  
214 - importDetail.setUserId(userPool.getUserId());  
215 - importDetail.setShopId(userPool.getShopId()); 206 +// for (String indicatorCode : uploadIndicatorCodes) {
  207 +// ImportEvalIndicatorEvent importEvalIndicatorEvent = new ImportEvalIndicatorEvent(indicatorCode,
  208 +// importRecord.getId(), importRecord.getGroupId(), importRecord.getUploadTime());
  209 +// EventBusUtil.asyncPost(importEvalIndicatorEvent);
  210 +// }
  211 + }
216 212
217 - if (! evalIndicatorMap.containsKey(staff.getIndicatorName())) {  
218 - importDetail.setErrorType(ImportErrorReasonEnum.NO_MATCH_INDICATOR);  
219 - errorNum += 1;  
220 - continue; 213 + public void saveImportIndicator(String key) {
  214 + BoundValueOperations<String, String> importOperation = stringRedisTemplate.boundValueOps(getEvalImport() + key);
  215 + BoundValueOperations<String, String> importDetailOperation = stringRedisTemplate.boundValueOps(getEvalImportDetail() + key);
  216 + String json = importOperation.get();
  217 + String detailJson = importDetailOperation.get();
  218 + if (PublicUtil.isEmpty(json) || PublicUtil.isEmpty(detailJson)) {
  219 + log.error("考评指标导入,redis数据为空,key {},", getEvalImport() + key);
  220 + throw new BusinessException("请求超时,请重新上传");
  221 + }
  222 + EvalIndicatorImportRecord record = JSON.parseObject(json, EvalIndicatorImportRecord.class);
  223 + List<EvalIndicatorImportDetail> details = JSON.parseArray(detailJson, EvalIndicatorImportDetail.class);
  224 + evalIndicatorImportRecordService.save(record);
  225 + Long recordId = record.getId();
  226 + Set<String> uploadIndicatorCodes = new HashSet<>();
  227 + for (EvalIndicatorImportDetail detail : details) {
  228 + detail.setRecordId(recordId);
  229 + if (PublicUtil.isEmpty(detail.getErrorType()) && PublicUtil.isEmpty(detail.getIndicatorCode())) {
  230 + uploadIndicatorCodes.add(detail.getIndicatorCode());
221 } 231 }
222 - EvalIndicator evalIndicator = evalIndicatorMap.get(staff.getIndicatorName());  
223 - uploadIndicatorCodes.add(evalIndicator.getCode());  
224 - importDetail.setIndicatorCode(evalIndicator.getCode());  
225 - importDetail.setIndicatorName(evalIndicator.getName());  
226 - importDetail.setIndicatorValue(new BigDecimal(staff.getIndicatorValue()));  
227 - importDetail.setDataType(evalIndicator.getDataType());  
228 } 232 }
229 - return details; 233 + evalIndicatorImportDetailService.saveBatch(details);
  234 + stringRedisTemplate.delete(getEvalImport() + key);
  235 + stringRedisTemplate.delete(getEvalImportDetail() + key);
  236 + //事件
  237 + for (String indicatorCode : uploadIndicatorCodes) {
  238 + ImportEvalIndicatorEvent importEvalIndicatorEvent = new ImportEvalIndicatorEvent(indicatorCode,
  239 + recordId, record.getGroupId(), record.getUploadTime());
  240 + EventBusUtil.asyncPost(importEvalIndicatorEvent);
  241 + }
230 } 242 }
231 243
232 @Transactional(rollbackFor = Exception.class) 244 @Transactional(rollbackFor = Exception.class)
233 - public void uploadShopIndicator(MultipartFile file, LoginAuthBean user) { 245 + public EvalIndicatorImportRecordVO uploadShopIndicator(MultipartFile file, LoginAuthBean user) {
234 Map<String, EvalShopPool> shopPoolMap = this.getShopPoolMap(user); 246 Map<String, EvalShopPool> shopPoolMap = this.getShopPoolMap(user);
235 Map<String, EvalIndicator> evalIndicatorMap = getNameIndicatorMap(); 247 Map<String, EvalIndicator> evalIndicatorMap = getNameIndicatorMap();
236 EvalIndicatorImportRecord importRecord = createRecord(user, DimensionTypeEnum.SHOP); 248 EvalIndicatorImportRecord importRecord = createRecord(user, DimensionTypeEnum.SHOP);
237 - evalIndicatorImportRecordService.save(importRecord); 249 +// evalIndicatorImportRecordService.save(importRecord);
238 Long importRecordId = importRecord.getId(); 250 Long importRecordId = importRecord.getId();
239 List<EvalIndicatorImportDetail> details = new ArrayList<>(); 251 List<EvalIndicatorImportDetail> details = new ArrayList<>();
240 List<ShopIndicatorValueVO> indicatorValues = this.analysisExcel(file, ShopIndicatorValueVO.class); 252 List<ShopIndicatorValueVO> indicatorValues = this.analysisExcel(file, ShopIndicatorValueVO.class);
@@ -279,13 +291,22 @@ public class EvalIndicatorReportService { @@ -279,13 +291,22 @@ public class EvalIndicatorReportService {
279 importRecord.setErrorNum(errorNum); 291 importRecord.setErrorNum(errorNum);
280 importRecord.setNum(indicatorValues.size()); 292 importRecord.setNum(indicatorValues.size());
281 importRecord.setSuccessNum(indicatorValues.size() - errorNum); 293 importRecord.setSuccessNum(indicatorValues.size() - errorNum);
282 - evalIndicatorImportRecordService.updateById(importRecord);  
283 - evalIndicatorImportDetailService.saveBatch(details);  
284 - for (String indicatorCode : uploadIndicatorCodes) {  
285 - ImportEvalIndicatorEvent importEvalIndicatorEvent = new ImportEvalIndicatorEvent(indicatorCode,  
286 - importRecord.getId(), importRecord.getGroupId(), importRecord.getUploadTime());  
287 - EventBusUtil.asyncPost(importEvalIndicatorEvent);  
288 - } 294 + String key = PublicUtil.getUUID() + user.getUserId();
  295 + stringRedisTemplate.opsForValue().set(getEvalImport() + key, JSON.toJSONString(importRecord), 1 , TimeUnit.DAYS);
  296 + stringRedisTemplate.opsForValue().set(getEvalImportDetail() + key, JSON.toJSONString(details), 1 , TimeUnit.DAYS);
  297 +
  298 + EvalIndicatorImportRecordVO recordVO = PublicUtil.copy(importRecord, EvalIndicatorImportRecordVO.class);
  299 + List<EvalIndicatorImportDetailVO> detailVos = PublicUtil.copyList(details, EvalIndicatorImportDetailVO.class);
  300 + recordVO.setDetails(detailVos);
  301 + recordVO.setKey(key);
  302 + return recordVO;
  303 +// evalIndicatorImportRecordService.updateById(importRecord);
  304 +// evalIndicatorImportDetailService.saveBatch(details);
  305 +// for (String indicatorCode : uploadIndicatorCodes) {
  306 +// ImportEvalIndicatorEvent importEvalIndicatorEvent = new ImportEvalIndicatorEvent(indicatorCode,
  307 +// importRecord.getId(), importRecord.getGroupId(), importRecord.getUploadTime());
  308 +// EventBusUtil.asyncPost(importEvalIndicatorEvent);
  309 +// }
289 } 310 }
290 311
291 public EvalIndicatorImportDetailVO convertStaffVo(Optional<StaffIndicatorValueVO> valueOptional) { 312 public EvalIndicatorImportDetailVO convertStaffVo(Optional<StaffIndicatorValueVO> valueOptional) {
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
@@ -26,6 +26,7 @@ import cn.fw.morax.rpc.erp.ErpRpcService; @@ -26,6 +26,7 @@ import cn.fw.morax.rpc.erp.ErpRpcService;
26 import cn.fw.morax.rpc.erp.dto.RpcUserRoleInfoDTO; 26 import cn.fw.morax.rpc.erp.dto.RpcUserRoleInfoDTO;
27 import cn.fw.morax.rpc.erp.dto.RpcUserRoleShopDTO; 27 import cn.fw.morax.rpc.erp.dto.RpcUserRoleShopDTO;
28 import cn.fw.morax.service.biz.ApprovalBizService; 28 import cn.fw.morax.service.biz.ApprovalBizService;
  29 +import cn.fw.morax.service.data.ApprovalRecordService;
29 import cn.fw.morax.service.data.eval.*; 30 import cn.fw.morax.service.data.eval.*;
30 import com.alibaba.fastjson.JSON; 31 import com.alibaba.fastjson.JSON;
31 import com.alibaba.fastjson.JSONObject; 32 import com.alibaba.fastjson.JSONObject;
@@ -73,6 +74,7 @@ public class EvalRewardService { @@ -73,6 +74,7 @@ public class EvalRewardService {
73 private final ApprovalBizService approvalBizService; 74 private final ApprovalBizService approvalBizService;
74 private final StringRedisTemplate stringRedisTemplate; 75 private final StringRedisTemplate stringRedisTemplate;
75 private final EvalShopPoolService evalShopPoolService; 76 private final EvalShopPoolService evalShopPoolService;
  77 + private final ApprovalRecordService approvalRecordService;
76 private final EvalRewardDistService evalRewardDistService; 78 private final EvalRewardDistService evalRewardDistService;
77 private final EvalRewardDistDetailService evalRewardDistDetailService; 79 private final EvalRewardDistDetailService evalRewardDistDetailService;
78 80
@@ -300,6 +302,14 @@ public class EvalRewardService { @@ -300,6 +302,14 @@ public class EvalRewardService {
300 ); 302 );
301 List<EvalRewardDistDetailVO> detailVOS = PublicUtil.copyList(details, EvalRewardDistDetailVO.class); 303 List<EvalRewardDistDetailVO> detailVOS = PublicUtil.copyList(details, EvalRewardDistDetailVO.class);
302 rewardDistVO.setRewardDetails(detailVOS); 304 rewardDistVO.setRewardDetails(detailVOS);
  305 +
  306 + ApprovalRecord approvalRecord = approvalRecordService.getOne(Wrappers.<ApprovalRecord>lambdaQuery()
  307 + .eq(ApprovalRecord::getDataId, id)
  308 + .eq(ApprovalRecord::getApprovalType, ApprovalTypeEnum.EVAL_REWARD_DIST)
  309 + .eq(ApprovalRecord::getYn, Boolean.TRUE)
  310 + .last("ORDER BY id DESC LIMIT 1")
  311 + );
  312 + rewardDistVO.setApprovalNo(Optional.ofNullable(approvalRecord).map(ApprovalRecord::getApprovalNo).orElse(""));
303 } 313 }
304 314
305 return rewardDistVO; 315 return rewardDistVO;