Commit 1464aebd4c108ba28ee6cb5cfb89c19a3c507556

Authored by 谢茂盛
1 parent 1446ab89

feat: 问题修复项

1、内部编号处理 '-' 通过接口刷数据处理
2、计算利润率支持全选(根据页面查询条件)
3、计算设计师权重分母对内部编码去重
src/main/java/com/order/erp/controller/DataController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  6 +import com.order.erp.common.constant.Constant;
  7 +import com.order.erp.common.constant.ServerResult;
  8 +import com.order.erp.domain.dto.BaseDO;
  9 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
  10 +import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO;
  11 +import com.order.erp.service.order.OrderBaseInfoService;
  12 +import org.springframework.validation.annotation.Validated;
  13 +import org.springframework.web.bind.annotation.PostMapping;
  14 +import org.springframework.web.bind.annotation.RequestBody;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RestController;
  17 +
  18 +import javax.annotation.Resource;
  19 +import java.util.List;
  20 +
  21 +/**
  22 + * @author zhongnanhuang
  23 + * @version 1.0
  24 + * @project order-erp
  25 + * @description 订单利润表控制层
  26 + * @date 2023/10/23 11:48:36
  27 + */
  28 +@RestController
  29 +@RequestMapping("/order/erp/data")
  30 +public class DataController {
  31 +
  32 + @Resource
  33 + private OrderBaseInfoService orderBaseInfoService;
  34 +
  35 + @PostMapping("/do_inner_no")
  36 + public ServerResult doInnerNo(@RequestBody @Validated OrderBaseInfoQueryVO queryVO) {
  37 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(new LambdaQueryWrapper<OrderBaseInfoDO>()
  38 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN));
  39 + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) {
  40 + return ServerResult.success();
  41 + }
  42 + orderBaseInfoDOList.forEach(x -> {
  43 + if (StringUtils.isNotBlank(x.getInnerNo())) {
  44 + x.setInnerNo(x.getInnerNo().split("-")[Constant.ZERO]);
  45 + }
  46 + });
  47 + orderBaseInfoService.updateBatchById(orderBaseInfoDOList);
  48 + return ServerResult.success();
  49 + }
  50 +
  51 +}
