|
|
@@ -1,6 +1,8 @@
|
|
|
package com.trade.purchase.order.service.impl;
|
|
|
|
|
|
+import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
@@ -13,6 +15,7 @@ import com.trade.purchase.order.component.IOrderSave;
|
|
|
import com.trade.purchase.order.dto.OrderSubmitDto;
|
|
|
import com.trade.purchase.order.entity.*;
|
|
|
import com.trade.purchase.order.enums.OrderStatusEnum;
|
|
|
+import com.trade.purchase.order.enums.OrderTypeEnum;
|
|
|
import com.trade.purchase.order.mapper.OrderMapper;
|
|
|
import com.trade.purchase.order.service.IOrderService;
|
|
|
import com.trade.purchase.order.vo.OrderVO;
|
|
|
@@ -23,9 +26,11 @@ import org.springblade.client.entity.GoodsDesc;
|
|
|
import org.springblade.client.feign.ICorpsDescClient;
|
|
|
import org.springblade.client.feign.IFeesDescClient;
|
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
|
+import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.client.vo.CorpsDescVO;
|
|
|
import org.springblade.client.vo.GoodsDescVO;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
@@ -33,10 +38,9 @@ import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -54,6 +58,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
private OrderItemsServiceImpl orderItemsService;//订单明细表
|
|
|
private OrderModifyServiceImpl orderModifyService;//订单修改日志
|
|
|
private IUserClient userClient;//获取用户信息
|
|
|
+ private ISerialClient serialClient;//生成系统编号
|
|
|
private IFeesDescClient feesDescClient;//获取费用信息
|
|
|
private IGoodsDescClient goodsDescClient;//获取商品信息
|
|
|
private ICorpsDescClient corpsDescClient;//获取客户信息
|
|
|
@@ -75,14 +80,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
// 转VO
|
|
|
List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
|
|
|
// 获取客户信息
|
|
|
- /*R<List<CorpsDescVO>> listR = corpsDescClient.selCorpsDetails(AuthUtil.getTenantId());
|
|
|
- if (!listR.isSuccess() || CollectionUtils.isEmpty(listR.getData())) {
|
|
|
- throw new OrderException("找不到客户信息");
|
|
|
+ if (CollectionUtils.isNotEmpty(copy)){
|
|
|
+ copy.stream().forEach(item ->{
|
|
|
+ if (item.getCorpId() != null){
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null){
|
|
|
+ item.setCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
- copy.forEach(li -> {
|
|
|
- Optional<CorpsDescVO> first = listR.getData().stream().filter(corp -> Objects.equals(corp.getId(), li.getCorpId())).findFirst();
|
|
|
- first.ifPresent(corpsDescVO -> li.setCorpName(corpsDescVO.getCname()));
|
|
|
- });*/
|
|
|
List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
|
|
|
page.setRecords(copy);
|
|
|
}
|
|
|
@@ -165,6 +172,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (createUser.isSuccess()) {
|
|
|
vo.setCreateUserName(createUser.getData().getName());
|
|
|
}
|
|
|
+ //获取客户中文名
|
|
|
+ if (orderMessage.getCorpId() != null){
|
|
|
+ R<List<Map<String,Object>>> corpMessage = corpsDescClient.getCorpsMessage(orderMessage.getCorpId().toString());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null){
|
|
|
+ vo.setCorpsName(corpMessage.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
//获取订单明细信息
|
|
|
List<OrderItems> orderItemsList = this.getOrderItems(vo.getId());
|
|
|
if (CollectionUtils.isNotEmpty(orderItemsList)) {
|
|
|
@@ -191,6 +205,100 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 报价单生成采购询价单
|
|
|
+ * @param order
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public R<OrderVO> savePurchaseEnquiry(Order order) {
|
|
|
+ Order purchaseEnquiry = baseMapper.selectById(order.getId());
|
|
|
+ //获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(order.getBillType());
|
|
|
+ if (!billNo.isSuccess()){
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500,"生成系统编号失败");
|
|
|
+ }
|
|
|
+ purchaseEnquiry.setSrcId(purchaseEnquiry.getId());
|
|
|
+ purchaseEnquiry.setSrcOrderNo(purchaseEnquiry.getSysNo());
|
|
|
+ purchaseEnquiry.setSysNo((String) billNo.getData());
|
|
|
+ purchaseEnquiry.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ purchaseEnquiry.setUpdateTime(new Date());
|
|
|
+ purchaseEnquiry.setIfEnquiry("已提交");
|
|
|
+ purchaseEnquiry.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
|
|
|
+ purchaseEnquiry.setTradeType(OrderTypeEnum.EXPORT.getType());
|
|
|
+ purchaseEnquiry.setId(null);
|
|
|
+ baseMapper.insert(purchaseEnquiry);
|
|
|
+ OrderVO vo = OrderMapstructMapper.INSTANCE.toVo(purchaseEnquiry);
|
|
|
+ //保存明细数据
|
|
|
+ List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId())
|
|
|
+ .eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0).orderByAsc("sort"));
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ list.stream().forEach(item ->{
|
|
|
+ item.setId(null);
|
|
|
+ item.setPid(purchaseEnquiry.getId());
|
|
|
+ item.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ orderItemsService.save(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ vo.setItemsVOList(list.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
|
|
|
+ return R.data(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<OrderVO> shippingEnquiry(IPage<OrderVO> page, OrderVO order) {
|
|
|
+ LambdaQueryWrapper<Order> lambdaQuery = Wrappers.<Order>lambdaQuery();
|
|
|
+ // 组装查询条件
|
|
|
+ pageShippingEnquiry(lambdaQuery, order);
|
|
|
+
|
|
|
+ Page<Order> orderPage = this.page(new Page<>(page.getCurrent(), page.getSize()), lambdaQuery);
|
|
|
+ if (CollectionUtils.isNotEmpty(orderPage.getRecords())) {
|
|
|
+ List<Order> records = orderPage.getRecords();
|
|
|
+ // 转VO
|
|
|
+ List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
|
|
|
+ // 获取客户信息
|
|
|
+ /*R<List<CorpsDescVO>> listR = corpsDescClient.selCorpsDetails(AuthUtil.getTenantId());
|
|
|
+ if (!listR.isSuccess() || CollectionUtils.isEmpty(listR.getData())) {
|
|
|
+ throw new OrderException("找不到客户信息");
|
|
|
+ }
|
|
|
+ copy.forEach(li -> {
|
|
|
+ Optional<CorpsDescVO> first = listR.getData().stream().filter(corp -> Objects.equals(corp.getId(), li.getCorpId())).findFirst();
|
|
|
+ first.ifPresent(corpsDescVO -> li.setCorpName(corpsDescVO.getCname()));
|
|
|
+ });*/
|
|
|
+ List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
|
|
|
+ page.setRecords(copy);
|
|
|
+ }
|
|
|
+ page.setTotal(orderPage.getTotal());
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 船务询价修改费用信息
|
|
|
+ * @param submitDto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R<OrderSubmitDto> saveShippingMessage(OrderSubmitDto submitDto) {
|
|
|
+ if (CollectionUtils.isNotEmpty(submitDto.getOrderFeesList())){
|
|
|
+ submitDto.getOrderFeesList().stream().forEach(item ->{
|
|
|
+ item.setTenantId(SecureUtil.getTenantId());
|
|
|
+ if (item.getId() == null){
|
|
|
+ item.setCreateUser(SecureUtil.getUserId());
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setPid(submitDto.getId());
|
|
|
+ orderFeesService.save(item);
|
|
|
+ }else {
|
|
|
+ item.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ orderFeesService.updateById(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.data(submitDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取订单明细数据
|
|
|
*
|
|
|
* @param orderId 订单id
|
|
|
@@ -259,5 +367,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
return orderFeesList;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 组装查询条件
|
|
|
+ *
|
|
|
+ * @param lambdaQuery 查询信息
|
|
|
+ * @param order 查询条件
|
|
|
+ */
|
|
|
+ private void pageShippingEnquiry(LambdaQueryWrapper<Order> lambdaQuery, OrderVO order) {
|
|
|
+ lambdaQuery.eq(Func.notNull(order.getCorpId()), Order::getCorpId, order.getCorpId());
|
|
|
+ lambdaQuery.eq(Func.isNotBlank(order.getPaymentType()), Order::getPaymentType, order.getPaymentType());
|
|
|
+ lambdaQuery.eq(Func.isNotBlank(order.getPackageRemarks()), Order::getPackageRemarks, order.getPackageRemarks());
|
|
|
+ lambdaQuery.eq(Func.notNull(order.getOceanFreight()), Order::getOceanFreight, order.getOceanFreight());
|
|
|
+ lambdaQuery.eq(Order::getTenantId, AuthUtil.getTenantId());
|
|
|
+ lambdaQuery.eq(Order::getBillType, order.getBillType());
|
|
|
+ lambdaQuery.eq(Order::getTradeType, order.getTradeType());
|
|
|
+ lambdaQuery.like(Func.isNotBlank(order.getSysNo()), Order::getSysNo, order.getSysNo());
|
|
|
+ lambdaQuery.like(Func.isNotBlank(order.getBanks()), Order::getBanks, order.getBanks());
|
|
|
+ lambdaQuery.like(Func.isNotBlank(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());
|
|
|
+ lambdaQuery.like(Func.isNotBlank(order.getBanksAccountName()), Order::getBanksAccountName, order.getBanksAccountName());
|
|
|
+ lambdaQuery.ne(Order::getIfShipping,"无");
|
|
|
+ lambdaQuery.between(Func.isNotBlank(order.getArrivalDateStart()), Order::getRequiredArrivalDate,
|
|
|
+ order.getArrivalDateStart(), order.getArrivalDateEnd());
|
|
|
+ }
|
|
|
|
|
|
}
|