Commit 0687f858034257781e2ce5c942bd876fbef4a4c3
1 parent
623dfede
feat: 利润分析/项目报告书编辑
Showing
4 changed files
with
270 additions
and
47 deletions
src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
@@ -19,6 +19,11 @@ import java.io.Serializable; | @@ -19,6 +19,11 @@ import java.io.Serializable; | ||
19 | public class OrderCompletionReportFieldVO implements Serializable { | 19 | public class OrderCompletionReportFieldVO implements Serializable { |
20 | 20 | ||
21 | /** | 21 | /** |
22 | + * 订单id | ||
23 | + */ | ||
24 | + private Long orderId; | ||
25 | + | ||
26 | + /** | ||
22 | * 想法来源 | 27 | * 想法来源 |
23 | */ | 28 | */ |
24 | private String ideaSource; | 29 | private String ideaSource; |
src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisFieldVO.java
@@ -17,6 +17,11 @@ import java.io.Serializable; | @@ -17,6 +17,11 @@ import java.io.Serializable; | ||
17 | @EqualsAndHashCode(callSuper = false) | 17 | @EqualsAndHashCode(callSuper = false) |
18 | @SuperBuilder | 18 | @SuperBuilder |
19 | public class OrderProfitAnalysisFieldVO implements Serializable { | 19 | public class OrderProfitAnalysisFieldVO implements Serializable { |
20 | + | ||
21 | + /** | ||
22 | + * 订单id | ||
23 | + */ | ||
24 | + private Long orderId; | ||
20 | /** | 25 | /** |
21 | * 客户单价$ | 26 | * 客户单价$ |
22 | */ | 27 | */ |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -27,8 +27,6 @@ import com.order.erp.domain.OrderStatusEnum; | @@ -27,8 +27,6 @@ import com.order.erp.domain.OrderStatusEnum; | ||
27 | import com.order.erp.domain.dto.BaseDO; | 27 | import com.order.erp.domain.dto.BaseDO; |
28 | import com.order.erp.domain.dto.order.*; | 28 | import com.order.erp.domain.dto.order.*; |
29 | import com.order.erp.domain.excel.OrderExcelVO; | 29 | import com.order.erp.domain.excel.OrderExcelVO; |
30 | -import com.order.erp.domain.vo.IndexDataVO; | ||
31 | -import com.order.erp.domain.vo.OrderCountVO; | ||
32 | import com.order.erp.domain.vo.order.*; | 30 | import com.order.erp.domain.vo.order.*; |
33 | import com.order.erp.mapper.order.OrderBaseInfoMapper; | 31 | import com.order.erp.mapper.order.OrderBaseInfoMapper; |
34 | import com.order.erp.service.order.*; | 32 | import com.order.erp.service.order.*; |
@@ -42,7 +40,10 @@ import javax.annotation.Resource; | @@ -42,7 +40,10 @@ import javax.annotation.Resource; | ||
42 | import javax.servlet.http.HttpServletResponse; | 40 | import javax.servlet.http.HttpServletResponse; |
43 | import java.io.File; | 41 | import java.io.File; |
44 | import java.io.IOException; | 42 | import java.io.IOException; |
45 | -import java.util.*; | 43 | +import java.util.List; |
44 | +import java.util.Map; | ||
45 | +import java.util.Objects; | ||
46 | +import java.util.Set; | ||
46 | import java.util.function.Function; | 47 | import java.util.function.Function; |
47 | import java.util.stream.Collectors; | 48 | import java.util.stream.Collectors; |
48 | 49 | ||
@@ -241,6 +242,23 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -241,6 +242,23 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
241 | } | 242 | } |
242 | 243 | ||
243 | /** | 244 | /** |
245 | + * @param orderId | ||
246 | + * @param userId | ||
247 | + */ | ||
248 | + private void checkApply(Long orderId, Long userId) { | ||
249 | + List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() | ||
250 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
251 | + .eq(OrderFieldLockApplyDO::getOrderId, orderId) | ||
252 | + .eq(OrderFieldLockApplyDO::getApplyUserId, userId) | ||
253 | + .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.FIELD_EDIT_APPLY.getType()) | ||
254 | + .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus())); | ||
255 | + if (CollectionUtils.isNotEmpty(applyDOS)) { | ||
256 | + throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); | ||
257 | + } | ||
258 | + } | ||
259 | + | ||
260 | + | ||
261 | + /** | ||
244 | * @param fieldVO | 262 | * @param fieldVO |
245 | * @param userId | 263 | * @param userId |
246 | * @return | 264 | * @return |
@@ -259,6 +277,84 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -259,6 +277,84 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
259 | .build(); | 277 | .build(); |
260 | } | 278 | } |
261 | 279 | ||
280 | + | ||
281 | + /** | ||
282 | + * @param reportVO | ||
283 | + * @param userId | ||
284 | + * @return | ||
285 | + */ | ||
286 | + private OrderFieldLockApplyDO buildReportFieldLockApplyDO(OrderCompletionReportVO reportVO, Long userId) { | ||
287 | + OrderCompletionReportFieldVO reportFieldVO = report2reportField(reportVO); | ||
288 | + return OrderFieldLockApplyDO.builder() | ||
289 | + .applyUserId(userId) | ||
290 | + .auditUserId(null) | ||
291 | + .fields(JSONObject.toJSONString(reportFieldVO)) | ||
292 | + .orderId(reportFieldVO.getOrderId()) | ||
293 | + .type(ApplyTypeEnum.ORDER_REPORT_APPLY.getType()) | ||
294 | + .remark(ApplyTypeEnum.ORDER_REPORT_APPLY.getDesc()) | ||
295 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | ||
296 | + .build(); | ||
297 | + } | ||
298 | + | ||
299 | + /** | ||
300 | + * @param reportVO | ||
301 | + * @return | ||
302 | + */ | ||
303 | + private OrderCompletionReportFieldVO report2reportField(OrderCompletionReportVO reportVO) { | ||
304 | + return OrderCompletionReportFieldVO.builder() | ||
305 | + .orderId(reportVO.getOrderId()) | ||
306 | + .ideaManualRate(Objects.nonNull(reportVO.getIdeaManualRate()) ? reportVO.getIdeaManualRate().toString() : null) | ||
307 | + .ideaSource(StringUtils.isNotBlank(reportVO.getIdeaSource()) ? reportVO.getIdeaSource() : null) | ||
308 | + .manualPreform(StringUtils.isNotBlank(reportVO.getManualPreform()) ? reportVO.getManualPreform() : null).build(); | ||
309 | + } | ||
310 | + | ||
311 | + | ||
312 | + /** | ||
313 | + * @param profitAnalysisVO | ||
314 | + * @param userId | ||
315 | + * @return | ||
316 | + */ | ||
317 | + private OrderFieldLockApplyDO buildProfitFieldLockApplyDO(OrderProfitAnalysisVO profitAnalysisVO, Long userId) { | ||
318 | + OrderProfitAnalysisFieldVO profitAnalysisFieldVO = profitAnalysis2profitAnalysisField(profitAnalysisVO); | ||
319 | + return OrderFieldLockApplyDO.builder() | ||
320 | + .applyUserId(userId) | ||
321 | + .auditUserId(null) | ||
322 | + .fields(JSONObject.toJSONString(profitAnalysisFieldVO)) | ||
323 | + .orderId(profitAnalysisFieldVO.getOrderId()) | ||
324 | + .type(ApplyTypeEnum.ORDER_PROFIT_APPLY.getType()) | ||
325 | + .remark(ApplyTypeEnum.ORDER_PROFIT_APPLY.getDesc()) | ||
326 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | ||
327 | + .build(); | ||
328 | + } | ||
329 | + | ||
330 | + /** | ||
331 | + * @param profitAnalysisVO | ||
332 | + * @return | ||
333 | + */ | ||
334 | + private OrderProfitAnalysisFieldVO profitAnalysis2profitAnalysisField(OrderProfitAnalysisVO profitAnalysisVO) { | ||
335 | + Double profitRate = null; | ||
336 | + if (Objects.nonNull(profitAnalysisVO.getCustomerTotalPrice()) | ||
337 | + && Objects.nonNull(profitAnalysisVO.getExchangeRate()) | ||
338 | + && Objects.nonNull(profitAnalysisVO.getPacketTotalPrice()) | ||
339 | + && Objects.nonNull(profitAnalysisVO.getProductionDepartmentTotalPrice())) { | ||
340 | + profitRate = ProfitUtils.calculateProfitRate(ProfitCalculateVO.builder() | ||
341 | + .customerTotalPrice(profitAnalysisVO.getCustomerTotalPrice()) | ||
342 | + .exchangeRate(profitAnalysisVO.getExchangeRate()) | ||
343 | + .packetTotalPrice(profitAnalysisVO.getPacketTotalPrice()) | ||
344 | + .productionDepartmentTotalPrice(profitAnalysisVO.getProductionDepartmentTotalPrice()).build()); | ||
345 | + } | ||
346 | + return OrderProfitAnalysisFieldVO.builder() | ||
347 | + .orderId(profitAnalysisVO.getOrderId()) | ||
348 | + .customerPrice(Objects.nonNull(profitAnalysisVO.getCustomerPrice()) ? profitAnalysisVO.getCustomerPrice().toString() : null) | ||
349 | + .customerTotalPrice(Objects.nonNull(profitAnalysisVO.getCustomerTotalPrice()) ? profitAnalysisVO.getCustomerTotalPrice().toString() : null) | ||
350 | + .packetPrice(Objects.nonNull(profitAnalysisVO.getPacketPrice()) ? profitAnalysisVO.getPacketPrice().toString() : null) | ||
351 | + .packetTotalPrice(Objects.nonNull(profitAnalysisVO.getPacketTotalPrice()) ? profitAnalysisVO.getPacketTotalPrice().toString() : null) | ||
352 | + .productionDepartmentPrice(Objects.nonNull(profitAnalysisVO.getProductionDepartmentPrice()) ? profitAnalysisVO.getProductionDepartmentPrice().toString() : null) | ||
353 | + .productionDepartmentTotalPrice(Objects.nonNull(profitAnalysisVO.getProductionDepartmentTotalPrice()) ? profitAnalysisVO.getProductionDepartmentTotalPrice().toString() : null) | ||
354 | + .exchangeRate(Objects.nonNull(profitAnalysisVO.getExchangeRate()) ? profitAnalysisVO.getExchangeRate().toString() : null) | ||
355 | + .profitRate(Objects.nonNull(profitRate) ? profitRate.toString() : null).build(); | ||
356 | + } | ||
357 | + | ||
262 | /** | 358 | /** |
263 | * @param orderInfoResultVOList | 359 | * @param orderInfoResultVOList |
264 | */ | 360 | */ |
@@ -434,6 +530,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -434,6 +530,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
434 | * @return 实例对象 | 530 | * @return 实例对象 |
435 | */ | 531 | */ |
436 | @Override | 532 | @Override |
533 | + @Transactional | ||
437 | public ServerResult add(OrderAddVO orderAddVO) { | 534 | public ServerResult add(OrderAddVO orderAddVO) { |
438 | OrderBaseInfoVO baseInfoVO = orderAddVO.getBaseInfo(); | 535 | OrderBaseInfoVO baseInfoVO = orderAddVO.getBaseInfo(); |
439 | if (Objects.isNull(baseInfoVO)) { | 536 | if (Objects.isNull(baseInfoVO)) { |
@@ -495,43 +592,38 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -495,43 +592,38 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
495 | * @return 实例对象 | 592 | * @return 实例对象 |
496 | */ | 593 | */ |
497 | @Override | 594 | @Override |
595 | + @Transactional | ||
498 | public ServerResult edit(OrderUpdateVO updateVO) { | 596 | public ServerResult edit(OrderUpdateVO updateVO) { |
499 | //todo 校验 | 597 | //todo 校验 |
500 | if (Objects.isNull(updateVO.getOrderId())) { | 598 | if (Objects.isNull(updateVO.getOrderId())) { |
501 | return ServerResult.fail("id 不能为空"); | 599 | return ServerResult.fail("id 不能为空"); |
502 | } | 600 | } |
601 | + Long userId = dataScope.getLoginUserId(); | ||
602 | + OrderBaseInfoDO orderBaseInfoDo = getById(updateVO.getOrderId()); | ||
603 | + if (Objects.isNull(orderBaseInfoDo)) { | ||
604 | + throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); | ||
605 | + } | ||
503 | if (Objects.nonNull(updateVO.getBaseInfo())) { | 606 | if (Objects.nonNull(updateVO.getBaseInfo())) { |
504 | - OrderBaseInfoDO orderBaseInfoDo = BeanUtil.copyProperties(updateVO.getBaseInfo(), OrderBaseInfoDO.class); | 607 | + orderBaseInfoDo = BeanUtil.copyProperties(updateVO.getBaseInfo(), OrderBaseInfoDO.class); |
505 | orderBaseInfoDo.setId(updateVO.getOrderId()); | 608 | orderBaseInfoDo.setId(updateVO.getOrderId()); |
506 | - updateById(orderBaseInfoDo); | 609 | + |
507 | } | 610 | } |
508 | if (Objects.nonNull(updateVO.getProfitAnalysisInfo())) { | 611 | if (Objects.nonNull(updateVO.getProfitAnalysisInfo())) { |
509 | - OrderProfitAnalysisDO profitAnalysisDO = profitAnalysisService.getOne(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | ||
510 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
511 | - .eq(OrderProfitAnalysisDO::getOrderId, updateVO.getOrderId())); | ||
512 | - if (Objects.nonNull(profitAnalysisDO)) { | ||
513 | - BeanUtils.copyProperties(updateVO.getProfitAnalysisInfo(), profitAnalysisDO); | ||
514 | - profitAnalysisDO.setOrderId(updateVO.getOrderId()); | ||
515 | - profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_WAIT_AUDIT.getStatus()); | ||
516 | - profitAnalysisDO.setProfitRate(ProfitUtils.calculateProfitRate(ProfitCalculateVO.builder() | ||
517 | - .customerTotalPrice(profitAnalysisDO.getCustomerTotalPrice()) | ||
518 | - .exchangeRate(profitAnalysisDO.getExchangeRate()) | ||
519 | - .packetTotalPrice(profitAnalysisDO.getPacketTotalPrice()) | ||
520 | - .productionDepartmentTotalPrice(profitAnalysisDO.getProductionDepartmentTotalPrice()).build())); | ||
521 | - profitAnalysisService.updateById(profitAnalysisDO); | ||
522 | - } | 612 | + checkApply(updateVO.getOrderId(), userId); |
613 | + OrderFieldLockApplyDO orderFieldLockApplyDO = buildProfitFieldLockApplyDO(updateVO.getProfitAnalysisInfo(), userId); | ||
614 | + orderFieldLockApplyService.save(orderFieldLockApplyDO); | ||
615 | + | ||
616 | + orderBaseInfoDo.setOrderStatus(OrderStatusEnum.PROFIT_WAIT_AUDIT.getStatus()); | ||
617 | + updateById(orderBaseInfoDo); | ||
523 | } | 618 | } |
524 | 619 | ||
525 | if (Objects.nonNull(updateVO.getReportInfo())) { | 620 | if (Objects.nonNull(updateVO.getReportInfo())) { |
526 | - OrderCompletionReportDO reportDO = reportService.getOne(new LambdaQueryWrapper<OrderCompletionReportDO>() | ||
527 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
528 | - .eq(OrderCompletionReportDO::getOrderId, updateVO.getOrderId())); | ||
529 | - if (Objects.nonNull(reportDO)) { | ||
530 | - BeanUtils.copyProperties(updateVO.getReportInfo(), reportDO); | ||
531 | - reportDO.setOrderId(updateVO.getOrderId()); | ||
532 | - reportDO.setOrderStatus(OrderStatusEnum.REPORT_WAIT_AUDIT.getStatus()); | ||
533 | - reportService.updateById(reportDO); | ||
534 | - } | 621 | + checkApply(updateVO.getOrderId(), userId); |
622 | + OrderFieldLockApplyDO orderFieldLockApplyDO = buildReportFieldLockApplyDO(updateVO.getReportInfo(), userId); | ||
623 | + orderFieldLockApplyService.save(orderFieldLockApplyDO); | ||
624 | + | ||
625 | + orderBaseInfoDo.setOrderStatus(OrderStatusEnum.REPORT_WAIT_AUDIT.getStatus()); | ||
626 | + updateById(orderBaseInfoDo); | ||
535 | } | 627 | } |
536 | 628 | ||
537 | if (Objects.nonNull(updateVO.getTrackStageInfo())) { | 629 | if (Objects.nonNull(updateVO.getTrackStageInfo())) { |
@@ -543,8 +635,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -543,8 +635,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
543 | trackStageDO.setOrderId(updateVO.getOrderId()); | 635 | trackStageDO.setOrderId(updateVO.getOrderId()); |
544 | trackStageDO.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus()); | 636 | trackStageDO.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus()); |
545 | trackStageService.updateById(trackStageDO); | 637 | trackStageService.updateById(trackStageDO); |
638 | + } else { | ||
639 | + BeanUtils.copyProperties(updateVO.getTrackStageInfo(), trackStageDO); | ||
640 | + trackStageDO.setOrderId(updateVO.getOrderId()); | ||
641 | + trackStageDO.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus()); | ||
642 | + trackStageService.save(trackStageDO); | ||
546 | } | 643 | } |
547 | - | 644 | + orderBaseInfoDo.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus()); |
645 | + updateById(orderBaseInfoDo); | ||
548 | } | 646 | } |
549 | 647 | ||
550 | if (Objects.nonNull(updateVO.getInspectionStageInfo())) { | 648 | if (Objects.nonNull(updateVO.getInspectionStageInfo())) { |
@@ -556,8 +654,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -556,8 +654,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
556 | inspectionStageDO.setOrderId(updateVO.getOrderId()); | 654 | inspectionStageDO.setOrderId(updateVO.getOrderId()); |
557 | inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); | 655 | inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); |
558 | inspectionStageService.updateById(inspectionStageDO); | 656 | inspectionStageService.updateById(inspectionStageDO); |
657 | + } else { | ||
658 | + BeanUtils.copyProperties(updateVO.getInspectionStageInfo(), inspectionStageDO); | ||
659 | + inspectionStageDO.setOrderId(updateVO.getOrderId()); | ||
660 | + inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); | ||
661 | + inspectionStageService.save(inspectionStageDO); | ||
559 | } | 662 | } |
560 | - | 663 | + orderBaseInfoDo.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); |
664 | + updateById(orderBaseInfoDo); | ||
561 | } | 665 | } |
562 | 666 | ||
563 | return ServerResult.success(); | 667 | return ServerResult.success(); |
@@ -619,13 +723,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -619,13 +723,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
619 | 723 | ||
620 | /** | 724 | /** |
621 | * 根据订单状态统计订单数量 | 725 | * 根据订单状态统计订单数量 |
726 | + * | ||
622 | * @param orderStatus | 727 | * @param orderStatus |
623 | * @return | 728 | * @return |
624 | */ | 729 | */ |
625 | @Override | 730 | @Override |
626 | public long countByOrderStatus(Integer orderStatus) { | 731 | public long countByOrderStatus(Integer orderStatus) { |
627 | - return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getOrderStatus,orderStatus) | ||
628 | - .eq(OrderBaseInfoDO::getEnableFlag,Constant.ENABLE_TEN)); | 732 | + return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getOrderStatus, orderStatus) |
733 | + .eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)); | ||
629 | } | 734 | } |
630 | 735 | ||
631 | @Override | 736 | @Override |
@@ -640,7 +745,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -640,7 +745,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
640 | 745 | ||
641 | @Override | 746 | @Override |
642 | public long countAll() { | 747 | public long countAll() { |
643 | - return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag,Constant.ENABLE_TEN)); | 748 | + return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)); |
644 | } | 749 | } |
645 | 750 | ||
646 | @Override | 751 | @Override |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
@@ -17,15 +17,12 @@ import com.order.erp.common.exception.BusinessException; | @@ -17,15 +17,12 @@ import com.order.erp.common.exception.BusinessException; | ||
17 | import com.order.erp.config.DataScope; | 17 | import com.order.erp.config.DataScope; |
18 | import com.order.erp.domain.ApplyStatusEnum; | 18 | import com.order.erp.domain.ApplyStatusEnum; |
19 | import com.order.erp.domain.ApplyTypeEnum; | 19 | import com.order.erp.domain.ApplyTypeEnum; |
20 | +import com.order.erp.domain.OrderStatusEnum; | ||
20 | import com.order.erp.domain.dto.BaseDO; | 21 | import com.order.erp.domain.dto.BaseDO; |
21 | -import com.order.erp.domain.dto.order.OrderAuditLogDO; | ||
22 | -import com.order.erp.domain.dto.order.OrderFieldLockApplyDO; | ||
23 | -import com.order.erp.domain.dto.order.OrderFieldLockRecordDO; | 22 | +import com.order.erp.domain.dto.order.*; |
24 | import com.order.erp.domain.vo.order.*; | 23 | import com.order.erp.domain.vo.order.*; |
25 | import com.order.erp.mapper.order.OrderFieldLockApplyMapper; | 24 | import com.order.erp.mapper.order.OrderFieldLockApplyMapper; |
26 | -import com.order.erp.service.order.OrderAuditLogService; | ||
27 | -import com.order.erp.service.order.OrderFieldLockApplyService; | ||
28 | -import com.order.erp.service.order.OrderFieldLockRecordService; | 25 | +import com.order.erp.service.order.*; |
29 | import lombok.extern.slf4j.Slf4j; | 26 | import lombok.extern.slf4j.Slf4j; |
30 | import org.springframework.beans.BeanUtils; | 27 | import org.springframework.beans.BeanUtils; |
31 | import org.springframework.stereotype.Service; | 28 | import org.springframework.stereotype.Service; |
@@ -58,6 +55,15 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -58,6 +55,15 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
58 | @Resource | 55 | @Resource |
59 | private OrderAuditLogService auditLogService; | 56 | private OrderAuditLogService auditLogService; |
60 | 57 | ||
58 | + @Resource | ||
59 | + private OrderBaseInfoService orderBaseInfoService; | ||
60 | + | ||
61 | + @Resource | ||
62 | + private OrderCompletionReportService reportService; | ||
63 | + | ||
64 | + @Resource | ||
65 | + private OrderProfitAnalysisService profitAnalysisService; | ||
66 | + | ||
61 | /** | 67 | /** |
62 | * 通过ID查询单条数据 | 68 | * 通过ID查询单条数据 |
63 | * <p> | 69 | * <p> |
@@ -166,7 +172,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -166,7 +172,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
166 | public void doRefuse(OrderFieldLockApplyDO applyDO, Long auditUserId) { | 172 | public void doRefuse(OrderFieldLockApplyDO applyDO, Long auditUserId) { |
167 | applyDO.setAuditUserId(auditUserId); | 173 | applyDO.setAuditUserId(auditUserId); |
168 | applyDO.setStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); | 174 | applyDO.setStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); |
175 | + OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId()); | ||
176 | + if (Objects.isNull(orderBaseInfoDO)) { | ||
177 | + throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); | ||
178 | + } | ||
179 | + if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) { | ||
169 | 180 | ||
181 | + orderBaseInfoDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_REFUSE.getStatus()); | ||
182 | + orderBaseInfoService.updateById(orderBaseInfoDO); | ||
183 | + } else if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType().equals(applyDO.getType())) { | ||
184 | + orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_REFUSE.getStatus()); | ||
185 | + orderBaseInfoService.updateById(orderBaseInfoDO); | ||
186 | + } | ||
170 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_REFUSE.getDesc()).build(); | 187 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_REFUSE.getDesc()).build(); |
171 | 188 | ||
172 | applyService.updateById(applyDO); | 189 | applyService.updateById(applyDO); |
@@ -179,12 +196,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -179,12 +196,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
179 | */ | 196 | */ |
180 | @Transactional(rollbackFor = Exception.class) | 197 | @Transactional(rollbackFor = Exception.class) |
181 | public void doPass(OrderFieldLockApplyDO applyDO, Long auditUserId) { | 198 | public void doPass(OrderFieldLockApplyDO applyDO, Long auditUserId) { |
182 | - OrderFieldLockRecordDO recordDO = null; | 199 | + |
183 | if (ApplyTypeEnum.FIELD_EDIT_APPLY.getType().equals(applyDO.getType())) { | 200 | if (ApplyTypeEnum.FIELD_EDIT_APPLY.getType().equals(applyDO.getType())) { |
184 | applyDO.setAuditUserId(auditUserId); | 201 | applyDO.setAuditUserId(auditUserId); |
185 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | 202 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
186 | 203 | ||
187 | - recordDO = fieldLockRecordService.getOne(new LambdaQueryWrapper<OrderFieldLockRecordDO>() | 204 | + OrderFieldLockRecordDO recordDO = fieldLockRecordService.getOne(new LambdaQueryWrapper<OrderFieldLockRecordDO>() |
188 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | 205 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
189 | .eq(OrderFieldLockRecordDO::getOrderId, applyDO.getOrderId()) | 206 | .eq(OrderFieldLockRecordDO::getOrderId, applyDO.getOrderId()) |
190 | .eq(OrderFieldLockRecordDO::getUserId, applyDO.getApplyUserId())); | 207 | .eq(OrderFieldLockRecordDO::getUserId, applyDO.getApplyUserId())); |
@@ -195,22 +212,112 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -195,22 +212,112 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
195 | .fields(applyDO.getFields()).build(); | 212 | .fields(applyDO.getFields()).build(); |
196 | } | 213 | } |
197 | recordDO.setFields(applyDO.getFields()); | 214 | recordDO.setFields(applyDO.getFields()); |
215 | + | ||
216 | + if (Objects.isNull(recordDO.getId())) { | ||
217 | + fieldLockRecordService.save(recordDO); | ||
218 | + } else { | ||
219 | + fieldLockRecordService.updateById(recordDO); | ||
220 | + } | ||
221 | + } else if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) { | ||
222 | + applyDO.setAuditUserId(auditUserId); | ||
223 | + applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | ||
224 | + | ||
225 | + OrderCompletionReportFieldVO reportFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderCompletionReportFieldVO.class); | ||
226 | + | ||
227 | + OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId()); | ||
228 | + if (Objects.isNull(orderBaseInfoDO)) { | ||
229 | + throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); | ||
230 | + } | ||
231 | + | ||
232 | + OrderCompletionReportDO reportDO = reportService.getOne(new LambdaQueryWrapper<OrderCompletionReportDO>() | ||
233 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
234 | + .eq(OrderCompletionReportDO::getOrderId, applyDO.getOrderId())); | ||
235 | + if (Objects.isNull(reportDO)) { | ||
236 | + reportDO = reportField2reportDo(reportFieldVO); | ||
237 | + reportDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus()); | ||
238 | + reportService.save(reportDO); | ||
239 | + } else { | ||
240 | + reportDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus()); | ||
241 | + reportDO.setIdeaManualRate(Objects.nonNull(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null); | ||
242 | + reportDO.setIdeaSource(reportFieldVO.getIdeaSource()); | ||
243 | + reportDO.setManualPreform(reportFieldVO.getManualPreform()); | ||
244 | + reportService.updateById(reportDO); | ||
245 | + } | ||
246 | + orderBaseInfoDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus()); | ||
247 | + orderBaseInfoService.updateById(orderBaseInfoDO); | ||
248 | + } else if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType().equals(applyDO.getType())) { | ||
249 | + applyDO.setAuditUserId(auditUserId); | ||
250 | + applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | ||
251 | + | ||
252 | + OrderProfitAnalysisFieldVO profitAnalysisFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderProfitAnalysisFieldVO.class); | ||
253 | + | ||
254 | + OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId()); | ||
255 | + if (Objects.isNull(orderBaseInfoDO)) { | ||
256 | + throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); | ||
257 | + } | ||
258 | + | ||
259 | + OrderProfitAnalysisDO profitAnalysisDO = profitAnalysisService.getOne(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | ||
260 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
261 | + .eq(OrderProfitAnalysisDO::getOrderId, applyDO.getOrderId())); | ||
262 | + if (Objects.isNull(profitAnalysisDO)) { | ||
263 | + profitAnalysisDO = profitField2profitDo(profitAnalysisFieldVO); | ||
264 | + profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus()); | ||
265 | + profitAnalysisService.save(profitAnalysisDO); | ||
266 | + } else { | ||
267 | + profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus()); | ||
268 | + profitAnalysisDO.setCustomerPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerPrice()) : null); | ||
269 | + profitAnalysisDO.setCustomerTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerTotalPrice()) : null); | ||
270 | + profitAnalysisDO.setExchangeRate(Objects.nonNull(profitAnalysisFieldVO.getExchangeRate()) ? Double.valueOf(profitAnalysisFieldVO.getExchangeRate()) : null); | ||
271 | + profitAnalysisDO.setPacketPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketPrice()) : null); | ||
272 | + profitAnalysisDO.setPacketTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketTotalPrice()) : null); | ||
273 | + profitAnalysisDO.setProductionDepartmentPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentPrice()) : null); | ||
274 | + profitAnalysisDO.setProductionDepartmentTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) : null); | ||
275 | + profitAnalysisDO.setProfitRate(Objects.nonNull(profitAnalysisFieldVO.getProfitRate()) ? Double.valueOf(profitAnalysisFieldVO.getProfitRate()) : null); | ||
276 | + profitAnalysisService.updateById(profitAnalysisDO); | ||
277 | + } | ||
278 | + orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus()); | ||
279 | + orderBaseInfoService.updateById(orderBaseInfoDO); | ||
198 | } | 280 | } |
199 | 281 | ||
200 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); | 282 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); |
201 | 283 | ||
202 | applyService.updateById(applyDO); | 284 | applyService.updateById(applyDO); |
203 | 285 | ||
204 | - if (Objects.isNull(recordDO.getId())) { | ||
205 | - fieldLockRecordService.save(recordDO); | ||
206 | - } else { | ||
207 | - fieldLockRecordService.updateById(recordDO); | ||
208 | - } | ||
209 | - | ||
210 | auditLogService.save(auditLogDO); | 286 | auditLogService.save(auditLogDO); |
211 | } | 287 | } |
212 | 288 | ||
213 | /** | 289 | /** |
290 | + * @param reportFieldVO | ||
291 | + * @return | ||
292 | + */ | ||
293 | + private OrderCompletionReportDO reportField2reportDo(OrderCompletionReportFieldVO reportFieldVO) { | ||
294 | + return OrderCompletionReportDO.builder() | ||
295 | + .ideaManualRate(StringUtils.isNotBlank(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null) | ||
296 | + .ideaSource(reportFieldVO.getIdeaSource()) | ||
297 | + .manualPreform(reportFieldVO.getManualPreform()) | ||
298 | + .orderId(reportFieldVO.getOrderId()) | ||
299 | + .build(); | ||
300 | + } | ||
301 | + | ||
302 | + /** | ||
303 | + * @param profitAnalysisFieldVO | ||
304 | + * @return | ||
305 | + */ | ||
306 | + private OrderProfitAnalysisDO profitField2profitDo(OrderProfitAnalysisFieldVO profitAnalysisFieldVO) { | ||
307 | + return OrderProfitAnalysisDO.builder() | ||
308 | + .orderId(profitAnalysisFieldVO.getOrderId()) | ||
309 | + .customerPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerPrice()) : null) | ||
310 | + .customerTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerTotalPrice()) : null) | ||
311 | + .exchangeRate(Objects.nonNull(profitAnalysisFieldVO.getExchangeRate()) ? Double.valueOf(profitAnalysisFieldVO.getExchangeRate()) : null) | ||
312 | + .packetPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketPrice()) : null) | ||
313 | + .packetTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketTotalPrice()) : null) | ||
314 | + .productionDepartmentPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentPrice()) : null) | ||
315 | + .productionDepartmentTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) : null) | ||
316 | + .profitRate(Objects.nonNull(profitAnalysisFieldVO.getProfitRate()) ? Double.valueOf(profitAnalysisFieldVO.getProfitRate()) : null) | ||
317 | + .build(); | ||
318 | + } | ||
319 | + | ||
320 | + /** | ||
214 | * 修改数据 | 321 | * 修改数据 |
215 | * | 322 | * |
216 | * @param orderFieldLockApplyVO 实例对象 | 323 | * @param orderFieldLockApplyVO 实例对象 |
@@ -255,6 +362,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -255,6 +362,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
255 | 362 | ||
256 | /** | 363 | /** |
257 | * 通过订单id逻辑删除 | 364 | * 通过订单id逻辑删除 |
365 | + * | ||
258 | * @param orderId | 366 | * @param orderId |
259 | * @return | 367 | * @return |
260 | */ | 368 | */ |