src/main/java/com/order/erp/controller/OrderProfitController.java
@@ -29,7 +29,7 @@ public class OrderProfitController { @@ -29,7 +29,7 @@ public class OrderProfitController {
29 29
30 @PostMapping("/analysis") 30 @PostMapping("/analysis")
31 public ServerResult<OrderProfitAnalysisVO> analysis(@RequestBody @Validated OrderProfitAnalysisVo orderProfitAnalysisVo) { 31 public ServerResult<OrderProfitAnalysisVO> analysis(@RequestBody @Validated OrderProfitAnalysisVo orderProfitAnalysisVo) {
32 - return orderProfitAnalysisService.analysisByOrderIds(orderProfitAnalysisVo); 32 + return orderProfitAnalysisService.analysis(orderProfitAnalysisVo);
33 } 33 }
34 34
35 @PostMapping("/calculate") 35 @PostMapping("/calculate")
src/main/java/com/order/erp/domain/vo/OrderProfitAnalysisVo.java
1 package com.order.erp.domain.vo; 1 package com.order.erp.domain.vo;
2 2
  3 +import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO;
3 import lombok.AllArgsConstructor; 4 import lombok.AllArgsConstructor;
4 import lombok.Data; 5 import lombok.Data;
5 import lombok.NoArgsConstructor; 6 import lombok.NoArgsConstructor;
@@ -35,4 +36,9 @@ public class OrderProfitAnalysisVo implements Serializable { @@ -35,4 +36,9 @@ public class OrderProfitAnalysisVo implements Serializable {
35 */ 36 */
36 @NotNull(message = "请选择当天汇率进行计算") 37 @NotNull(message = "请选择当天汇率进行计算")
37 private String exchangeRate; 38 private String exchangeRate;
  39 +
  40 + /**
  41 + * 页面查询条件
  42 + */
  43 + private OrderBaseInfoQueryVO queryVO;
38 } 44 }
src/main/java/com/order/erp/service/order/OrderProfitAnalysisService.java
@@ -64,6 +64,10 @@ public interface OrderProfitAnalysisService extends IService&lt;OrderProfitAnalysis @@ -64,6 +64,10 @@ public interface OrderProfitAnalysisService extends IService&lt;OrderProfitAnalysis
64 64
65 ServerResult<OrderProfitAnalysisVO> analysisByOrderIds(OrderProfitAnalysisVo orderProfitAnalysisVo); 65 ServerResult<OrderProfitAnalysisVO> analysisByOrderIds(OrderProfitAnalysisVo orderProfitAnalysisVo);
66 66
  67 + ServerResult<OrderProfitAnalysisVO> analysis(OrderProfitAnalysisVo orderProfitAnalysisVo);
  68 +
  69 + ServerResult<OrderProfitAnalysisVO> analysisByQueryVO(OrderProfitAnalysisVo orderProfitAnalysisVo);
  70 +
67 ServerResult calculate(ProfitCalculateVO calculateVO); 71 ServerResult calculate(ProfitCalculateVO calculateVO);
68 72
69 long countByOrderStatus(Integer status); 73 long countByOrderStatus(Integer status);
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -1350,12 +1350,12 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;OrderBaseInfoMapper, O @@ -1350,12 +1350,12 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;OrderBaseInfoMapper, O
1350 // } 1350 // }
1351 // } 1351 // }
1352 1352
1353 - if (queryVO.getFieldVO() != null && queryVO.getFieldVO().getOrderIds() != null) {  
1354 - Set<Long> collect = new HashSet<>(queryVO.getFieldVO().getOrderIds());  
1355 - if (collect.size() > 0) {  
1356 - queryVO.setOrderIds(collect);  
1357 - }  
1358 - } 1353 +// if (queryVO.getFieldVO() != null && queryVO.getFieldVO().getOrderIds() != null) {
  1354 +// Set<Long> collect = new HashSet<>(queryVO.getFieldVO().getOrderIds());
  1355 +// if (collect.size() > 0) {
  1356 +// queryVO.setOrderIds(collect);
  1357 +// }
  1358 +// }
1359 1359
1360 return new LambdaQueryWrapper<OrderBaseInfoDO>() 1360 return new LambdaQueryWrapper<OrderBaseInfoDO>()
1361 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) 1361 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
src/main/java/com/order/erp/service/order/impl/OrderCompletionReportServiceImpl.java
@@ -89,7 +89,8 @@ public class OrderCompletionReportServiceImpl extends ServiceImpl&lt;OrderCompletio @@ -89,7 +89,8 @@ public class OrderCompletionReportServiceImpl extends ServiceImpl&lt;OrderCompletio
89 sum = sum.add(new BigDecimal(ideaSourceRate)).add(new BigDecimal(manualPreform1Rate)).add(new BigDecimal(manualPreform2Rate)); 89 sum = sum.add(new BigDecimal(ideaSourceRate)).add(new BigDecimal(manualPreform1Rate)).add(new BigDecimal(manualPreform2Rate));
90 } 90 }
91 } 91 }
92 - resultVo.setRate(sum.divide(new BigDecimal(orderBaseInfoDOList.size())).doubleValue()); 92 + Set<String> innerNoSet = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getInnerNo).collect(Collectors.toSet());
  93 + resultVo.setRate(sum.divide(new BigDecimal(innerNoSet.size())).doubleValue());
