Commit 0687f858034257781e2ce5c942bd876fbef4a4c3

Authored by 谢茂盛
1 parent 623dfede

feat: 利润分析/项目报告书编辑

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&lt;OrderBaseInfoMapper, O @@ -259,6 +277,84 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -434,6 +530,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -495,43 +592,38 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -543,8 +635,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -556,8 +654,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -619,13 +723,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -640,7 +745,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -58,6 +55,15 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -166,7 +172,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -179,12 +196,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -195,22 +212,112 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -255,6 +362,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
255 362
256 /** 363 /**
257 * 通过订单id逻辑删除 364 * 通过订单id逻辑删除
  365 + *
258 * @param orderId 366 * @param orderId
259 * @return 367 * @return
260 */ 368 */