|
@@ -0,0 +1,129 @@
|
|
|
+package com.sd.business.service.order.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.sd.business.entity.order.dto.OrderSkuDto;
|
|
|
+import com.sd.business.entity.order.enums.ArtworkLogTypeEnum;
|
|
|
+import com.sd.business.entity.order.po.OrderInfo;
|
|
|
+import com.sd.business.entity.order.po.OrderSku;
|
|
|
+import com.sd.business.entity.order.po.OrderSkuArtworkLog;
|
|
|
+import com.sd.business.entity.order.vo.OrderSkuVo;
|
|
|
+import com.sd.business.mapper.order.OrderMapper;
|
|
|
+import com.sd.business.service.bom.BomSpecService;
|
|
|
+import com.sd.business.service.order.OrderService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.sd.business.entity.order.vo.OrderInfoVo;
|
|
|
+import com.sd.business.entity.order.dto.OrderInfoSelectDto;
|
|
|
+import com.sd.business.entity.order.dto.OrderInfoDto;
|
|
|
+import com.sd.business.service.order.OrderSkuArtworkLogService;
|
|
|
+import com.sd.business.service.order.OrderSkuService;
|
|
|
+import com.sd.business.util.CodeEnum;
|
|
|
+import com.sd.framework.util.sql.Sql;
|
|
|
+import com.sd.framework.util.Assert;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 订单 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2023-11-23
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implements OrderService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderSkuService orderSkuService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderSkuArtworkLogService orderSkuArtworkLogService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BomSpecService bomSpecService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
|
|
|
+
|
|
|
+ Page<OrderInfoVo> page = Sql.create(OrderInfoVo.class)
|
|
|
+ .selectAll(OrderInfo.class)
|
|
|
+ .from(OrderInfo.class)
|
|
|
+ .orderByDesc(OrderInfo::getId)
|
|
|
+ .page(dto.getPage());
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public OrderInfoVo detail(Long id) {
|
|
|
+
|
|
|
+ OrderInfoVo vo = Sql.create(OrderInfoVo.class)
|
|
|
+ .selectAll(OrderInfo.class)
|
|
|
+ .from(OrderInfo.class)
|
|
|
+ .eq(OrderInfo::getId, id)
|
|
|
+ .one();
|
|
|
+
|
|
|
+ Assert.notNull(vo, "未知数据");
|
|
|
+
|
|
|
+ // 赋值订单明细
|
|
|
+ List<OrderSku> tempOrderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, id));
|
|
|
+ List<OrderSkuVo> orderSkuList = BeanUtil.copyToList(tempOrderSkuList, OrderSkuVo.class);
|
|
|
+ bomSpecService.attributeAssign(orderSkuList, OrderSkuVo::getBomSpecId, (item, bomSpec) -> {
|
|
|
+ item.setSkuName(bomSpec.getName());
|
|
|
+ });
|
|
|
+ vo.setOrderSkuList(orderSkuList);
|
|
|
+
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(OrderInfoDto dto) {
|
|
|
+ dto.setCode(CodeEnum.ORDER_CODE.getCode());
|
|
|
+ this.save(dto);
|
|
|
+
|
|
|
+ List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
+ // 新增订单产品包材配件
|
|
|
+ List<OrderSku> tempOrderSkuList = orderSkuList.stream()
|
|
|
+ .peek(item -> item.setOrderId(dto.getId()))
|
|
|
+ .map(item -> (OrderSku) item)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ orderSkuService.saveBatch(tempOrderSkuList);
|
|
|
+
|
|
|
+ // 新增订单产品图稿操作日志
|
|
|
+ List<OrderSkuArtworkLog> orderSkuArtworkLogList = tempOrderSkuList.stream().map(item -> {
|
|
|
+ OrderSkuArtworkLog orderSkuArtworkLog = new OrderSkuArtworkLog();
|
|
|
+ orderSkuArtworkLog.setOrderId(dto.getId());
|
|
|
+ orderSkuArtworkLog.setOrderSkuId(item.getId());
|
|
|
+ orderSkuArtworkLog.setType(ArtworkLogTypeEnum.UPLOAD_BLUEPRINT.getKey());
|
|
|
+ return orderSkuArtworkLog;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ orderSkuArtworkLogService.saveBatch(orderSkuArtworkLogList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void edit(OrderInfoDto dto) {
|
|
|
+ // 更新订单
|
|
|
+ this.updateById(dto);
|
|
|
+ // 更新订单产品
|
|
|
+ List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
+ List<OrderSku> tempOrderSkuList = orderSkuList.stream()
|
|
|
+ .peek(item -> item.setOrderId(dto.getId()))
|
|
|
+ .map(item -> (OrderSku) item)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, dto.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|