93 } 94 }
94 return ServerResult.success(resultVo); 95 return ServerResult.success(resultVo);
95 } 96 }
src/main/java/com/order/erp/service/order/impl/OrderProfitAnalysisServiceImpl.java
@@ -12,20 +12,24 @@ import com.order.erp.common.exception.BusinessException; @@ -12,20 +12,24 @@ import com.order.erp.common.exception.BusinessException;
12 import com.order.erp.common.utils.ProfitUtils; 12 import com.order.erp.common.utils.ProfitUtils;
13 import com.order.erp.common.utils.StringUtils; 13 import com.order.erp.common.utils.StringUtils;
14 import com.order.erp.domain.dto.BaseDO; 14 import com.order.erp.domain.dto.BaseDO;
  15 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
15 import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; 16 import com.order.erp.domain.dto.order.OrderProfitAnalysisDO;
16 import com.order.erp.domain.vo.OrderProfitAnalysisVo; 17 import com.order.erp.domain.vo.OrderProfitAnalysisVo;
17 import com.order.erp.domain.vo.order.OrderProfitAnalysisQueryVO; 18 import com.order.erp.domain.vo.order.OrderProfitAnalysisQueryVO;
18 import com.order.erp.domain.vo.order.OrderProfitAnalysisVO; 19 import com.order.erp.domain.vo.order.OrderProfitAnalysisVO;
19 import com.order.erp.domain.vo.order.ProfitCalculateVO; 20 import com.order.erp.domain.vo.order.ProfitCalculateVO;
20 import com.order.erp.mapper.order.OrderProfitAnalysisMapper; 21 import com.order.erp.mapper.order.OrderProfitAnalysisMapper;
  22 +import com.order.erp.service.order.OrderBaseInfoService;
21 import com.order.erp.service.order.OrderProfitAnalysisService; 23 import com.order.erp.service.order.OrderProfitAnalysisService;
22 import lombok.extern.slf4j.Slf4j; 24 import lombok.extern.slf4j.Slf4j;
23 import org.springframework.beans.BeanUtils; 25 import org.springframework.beans.BeanUtils;
24 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
25 27
  28 +import javax.annotation.Resource;
26 import java.math.BigDecimal; 29 import java.math.BigDecimal;
27 import java.util.List; 30 import java.util.List;
28 import java.util.Objects; 31 import java.util.Objects;
  32 +import java.util.stream.Collectors;
