|
@@ -1,31 +1,46 @@
|
|
|
package com.sd.business.service.order.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.ruoyi.common.constant.StatusConstant;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
+import com.sd.business.entity.bom.po.BomSpec;
|
|
|
+import com.sd.business.entity.order.dto.BulkOrderConfirmDto;
|
|
|
import com.sd.business.entity.order.dto.OrderInfoDto;
|
|
|
import com.sd.business.entity.order.dto.OrderInfoSelectDto;
|
|
|
import com.sd.business.entity.order.dto.OrderSkuDto;
|
|
|
import com.sd.business.entity.order.enums.ArtworkLogTypeEnum;
|
|
|
+import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
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.po.OrderSkuArtworkMake;
|
|
|
+import com.sd.business.entity.order.vo.BulkOrderVo;
|
|
|
import com.sd.business.entity.order.vo.OrderInfoVo;
|
|
|
import com.sd.business.entity.order.vo.OrderSkuVo;
|
|
|
+import com.sd.business.entity.sku.po.SkuUser;
|
|
|
import com.sd.business.mapper.order.OrderMapper;
|
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.order.OrderService;
|
|
|
import com.sd.business.service.order.OrderSkuArtworkLogService;
|
|
|
+import com.sd.business.service.order.OrderSkuArtworkMakeService;
|
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
|
+import com.sd.business.service.sku.SkuUserService;
|
|
|
import com.sd.business.util.CodeEnum;
|
|
|
import com.sd.framework.util.Assert;
|
|
|
import com.sd.framework.util.sql.Sql;
|
|
|
+import com.sd.mq.config.OrderConfig;
|
|
|
+import com.sd.mq.entity.OrderMessage;
|
|
|
+import com.sd.mq.entity.OrderSkuDetail;
|
|
|
+import com.sd.mq.util.RabbitMqUtil;
|
|
|
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.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -44,17 +59,31 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
private OrderSkuService orderSkuService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private OrderSkuArtworkMakeService orderSkuArtworkMakeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private OrderSkuArtworkLogService orderSkuArtworkLogService;
|
|
|
|
|
|
@Autowired
|
|
|
private BomSpecService bomSpecService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SkuUserService skuUserService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
|
|
|
|
|
|
Page<OrderInfoVo> page = Sql.create(OrderInfoVo.class)
|
|
|
.selectAll(OrderInfo.class)
|
|
|
+ .selectAs(BomSpec::getCode, OrderInfoVo::getBomSpecCode)
|
|
|
+ .selectAs(SkuUser::getCode, OrderInfoVo::getSkuCode)
|
|
|
.from(OrderInfo.class)
|
|
|
+ .innerJoin(OrderSku.class, OrderSku::getOrderId, OrderInfo::getId)
|
|
|
+ .leftJoin(BomSpec.class, BomSpec::getId, OrderSku::getBomSpecId)
|
|
|
+ .leftJoin(SkuUser.class, SkuUser::getId, OrderSku::getSkuUserId)
|
|
|
+ .like(OrderInfo::getCode, dto.getCode())
|
|
|
+ .like(SkuUser::getCode, dto.getSkuCode())
|
|
|
+ .eq(OrderInfo::getCreateUser, SecurityUtils.getUserId())
|
|
|
.orderByDesc(OrderInfo::getId)
|
|
|
.page(dto);
|
|
|
|
|
@@ -76,7 +105,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
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());
|
|
|
+ item.setBomSpecCode(bomSpec.getCode());
|
|
|
+ item.setBomSpecName(bomSpec.getName());
|
|
|
+ });
|
|
|
+ skuUserService.attributeAssign(orderSkuList, OrderSkuVo::getSkuUserId, (item, skuUser) -> {
|
|
|
+ item.setSkuCode(skuUser.getCode());
|
|
|
+ item.setSkuName(skuUser.getName());
|
|
|
});
|
|
|
vo.setOrderSkuList(orderSkuList);
|
|
|
|
|
@@ -97,6 +131,20 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
.collect(Collectors.toList());
|
|
|
orderSkuService.saveBatch(tempOrderSkuList);
|
|
|
|
|
|
+ // 新增订单产品制作图稿数据
|
|
|
+ List<OrderSkuArtworkMake> orderSkuArtworkMakeList = tempOrderSkuList.stream()
|
|
|
+ .filter(item -> StrUtil.isBlank(item.getProductionDocument()))
|
|
|
+ .map(item -> {
|
|
|
+ OrderSkuArtworkMake orderSkuArtworkMake = new OrderSkuArtworkMake();
|
|
|
+ orderSkuArtworkMake.setOrderId(dto.getId());
|
|
|
+ orderSkuArtworkMake.setOrderSkuId(item.getId());
|
|
|
+ orderSkuArtworkMake.setBlueprint(item.getBlueprint());
|
|
|
+ orderSkuArtworkMake.setBlueprintDetails(item.getBlueprintDetails());
|
|
|
+ orderSkuArtworkMake.setStatus(StatusConstant.NO);
|
|
|
+ return orderSkuArtworkMake;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ orderSkuArtworkMakeService.saveBatch(orderSkuArtworkMakeList);
|
|
|
+
|
|
|
// 新增订单产品图稿操作日志
|
|
|
List<OrderSkuArtworkLog> orderSkuArtworkLogList = tempOrderSkuList.stream().map(item -> {
|
|
|
OrderSkuArtworkLog orderSkuArtworkLog = new OrderSkuArtworkLog();
|
|
@@ -107,6 +155,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
return orderSkuArtworkLog;
|
|
|
}).collect(Collectors.toList());
|
|
|
orderSkuArtworkLogService.saveBatch(orderSkuArtworkLogList);
|
|
|
+
|
|
|
+ sendMq(dto);
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -126,6 +176,70 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
|
|
|
@Override
|
|
|
public void delete(Long id) {
|
|
|
removeById(id);
|
|
|
+ orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
|
|
|
+ orderSkuArtworkMakeService.remove(q -> q.eq(OrderSkuArtworkMake::getOrderId, id));
|
|
|
+ orderSkuArtworkLogService.remove(q -> q.eq(OrderSkuArtworkLog::getOrderId, id));
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<BulkOrderVo> getBulkOrderPage(OrderInfoSelectDto dto) {
|
|
|
+
|
|
|
+ Page<BulkOrderVo> page = Sql.create(BulkOrderVo.class)
|
|
|
+ .selectAll(OrderInfo.class)
|
|
|
+ .select(OrderSku::getLength)
|
|
|
+ .select(OrderSku::getWidth)
|
|
|
+ .select(OrderSku::getHeight)
|
|
|
+ .select(OrderSku::getChromatophore)
|
|
|
+ .select(OrderSku::getColour)
|
|
|
+ .select(OrderSku::getFrontGrain)
|
|
|
+ .select(OrderSku::getReverseGrain)
|
|
|
+ .from(OrderInfo.class)
|
|
|
+ .innerJoin(OrderSku.class, OrderSku::getOrderId, OrderInfo::getId)
|
|
|
+ .like(OrderInfo::getCode, dto.getCode())
|
|
|
+ .isNull(OrderSku::getBomSpecId)
|
|
|
+ .orderByDesc(OrderInfo::getId)
|
|
|
+ .page(dto);
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void bulkOrderConfirm(BulkOrderConfirmDto dto) {
|
|
|
+ OrderInfo orderInfo = this.getById(dto.getId());
|
|
|
+ Assert.notNull(orderInfo, "未知数据");
|
|
|
+ if (Objects.equals(dto.getIsConfirm(), StatusConstant.YES)) {
|
|
|
+ Assert.notNull(dto.getBomSpecId(), "请选择bom");
|
|
|
+ BomSpec bomSpec = bomSpecService.getById(dto.getBomSpecId());
|
|
|
+ Assert.notNull(bomSpec, "未知bom");
|
|
|
+ OrderSku orderSku = orderSkuService.getOne(q -> q.eq(OrderSku::getOrderId, dto.getId()));
|
|
|
+ orderSku.setBomSpecId(bomSpec.getId());
|
|
|
+ orderSkuService.updateById(orderSku);
|
|
|
+ orderInfo.setStatus(OrderStatusEnum.PENDING_PAYMENT.getKey());
|
|
|
+ } else {
|
|
|
+ orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
|
|
|
+ }
|
|
|
+ this.updateById(orderInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息到mq
|
|
|
+ * @param dto
|
|
|
+ */
|
|
|
+ private void sendMq(OrderInfoDto dto) {
|
|
|
+ if (!Objects.equals(dto.getStatus(), OrderStatusEnum.WAIT_FOR_DELIVERY.getKey())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ OrderMessage orderMessage = new OrderMessage();
|
|
|
+ BeanUtil.copyProperties(dto, orderMessage);
|
|
|
+ orderMessage.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
|
|
|
+
|
|
|
+ List<OrderSkuDetail> orderSkuDetailList = BeanUtil.copyToList(dto.getOrderSkuList(), OrderSkuDetail.class);
|
|
|
+ // 赋值mes系统bom id
|
|
|
+ bomSpecService.attributeAssign(orderSkuDetailList, OrderSkuDetail::getBomSpecId, (item, bomSpec) -> {
|
|
|
+ item.setBomSpecId(bomSpec.getMesId());
|
|
|
+ });
|
|
|
+ orderMessage.setOrderSkuDetailList(orderSkuDetailList);
|
|
|
+ RabbitMqUtil.send(OrderConfig.DIRECT_EXCHANGE_NAME, OrderConfig.KX_ORDER_ADD_NAME, orderMessage);
|
|
|
+ }
|
|
|
}
|