|
|
@@ -413,7 +413,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
List<TopCostTpItem> tpItems = new ArrayList<>();
|
|
|
for (TopCostTpItem x : items) {
|
|
|
BigDecimal price = goodsPrice;
|
|
|
- if (x.getDockStatus() == 1){
|
|
|
+ if (ObjectUtil.isNotNull(x.getDockStatus()) && x.getDockStatus() == 1){
|
|
|
//启用成本扣除项
|
|
|
switch (x.getDockType()){
|
|
|
case 1://百分比
|
|
|
@@ -440,41 +440,46 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
//匹配不到成本项阶梯值
|
|
|
continue;
|
|
|
}
|
|
|
- if (tpItems.size() > 1) {
|
|
|
- //匹配到多个成本项
|
|
|
- throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", orderGoods.getBusinessFullName(), goodsPrice.toString()));
|
|
|
- }
|
|
|
- //换算订单成本和盈亏
|
|
|
+// if (tpItems.size() > 1) {
|
|
|
+// //匹配到多个成本项
|
|
|
+// throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", orderGoods.getBusinessFullName(), goodsPrice.toString()));
|
|
|
+// }
|
|
|
+
|
|
|
BigDecimal cost = new BigDecimal("0.00");//成本
|
|
|
BigDecimal bigDecimal = new BigDecimal("100");
|
|
|
- TopCostTpItem topCostTpItem = tpItems.stream().findFirst().get();
|
|
|
- if (topCostTpItem.getDockStatus() == 1){
|
|
|
- //启用成本扣除项
|
|
|
- switch (topCostTpItem.getDockType()){
|
|
|
+ for (TopCostTpItem tpItem : tpItems) {
|
|
|
+ BigDecimal goodsPriceDecimal = goodsPrice;
|
|
|
+ //换算订单成本和盈亏
|
|
|
+ TopCostTpItem topCostTpItem = tpItem;
|
|
|
+ if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1){
|
|
|
+ //启用成本扣除项
|
|
|
+ switch (topCostTpItem.getDockType()){
|
|
|
+ case 1://百分比
|
|
|
+ //成本扣除金额
|
|
|
+ BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide1);
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(multiply);
|
|
|
+ break;
|
|
|
+ case 2://固定金额
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(topCostTpItem.getDockValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ switch (topCostTpItem.getItemType()) {
|
|
|
case 1://百分比
|
|
|
- //成本扣除金额
|
|
|
- BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
- BigDecimal multiply = goodsPrice.multiply(divide1);
|
|
|
- goodsPrice = goodsPrice.subtract(multiply);
|
|
|
+ BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide);
|
|
|
+ cost = cost.add(multiply);
|
|
|
break;
|
|
|
case 2://固定金额
|
|
|
- goodsPrice = goodsPrice.subtract(topCostTpItem.getDockValue());
|
|
|
+ cost = cost.add(topCostTpItem.getTypeValue());
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- switch (topCostTpItem.getItemType()) {
|
|
|
- case 1://百分比
|
|
|
- BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
- cost = goodsPrice.multiply(divide);
|
|
|
- break;
|
|
|
- case 2://固定金额
|
|
|
- cost = topCostTpItem.getTypeValue();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
costTotal = costTotal.add(cost);
|
|
|
}
|
|
|
|
|
|
@@ -684,7 +689,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
List<TopCostTpItemVo> tpItems = new ArrayList<>();
|
|
|
for (TopCostTpItemVo x : items) {
|
|
|
BigDecimal price = goodsPrice;
|
|
|
- if (x.getDockStatus() == 1){
|
|
|
+ if (ObjectUtil.isNotNull(x.getDockStatus()) && x.getDockStatus() == 1){
|
|
|
//启用成本扣除项
|
|
|
switch (x.getDockType()){
|
|
|
case 1://百分比
|
|
|
@@ -711,41 +716,45 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
//匹配不到成本项阶梯值
|
|
|
continue;
|
|
|
}
|
|
|
- if (tpItems.size() > 1) {
|
|
|
- //匹配到多个成本项
|
|
|
- throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", orderGoods.getBusinessFullName(), goodsPrice.toString()));
|
|
|
- }
|
|
|
- //换算订单成本和盈亏
|
|
|
- TopCostTpItemVo topCostTpItem = tpItems.stream().findFirst().get();
|
|
|
+// if (tpItems.size() > 1) {
|
|
|
+// //匹配到多个成本项
|
|
|
+// throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", orderGoods.getBusinessFullName(), goodsPrice.toString()));
|
|
|
+// }
|
|
|
BigDecimal cost = new BigDecimal("0.00");//成本
|
|
|
BigDecimal bigDecimal = new BigDecimal("100");
|
|
|
- if (topCostTpItem.getDockStatus() == 1){
|
|
|
- //启用成本扣除项
|
|
|
- switch (topCostTpItem.getDockType()){
|
|
|
+ for (TopCostTpItemVo tpItem : tpItems) {
|
|
|
+ BigDecimal goodsPriceDecimal = goodsPrice;
|
|
|
+ //换算订单成本和盈亏
|
|
|
+ TopCostTpItemVo topCostTpItem = tpItem;
|
|
|
+ if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1){
|
|
|
+ //启用成本扣除项
|
|
|
+ switch (topCostTpItem.getDockType()){
|
|
|
+ case 1://百分比
|
|
|
+ //成本扣除金额
|
|
|
+ BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide1);
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(multiply);
|
|
|
+ break;
|
|
|
+ case 2://固定金额
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(topCostTpItem.getDockValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ switch (topCostTpItem.getItemType()) {
|
|
|
case 1://百分比
|
|
|
- //成本扣除金额
|
|
|
- BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
- BigDecimal multiply = goodsPrice.multiply(divide1);
|
|
|
- goodsPrice = goodsPrice.subtract(multiply);
|
|
|
+ BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide);
|
|
|
+ cost = cost.add(multiply);
|
|
|
break;
|
|
|
case 2://固定金额
|
|
|
- goodsPrice = goodsPrice.subtract(topCostTpItem.getDockValue());
|
|
|
+ cost = cost.add(topCostTpItem.getTypeValue());
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- switch (topCostTpItem.getItemType()) {
|
|
|
- case 1://百分比
|
|
|
- BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
- cost = goodsPrice.multiply(divide);
|
|
|
- break;
|
|
|
- case 2://固定金额
|
|
|
- cost = topCostTpItem.getTypeValue();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
costTotal = costTotal.add(cost);
|
|
|
}
|
|
|
BigDecimal cost = costTotal.add(brokerage);
|
|
|
@@ -920,12 +929,15 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
|
|
|
@Override
|
|
|
public List<TopOldOrderGoodsListVo> getOrderGoodsList(TopOldOrderGoodsQuery query) {
|
|
|
- TopOldOrder order = baseMapper.getOrderBySn(query.getOrderSn());
|
|
|
- if (order.getOrderFrom() == 1) {
|
|
|
+ //学员数量
|
|
|
+ Integer userCount = 0;
|
|
|
+ List<TopOldOrderGoodsListVo> list;
|
|
|
+ if (query.getOrderFrom() == 1) {
|
|
|
//新系统订单
|
|
|
- List<TopOldOrderGoodsListVo> topOldOrderGoodsListVos = orderGoodsService.listByOrderSn(query);
|
|
|
- if (CollectionUtils.isNotEmpty(topOldOrderGoodsListVos)) {
|
|
|
- topOldOrderGoodsListVos.forEach(item -> {
|
|
|
+ list = orderGoodsService.listByOrderSn(query);
|
|
|
+ userCount = 1;
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ list.forEach(item -> {
|
|
|
item.setUserCount(1);
|
|
|
//专业
|
|
|
if (StringUtils.isNotBlank(item.getSubjectIds())) {
|
|
|
@@ -953,66 +965,64 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
- return topOldOrderGoodsListVos;
|
|
|
- }
|
|
|
- //旧系统订单
|
|
|
- List<TopOldOrderGoodsListVo> list = topOrderGoodsService.getListByQuery(query);
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- //学员数量
|
|
|
- Integer userCount = 0;
|
|
|
- List<TopOldOrderGoods> goodsList = topOrderGoodsService
|
|
|
- .list(new LambdaQueryWrapper<TopOldOrderGoods>().eq(TopOldOrderGoods::getOrderSn, query.getOrderSn())
|
|
|
- .eq(TopOldOrderGoods::getStatus, 1)
|
|
|
- .ne(TopOldOrderGoods::getRefundStatus, 2)
|
|
|
- .in(TopOldOrderGoods::getPayStatus, Arrays.asList(2, 3, 4)));
|
|
|
- if (CollectionUtils.isNotEmpty(goodsList)) {
|
|
|
- userCount = goodsList.stream().map(TopOldOrderGoods::getUserCard).collect(Collectors.toSet()).size();
|
|
|
- }
|
|
|
- // 老系统查询学习状态
|
|
|
- Map<String, String> params = new HashMap<>();
|
|
|
- Long nowTime = DateUtils.getNowTime();
|
|
|
- String sign = ToolsUtils.EncoderByMd5(query.getOrderSn() + nowTime.toString() + "pubilc2022");
|
|
|
- params.put("stamp", nowTime.toString());
|
|
|
- params.put("sign", sign);
|
|
|
- params.put("orderSn", query.getOrderSn());
|
|
|
- params.put("type", order.getOrderType().toString());
|
|
|
- String respone = "";
|
|
|
- try {
|
|
|
- respone = HttpUtils.postFormBody(ORDER_STUDY, params);
|
|
|
- if (!respone.contains("\"Status\":true")) {
|
|
|
- throw new CustomException("旧系统订单学员学习情况接口请求错误");
|
|
|
- }
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(respone);
|
|
|
- Object data = jsonObject.get("Data");
|
|
|
- if (ObjectUtils.isNull(data)) {
|
|
|
- //data 为空
|
|
|
- list.forEach(x -> x.setStudyStatus("未开始"));
|
|
|
- } else {
|
|
|
- List<TopOldOrderStudyVo> studyVos = JSONArray.parseArray(JSONObject.toJSONString(data), TopOldOrderStudyVo.class);
|
|
|
- list.forEach(item -> {
|
|
|
- item.setStudyStatus("未开始");
|
|
|
- TopOldOrderStudyVo studyVo = studyVos.stream().filter(x -> x.getUnderOrdeEnrollItemId().equals(item.getSignId())
|
|
|
- && x.getIdNum().equals(item.getUserCard())).findFirst().orElse(null);
|
|
|
- if (ObjectUtils.isNotNull(studyVo) && ObjectUtils.isNotNull(studyVo.getStudyHours())) {
|
|
|
- if (ObjectUtils.isNull(studyVo.getStudyHours()) && studyVo.getStudyHours() == 0) {
|
|
|
- item.setStudyStatus("未开始");
|
|
|
- } else if (studyVo.getStudyHours() < studyVo.getTotalHours()) {
|
|
|
- item.setStudyStatus("学习中");
|
|
|
- } else {
|
|
|
- item.setStudyStatus("已结束");
|
|
|
+ }else {
|
|
|
+ //旧系统订单
|
|
|
+ list = topOrderGoodsService.getListByQuery(query);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ List<TopOldOrderGoods> goodsList = topOrderGoodsService
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderGoods>().eq(TopOldOrderGoods::getOrderSn, query.getOrderSn())
|
|
|
+ .eq(TopOldOrderGoods::getStatus, 1)
|
|
|
+ .ne(TopOldOrderGoods::getCheckStatus, -1));
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsList)) {
|
|
|
+ userCount = goodsList.stream().map(TopOldOrderGoods::getUserCard).collect(Collectors.toSet()).size();
|
|
|
+ }
|
|
|
+ // 老系统查询学习状态
|
|
|
+ TopOldOrder order = getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, query.getOrderSn()));
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ String sign = ToolsUtils.EncoderByMd5(query.getOrderSn() + nowTime.toString() + "pubilc2022");
|
|
|
+ params.put("stamp", nowTime.toString());
|
|
|
+ params.put("sign", sign);
|
|
|
+ params.put("orderSn", query.getOrderSn());
|
|
|
+ params.put("type", order.getOrderType().toString());
|
|
|
+ String respone = "";
|
|
|
+ try {
|
|
|
+ respone = HttpUtils.postFormBody(ORDER_STUDY, params);
|
|
|
+ if (!respone.contains("\"Status\":true")) {
|
|
|
+ throw new CustomException("旧系统订单学员学习情况接口请求错误");
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(respone);
|
|
|
+ Object data = jsonObject.get("Data");
|
|
|
+ if (ObjectUtils.isNull(data)) {
|
|
|
+ //data 为空
|
|
|
+ list.forEach(x -> x.setStudyStatus("未开始"));
|
|
|
+ } else {
|
|
|
+ List<TopOldOrderStudyVo> studyVos = JSONArray.parseArray(JSONObject.toJSONString(data), TopOldOrderStudyVo.class);
|
|
|
+ list.forEach(item -> {
|
|
|
+ item.setStudyStatus("未开始");
|
|
|
+ TopOldOrderStudyVo studyVo = studyVos.stream().filter(x -> x.getUnderOrdeEnrollItemId().equals(item.getSignId())
|
|
|
+ && x.getIdNum().equals(item.getUserCard())).findFirst().orElse(null);
|
|
|
+ if (ObjectUtils.isNotNull(studyVo) && ObjectUtils.isNotNull(studyVo.getStudyHours())) {
|
|
|
+ if (ObjectUtils.isNull(studyVo.getStudyHours()) && studyVo.getStudyHours() == 0) {
|
|
|
+ item.setStudyStatus("未开始");
|
|
|
+ } else if (studyVo.getStudyHours() < studyVo.getTotalHours()) {
|
|
|
+ item.setStudyStatus("学习中");
|
|
|
+ } else {
|
|
|
+ item.setStudyStatus("已结束");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("旧系统订单学员学习情况接口请求错误" + respone);
|
|
|
+ throw new CustomException("旧系统订单学员学习情况接口请求错误");
|
|
|
}
|
|
|
- } catch (IOException e) {
|
|
|
- log.error("旧系统订单学员学习情况接口请求错误" + respone);
|
|
|
- throw new CustomException("旧系统订单学员学习情况接口请求错误");
|
|
|
- }
|
|
|
- //数据处理
|
|
|
- for (TopOldOrderGoodsListVo item : list) {
|
|
|
- item.setUserCount(userCount);
|
|
|
}
|
|
|
}
|
|
|
+ //数据处理
|
|
|
+ for (TopOldOrderGoodsListVo item : list) {
|
|
|
+ item.setUserCount(userCount);
|
|
|
+ }
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
@@ -2928,7 +2938,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
List<TopCostTpItemVo> tpItems = new ArrayList<>();
|
|
|
for (TopCostTpItemVo x : items) {
|
|
|
BigDecimal price = goodsPrice;
|
|
|
- if (x.getDockStatus() == 1){
|
|
|
+ if (ObjectUtil.isNotNull(x.getDockStatus()) && x.getDockStatus() == 1){
|
|
|
//启用成本扣除项
|
|
|
switch (x.getDockType()){
|
|
|
case 1://百分比
|
|
|
@@ -2955,41 +2965,45 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
//匹配不到成本项阶梯值
|
|
|
continue;
|
|
|
}
|
|
|
- if (tpItems.size() > 1) {
|
|
|
- //匹配到多个成本项
|
|
|
- throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", businessName, goodsPrice.toString()));
|
|
|
- }
|
|
|
- //换算订单成本和盈亏
|
|
|
- TopCostTpItemVo topCostTpItem = tpItems.stream().findFirst().get();
|
|
|
+// if (tpItems.size() > 1) {
|
|
|
+// //匹配到多个成本项
|
|
|
+// throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", businessName, goodsPrice.toString()));
|
|
|
+// }
|
|
|
BigDecimal cost = new BigDecimal("0.00");//成本
|
|
|
BigDecimal bigDecimal = new BigDecimal("100");
|
|
|
- if (topCostTpItem.getDockStatus() == 1){
|
|
|
- //启用成本扣除项
|
|
|
- switch (topCostTpItem.getDockType()){
|
|
|
+ for (TopCostTpItemVo tpItem : tpItems) {
|
|
|
+ BigDecimal goodsPriceDecimal = goodsPrice;
|
|
|
+ //换算订单成本和盈亏
|
|
|
+ TopCostTpItemVo topCostTpItem = tpItem;
|
|
|
+ if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1){
|
|
|
+ //启用成本扣除项
|
|
|
+ switch (topCostTpItem.getDockType()){
|
|
|
+ case 1://百分比
|
|
|
+ //成本扣除金额
|
|
|
+ BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide1);
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(multiply);
|
|
|
+ break;
|
|
|
+ case 2://固定金额
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(topCostTpItem.getDockValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ switch (topCostTpItem.getItemType()) {
|
|
|
case 1://百分比
|
|
|
- //成本扣除金额
|
|
|
- BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
- BigDecimal multiply = goodsPrice.multiply(divide1);
|
|
|
- goodsPrice = goodsPrice.subtract(multiply);
|
|
|
+ BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide);
|
|
|
+ cost = cost.add(multiply);
|
|
|
break;
|
|
|
case 2://固定金额
|
|
|
- goodsPrice = goodsPrice.subtract(topCostTpItem.getDockValue());
|
|
|
+ cost = cost.add(topCostTpItem.getTypeValue());
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- switch (topCostTpItem.getItemType()) {
|
|
|
- case 1://百分比
|
|
|
- BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
- cost = goodsPrice.multiply(divide);
|
|
|
- break;
|
|
|
- case 2://固定金额
|
|
|
- cost = topCostTpItem.getTypeValue();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
costTotal = costTotal.add(cost);
|
|
|
}
|
|
|
|
|
|
@@ -3067,7 +3081,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
List<TopCostTpItemVo> tpItems = new ArrayList<>();
|
|
|
for (TopCostTpItemVo x : items) {
|
|
|
BigDecimal price = goodsPrice;
|
|
|
- if (x.getDockStatus() == 1){
|
|
|
+ if (ObjectUtil.isNotNull(x.getDockStatus()) && x.getDockStatus() == 1){
|
|
|
//启用成本扣除项
|
|
|
switch (x.getDockType()){
|
|
|
case 1://百分比
|
|
|
@@ -3094,41 +3108,45 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
//匹配不到成本项阶梯值
|
|
|
continue;
|
|
|
}
|
|
|
- if (tpItems.size() > 1) {
|
|
|
- //匹配到多个成本项
|
|
|
- throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", businessName, goodsPrice.toString()));
|
|
|
- }
|
|
|
- //换算订单成本和盈亏
|
|
|
- TopCostTpItemVo topCostTpItem = tpItems.stream().findFirst().get();
|
|
|
+// if (tpItems.size() > 1) {
|
|
|
+// //匹配到多个成本项
|
|
|
+// throw new CustomException(String.format("成本项阶梯匹配有误!(有多个)请检查【%s,价格:%s】", businessName, goodsPrice.toString()));
|
|
|
+// }
|
|
|
BigDecimal cost = new BigDecimal("0.00");//成本
|
|
|
BigDecimal bigDecimal = new BigDecimal("100");
|
|
|
- if (topCostTpItem.getDockStatus() == 1){
|
|
|
- //启用成本扣除项
|
|
|
- switch (topCostTpItem.getDockType()){
|
|
|
+ for (TopCostTpItemVo tpItem : tpItems) {
|
|
|
+ BigDecimal goodsPriceDecimal = goodsPrice;
|
|
|
+ //换算订单成本和盈亏
|
|
|
+ TopCostTpItemVo topCostTpItem = tpItem;
|
|
|
+ if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1){
|
|
|
+ //启用成本扣除项
|
|
|
+ switch (topCostTpItem.getDockType()){
|
|
|
+ case 1://百分比
|
|
|
+ //成本扣除金额
|
|
|
+ BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide1);
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(multiply);
|
|
|
+ break;
|
|
|
+ case 2://固定金额
|
|
|
+ goodsPriceDecimal = goodsPriceDecimal.subtract(topCostTpItem.getDockValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ switch (topCostTpItem.getItemType()) {
|
|
|
case 1://百分比
|
|
|
- //成本扣除金额
|
|
|
- BigDecimal divide1 = topCostTpItem.getDockValue().divide(bigDecimal);
|
|
|
- BigDecimal multiply = goodsPrice.multiply(divide1);
|
|
|
- goodsPrice = goodsPrice.subtract(multiply);
|
|
|
+ BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
+ BigDecimal multiply = goodsPriceDecimal.multiply(divide);
|
|
|
+ cost = cost.add(multiply);
|
|
|
break;
|
|
|
case 2://固定金额
|
|
|
- goodsPrice = goodsPrice.subtract(topCostTpItem.getDockValue());
|
|
|
+ cost = cost.add(topCostTpItem.getTypeValue());
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- switch (topCostTpItem.getItemType()) {
|
|
|
- case 1://百分比
|
|
|
- BigDecimal divide = topCostTpItem.getTypeValue().divide(bigDecimal);
|
|
|
- cost = goodsPrice.multiply(divide);
|
|
|
- break;
|
|
|
- case 2://固定金额
|
|
|
- cost = topCostTpItem.getTypeValue();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
costTotal = costTotal.add(cost);
|
|
|
}
|
|
|
BigDecimal cost = costTotal.add(brokerage);
|