|
@@ -0,0 +1,103 @@
|
|
|
+package com.fjhx.service.order.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.entity.customer.CustomerInfo;
|
|
|
+import com.fjhx.entity.order.OrderSales;
|
|
|
+import com.fjhx.entity.order.OrderSalesDetails;
|
|
|
+import com.fjhx.mapper.order.OrderSalesMapper;
|
|
|
+import com.fjhx.params.order.OrderSalesEx;
|
|
|
+import com.fjhx.params.order.OrderSalesVo;
|
|
|
+import com.fjhx.service.order.OrderSalesDetailsService;
|
|
|
+import com.fjhx.service.order.OrderSalesService;
|
|
|
+import com.fjhx.uitl.code.CodeEnum;
|
|
|
+import com.fjhx.utils.Assert;
|
|
|
+import com.fjhx.utils.RegionClientUtil;
|
|
|
+import com.fjhx.utils.wrapperUtil.IWrapper;
|
|
|
+import com.fjhx.utils.wrapperUtil.KeywordData;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 销售订单 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author ${author}
|
|
|
+ * @since 2022-12-02
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class OrderSalesServiceImpl extends ServiceImpl<OrderSalesMapper, OrderSales> implements OrderSalesService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderSalesDetailsService orderSalesDetailsService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<OrderSalesEx> getPage(Map<String, Object> condition) {
|
|
|
+
|
|
|
+ IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
|
|
|
+ .keyword(new KeywordData("os", OrderSales::getCode), new KeywordData("ci", CustomerInfo::getName))
|
|
|
+ .eq("os", OrderSales::getType)
|
|
|
+ .eq("os", OrderSales::getStatus)
|
|
|
+ .like("os", OrderSales::getCode)
|
|
|
+ .like("ci", CustomerInfo::getName, condition.get("customerName"))
|
|
|
+ .eq("os", OrderSales::getCountryId)
|
|
|
+ .eq("os", OrderSales::getProvinceId)
|
|
|
+ .eq("os", OrderSales::getCityId)
|
|
|
+ .ge("os", OrderSales::getAmountMoney, condition.get("minAmountMoney"))
|
|
|
+ .le("os", OrderSales::getAmountMoney, condition.get("maxAmountMoney"));
|
|
|
+
|
|
|
+ Page<OrderSalesEx> page = baseMapper.getPage(createPage(condition), wrapper);
|
|
|
+
|
|
|
+ // 赋值国省市
|
|
|
+ RegionClientUtil.setEntityRegionName(page.getRecords());
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void add(OrderSalesVo orderSalesVo) {
|
|
|
+ List<OrderSalesDetails> orderSalesDetailsList = orderSalesVo.getOrderSalesDetailsList();
|
|
|
+ Assert.notEmpty(orderSalesDetailsList, "产品列表不能为空");
|
|
|
+
|
|
|
+ // 订单时间
|
|
|
+ orderSalesVo.setOrderTime(ObjectUtil.defaultIfNull(orderSalesVo.getOrderTime(), new Date()));
|
|
|
+
|
|
|
+ // 统计订单金额
|
|
|
+ BigDecimal amountMoney = orderSalesDetailsList.stream()
|
|
|
+ .map(item -> item.getPrice().multiply(item.getQuantity())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ orderSalesVo.setAmountMoney(amountMoney);
|
|
|
+
|
|
|
+ // 状态
|
|
|
+ orderSalesVo.setStatus(1);
|
|
|
+
|
|
|
+ // 添加订单
|
|
|
+ synchronized (this) {
|
|
|
+ orderSalesVo.setCode(CodeEnum.ORDER_SALES.getCode());
|
|
|
+ save(orderSalesVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加订单明细
|
|
|
+ for (OrderSalesDetails orderSalesDetails : orderSalesDetailsList) {
|
|
|
+ orderSalesDetails.setOrderSalesId(orderSalesVo.getId());
|
|
|
+ }
|
|
|
+ orderSalesDetailsService.saveBatch(orderSalesDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(OrderSalesVo orderSalesVo) {
|
|
|
+ updateById(orderSalesVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(OrderSalesVo orderSalesVo) {
|
|
|
+ removeById(orderSalesVo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|