29 33
30 /** 34 /**
31 * 订单利润分析表(OrderProfitAnalysis)表服务实现类 35 * 订单利润分析表(OrderProfitAnalysis)表服务实现类
@@ -37,6 +41,9 @@ import java.util.Objects; @@ -37,6 +41,9 @@ import java.util.Objects;
37 @Service 41 @Service
38 public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnalysisMapper, OrderProfitAnalysisDO> implements OrderProfitAnalysisService { 42 public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnalysisMapper, OrderProfitAnalysisDO> implements OrderProfitAnalysisService {
39 43
  44 + @Resource
  45 + private OrderBaseInfoService orderBaseInfoService;
  46 +
40 /** 47 /**
41 * 通过ID查询单条数据 48 * 通过ID查询单条数据
42 * <p> 49 * <p>
@@ -158,6 +165,32 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl&lt;OrderProfitAnaly @@ -158,6 +165,32 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl&lt;OrderProfitAnaly
158 } 165 }
159 166
160 @Override 167 @Override
  168 + public ServerResult<OrderProfitAnalysisVO> analysisByQueryVO(OrderProfitAnalysisVo profitAnalysisVo) {
  169 + LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = orderBaseInfoService.buildQueryByParam(profitAnalysisVo.getQueryVO());
  170 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper);
  171 + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) {
  172 + throw new BusinessException("页面未查询到数据,请重置刷新页面后操作");
  173 + }
  174 + //查询订单id的利润分析数据
  175 + List<OrderProfitAnalysisDO> orderProfits = list(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
  176 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  177 + .in(OrderProfitAnalysisDO::getOrderId, orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet())));
  178 +
  179 + if (CollectionUtils.isEmpty(orderProfits)) {
  180 + throw new BusinessException("选中的订单信息不存在");
  181 + }
  182 + return wrapperProfitResult(profitAnalysisVo, orderProfits);
  183 + }
  184 +
  185 + @Override
  186 + public ServerResult<OrderProfitAnalysisVO> analysis(OrderProfitAnalysisVo orderProfitAnalysisVo) {
  187 + if (CollectionUtils.isNotEmpty(orderProfitAnalysisVo.getOrderIds())) {
  188 + return analysisByOrderIds(orderProfitAnalysisVo);
  189 + }
  190 + return analysisByQueryVO(orderProfitAnalysisVo);
  191 + }
  192 +
  193 + @Override
161 public ServerResult<OrderProfitAnalysisVO> analysisByOrderIds(OrderProfitAnalysisVo profitAnalysisVo) { 194 public ServerResult<OrderProfitAnalysisVO> analysisByOrderIds(OrderProfitAnalysisVo profitAnalysisVo) {
162 //查询订单id的利润分析数据 195 //查询订单id的利润分析数据
163 List<OrderProfitAnalysisDO> orderProfits = list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() 196 List<OrderProfitAnalysisDO> orderProfits = list(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
@@ -168,6 +201,15 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl&lt;OrderProfitAnaly @@ -168,6 +201,15 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl&lt;OrderProfitAnaly
168 throw new BusinessException("选中的订单信息不存在"); 201 throw new BusinessException("选中的订单信息不存在");
169 } 202 }
170 203
  204 + return wrapperProfitResult(profitAnalysisVo, orderProfits);
  205 + }
  206 +
  207 + /**
  208 + * @param profitAnalysisVo
  209 + * @param orderProfits
  210 + * @return
  211 + */
  212 + private ServerResult<OrderProfitAnalysisVO> wrapperProfitResult(OrderProfitAnalysisVo profitAnalysisVo, List<OrderProfitAnalysisDO> orderProfits) {
171 BigDecimal packetTotalPrice = new BigDecimal(Constant.ZERO_STRING); 213 BigDecimal packetTotalPrice = new BigDecimal(Constant.ZERO_STRING);
172 BigDecimal customerTotalPrice = new BigDecimal(Constant.ZERO_STRING); 214 BigDecimal customerTotalPrice = new BigDecimal(Constant.ZERO_STRING);
173 BigDecimal productionDepartmentTotalPrice = new BigDecimal(Constant.ZERO_STRING); 215 BigDecimal productionDepartmentTotalPrice = new BigDecimal(Constant.ZERO_STRING);
src/test/java/BaseTest.java 0 → 100644
  1 +import com.order.erp.AdminApplication;
  2 +import org.junit.runner.RunWith;
  3 +import org.springframework.boot.test.context.SpringBootTest;
  4 +import org.springframework.test.context.junit4.SpringRunner;
  5 +import org.springframework.transaction.annotation.Transactional;
  6 +
  7 +/**
  8 + *
  9 + */
  10 +@RunWith(SpringRunner.class)
  11 +@SpringBootTest(classes = AdminApplication.class)
  12 +//主动回滚测试产生的数据
  13 +@Transactional
  14 +public class BaseTest {
  15 +
  16 +
  17 +}
src/test/java/DateTimeUtilTest.java 0 → 100644
  1 +import com.order.erp.common.constant.Constant;
  2 +import org.joda.time.format.DateTimeFormat;
  3 +import org.joda.time.format.DateTimeFormatter;
  4 +import org.junit.Test;
  5 +
  6 +/**
  7 + * @author: xms
  8 + * @description: TODO
  9 + * @date: 2023/2/10 14:09
  10 + * @version: 1.0
  11 + */
  12 +public class DateTimeUtilTest {
  13 +
  14 + @Test
  15 + public void test() {
  16 + String customerCode = "A05/C23063-1";
  17 + String customerCode1 = "A05/C23064";
  18 + System.out.println(customerCode.split("-")[Constant.ZERO]);
  19 + System.out.println(customerCode1.split("-")[Constant.ZERO]);
  20 + }
  21 +}