|
@@ -1,16 +1,19 @@
|
|
package com.sd.business.service.order.impl;
|
|
package com.sd.business.service.order.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
-import cn.hutool.core.date.DateUtil;
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
|
+import com.sd.business.entity.bom.po.BomSpec;
|
|
import com.sd.business.entity.department.po.Department;
|
|
import com.sd.business.entity.department.po.Department;
|
|
import com.sd.business.entity.order.dto.OrderInfoDto;
|
|
import com.sd.business.entity.order.dto.OrderInfoDto;
|
|
import com.sd.business.entity.order.dto.OrderSelectDto;
|
|
import com.sd.business.entity.order.dto.OrderSelectDto;
|
|
import com.sd.business.entity.order.dto.OrderSkuDto;
|
|
import com.sd.business.entity.order.dto.OrderSkuDto;
|
|
|
|
+import com.sd.business.entity.order.dto.SkuSpecPriceDto;
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
import com.sd.business.entity.order.po.OrderOperatingLog;
|
|
import com.sd.business.entity.order.po.OrderOperatingLog;
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
@@ -18,6 +21,9 @@ import com.sd.business.entity.order.po.OrderSkuBom;
|
|
import com.sd.business.entity.order.vo.OrderInfoVo;
|
|
import com.sd.business.entity.order.vo.OrderInfoVo;
|
|
import com.sd.business.entity.order.vo.OrderSkuBomVo;
|
|
import com.sd.business.entity.order.vo.OrderSkuBomVo;
|
|
import com.sd.business.entity.order.vo.OrderSkuVo;
|
|
import com.sd.business.entity.order.vo.OrderSkuVo;
|
|
|
|
+import com.sd.business.entity.order.vo.SkuSpecPriceVo;
|
|
|
|
+import com.sd.business.entity.price.po.PriceBillingStandardDetail;
|
|
|
|
+import com.sd.business.entity.sku.po.SkuSpec;
|
|
import com.sd.business.mapper.order.OrderMapper;
|
|
import com.sd.business.mapper.order.OrderMapper;
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
import com.sd.business.service.department.DepartmentService;
|
|
import com.sd.business.service.department.DepartmentService;
|
|
@@ -25,16 +31,15 @@ import com.sd.business.service.order.OrderOperatingLogService;
|
|
import com.sd.business.service.order.OrderService;
|
|
import com.sd.business.service.order.OrderService;
|
|
import com.sd.business.service.order.OrderSkuBomService;
|
|
import com.sd.business.service.order.OrderSkuBomService;
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
|
|
+import com.sd.business.service.price.PriceBillingStandardDetailService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
|
+import com.sd.framework.util.Assert;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
-import java.util.Collections;
|
|
+import java.util.*;
|
|
-import java.util.Date;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@@ -66,6 +71,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
@Autowired
|
|
@Autowired
|
|
private OrderOperatingLogService orderOperatingLogService;
|
|
private OrderOperatingLogService orderOperatingLogService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private PriceBillingStandardDetailService priceBillingStandardDetailService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Page<OrderInfoVo> getPage(OrderSelectDto dto) {
|
|
public Page<OrderInfoVo> getPage(OrderSelectDto dto) {
|
|
IWrapper<OrderInfo> wrapper = getWrapper();
|
|
IWrapper<OrderInfo> wrapper = getWrapper();
|
|
@@ -79,7 +87,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
wrapper.le("o", OrderInfo::getWlnCreateTime, dto.getEndTime());
|
|
wrapper.le("o", OrderInfo::getWlnCreateTime, dto.getEndTime());
|
|
|
|
|
|
Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
-
|
|
|
|
return page;
|
|
return page;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -92,12 +99,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
|
|
|
|
|
|
|
OrderInfoVo result = BeanUtil.toBean(orderInfo, OrderInfoVo.class);
|
|
OrderInfoVo result = BeanUtil.toBean(orderInfo, OrderInfoVo.class);
|
|
|
|
+
|
|
|
|
+
|
|
Department department = departmentService.getById(orderInfo.getDepartmentId());
|
|
Department department = departmentService.getById(orderInfo.getDepartmentId());
|
|
if (department != null) {
|
|
if (department != null) {
|
|
result.setDepartmentName(department.getName());
|
|
result.setDepartmentName(department.getName());
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
+
|
|
List<OrderSku> tempOrderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, id));
|
|
List<OrderSku> tempOrderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, id));
|
|
List<OrderSkuVo> orderSkuList = BeanUtil.copyToList(tempOrderSkuList, OrderSkuVo.class);
|
|
List<OrderSkuVo> orderSkuList = BeanUtil.copyToList(tempOrderSkuList, OrderSkuVo.class);
|
|
skuSpecService.attributeAssign(orderSkuList, OrderSkuVo::getSkuSpecId, (item, skuSpec) -> {
|
|
skuSpecService.attributeAssign(orderSkuList, OrderSkuVo::getSkuSpecId, (item, skuSpec) -> {
|
|
@@ -109,7 +118,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
});
|
|
});
|
|
result.setOrderSkuList(orderSkuList);
|
|
result.setOrderSkuList(orderSkuList);
|
|
|
|
|
|
-
|
|
+
|
|
List<OrderSkuBom> tempOrderSkuBomList = orderSkuBomService.list(q -> q.eq(OrderSkuBom::getOrderId, id));
|
|
List<OrderSkuBom> tempOrderSkuBomList = orderSkuBomService.list(q -> q.eq(OrderSkuBom::getOrderId, id));
|
|
List<OrderSkuBomVo> orderSkuBomList = BeanUtil.copyToList(tempOrderSkuBomList, OrderSkuBomVo.class);
|
|
List<OrderSkuBomVo> orderSkuBomList = BeanUtil.copyToList(tempOrderSkuBomList, OrderSkuBomVo.class);
|
|
bomSpecService.attributeAssign(orderSkuBomList, OrderSkuBom::getBomSpecId, (item, bomSpec) -> {
|
|
bomSpecService.attributeAssign(orderSkuBomList, OrderSkuBom::getBomSpecId, (item, bomSpec) -> {
|
|
@@ -128,7 +137,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
public void add(OrderInfoDto orderDto) {
|
|
public void add(OrderInfoDto orderDto) {
|
|
orderDto.setSource(1);
|
|
orderDto.setSource(1);
|
|
orderDto.setCode("PI" + new Date().getTime());
|
|
orderDto.setCode("PI" + new Date().getTime());
|
|
- orderDto.setDeliveryTime(DateUtil.offsetDay(new Date(), 1));
|
|
|
|
orderDto.setSettlementStatus(1);
|
|
orderDto.setSettlementStatus(1);
|
|
orderDto.setTaxRate(new BigDecimal("10.00"));
|
|
orderDto.setTaxRate(new BigDecimal("10.00"));
|
|
orderDto.setTag("0");
|
|
orderDto.setTag("0");
|
|
@@ -143,9 +151,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
orderSkuService.saveBatch(tempOrderSkuList);
|
|
orderSkuService.saveBatch(tempOrderSkuList);
|
|
|
|
|
|
List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
- .peek(item -> item.setOrderId(orderDto.getId()))
|
|
+ .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
- .flatMap(orderSku -> orderSku.getOrderSkuBomList()
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderId(orderDto.getId()))
|
|
- .stream().peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
orderSkuBomService.saveBatch(orderSkuBomList);
|
|
orderSkuBomService.saveBatch(orderSkuBomList);
|
|
|
|
|
|
@@ -170,9 +178,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
orderSkuService.saveOrUpdateBatch(tempOrderSkuList);
|
|
orderSkuService.saveOrUpdateBatch(tempOrderSkuList);
|
|
|
|
|
|
List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
- .peek(item -> item.setOrderId(orderDto.getId()))
|
|
+ .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
- .flatMap(orderSku -> orderSku.getOrderSkuBomList()
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderId(orderDto.getId()))
|
|
- .stream().peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
orderSkuBomService.saveOrUpdateBatch(orderSkuBomList);
|
|
orderSkuBomService.saveOrUpdateBatch(orderSkuBomList);
|
|
|
|
|
|
@@ -199,4 +207,58 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
orderOperatingLogService.save(orderOperatingLog);
|
|
orderOperatingLogService.save(orderOperatingLog);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public SkuSpecPriceVo getSkuSpecPrice(SkuSpecPriceDto dto) {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Long skuSpecId = dto.getSkuSpecId();
|
|
|
|
+ SkuSpec skuSpec = skuSpecService.getById(skuSpecId);
|
|
|
|
+ Assert.notNull(skuSpec, "未知sku规格");
|
|
|
|
+ Long bomSpecId = skuSpec.getBomSpecId();
|
|
|
|
+ Assert.notNull(bomSpecId, "sku未绑定bom");
|
|
|
|
+ BomSpec bomSpec = bomSpecService.getById(bomSpecId);
|
|
|
|
+ Assert.notNull(bomSpec, "未知bom规格");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Long deptId = SecurityUtils.getDeptId();
|
|
|
|
+ Department department = departmentService.getById(deptId);
|
|
|
|
+ Assert.notNull(department, "未知事业部");
|
|
|
|
+ Long priceBillingStandardId = department.getPriceBillingStandardId();
|
|
|
|
+ Assert.notNull(priceBillingStandardId, "事业部未绑定加工计费标准");
|
|
|
|
+ List<PriceBillingStandardDetail> priceBillingStandardDetailList = priceBillingStandardDetailService.list(
|
|
|
|
+ q -> q.eq(PriceBillingStandardDetail::getPriceBillingStandardId, priceBillingStandardId));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ SkuSpecPriceVo skuSpecPriceVo = new SkuSpecPriceVo();
|
|
|
|
+ skuSpecPriceVo.setUnitPrice(bomSpec.getInternalSellingPrice());
|
|
|
|
+ skuSpecPriceVo.setCustomProcessingFee(BigDecimal.ZERO);
|
|
|
|
+ skuSpecPriceVo.setLssueFee(BigDecimal.ZERO);
|
|
|
|
+ skuSpecPriceVo.setDeliveryMaterialsFee(BigDecimal.ZERO);
|
|
|
|
+ skuSpecPriceVo.setPackingLabor(BigDecimal.ZERO);
|
|
|
|
+
|
|
|
|
+ for (PriceBillingStandardDetail priceBillingStandardDetail : priceBillingStandardDetailList) {
|
|
|
|
+ String chargeItem = priceBillingStandardDetail.getChargeItem();
|
|
|
|
+ BigDecimal chargePrice = ObjectUtil.defaultIfNull(priceBillingStandardDetail.getChargePrice(), BigDecimal.ZERO);
|
|
|
|
+ switch (chargeItem) {
|
|
|
|
+ case "3":
|
|
|
|
+ skuSpecPriceVo.setPackingLabor(chargePrice);
|
|
|
|
+ break;
|
|
|
|
+ case "4":
|
|
|
|
+ skuSpecPriceVo.setLssueFee(chargePrice);
|
|
|
|
+ break;
|
|
|
|
+ case "5":
|
|
|
|
+ skuSpecPriceVo.setDeliveryMaterialsFee(chargePrice);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ if (Objects.equals(chargeItem, skuSpec.getMachinedPanel())
|
|
|
|
+ && priceBillingStandardDetail.getSectionMin().compareTo(dto.getQuantity()) >= 0
|
|
|
|
+ && priceBillingStandardDetail.getSectionMax().compareTo(dto.getQuantity()) < 0) {
|
|
|
|
+ skuSpecPriceVo.setCustomProcessingFee(chargePrice);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return skuSpecPriceVo;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|