|
|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
package org.springblade.purchase.sales.service.impl;
|
|
|
|
|
|
+import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.google.protobuf.ServiceException;
|
|
|
@@ -285,83 +286,67 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public R createMarket(Order order) {
|
|
|
- Order selectById = baseMapper.selectById(order.getId());
|
|
|
- if (selectById == null){
|
|
|
- throw new RuntimeException("找不到单据信息");
|
|
|
- }
|
|
|
- //保存订单主表信息
|
|
|
- //获取系统编号
|
|
|
- R billNo = serialClient.getBillNo(order.getBillType(),order.getTradeType());
|
|
|
- if (billNo.getCode() != 200){
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- throw new RuntimeException("生成系统编号失败");
|
|
|
- }
|
|
|
- selectById.setOrgOrderNo(selectById.getOrderNo());
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(selectById.getCorpId());
|
|
|
- if (corpMessage.isSuccess()){
|
|
|
- R clientBillNo = serialClient.getBillNo(corpMessage.getData().getCode(),order.getTradeType());
|
|
|
- if (!clientBillNo.isSuccess()){
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return R.fail(500,"生成订单编号失败");
|
|
|
- }
|
|
|
- selectById.setOrderNo((String) clientBillNo.getData());
|
|
|
- }
|
|
|
- selectById.setSrcId(order.getId());
|
|
|
- selectById.setSrcOrderNo(selectById.getSysNo());
|
|
|
- selectById.setId(null);
|
|
|
- selectById.setSysNo((String) billNo.getData());
|
|
|
- selectById.setTenantId(SecureUtil.getTenantId());
|
|
|
- selectById.setCreateTime(new Date());
|
|
|
- selectById.setCreateUser(SecureUtil.getUserId());
|
|
|
- selectById.setUpdateUser(null);
|
|
|
- selectById.setUpdateTime(null);
|
|
|
- selectById.setOrderStatus("录入");
|
|
|
- selectById.setIfEnquiry(null);
|
|
|
- selectById.setIfShipping(null);
|
|
|
- selectById.setIfInvoice("否");
|
|
|
- selectById.setBillType(order.getBillType());
|
|
|
- selectById.setTradeType(order.getTradeType());
|
|
|
- if (order.getBusinesDate() == null){
|
|
|
- selectById.setBusinesDate(new Date());
|
|
|
- }
|
|
|
- baseMapper.insert(selectById);
|
|
|
- //保存订单费用明细
|
|
|
- List<OrderFees> orderFeesList = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", order.getId()).eq("is_deleted", 0));
|
|
|
- if (CollectionUtils.isNotEmpty(orderFeesList)){
|
|
|
- orderFeesList.stream().forEach(fee ->{
|
|
|
- fee.setPid(selectById.getId());
|
|
|
- fee.setId(null);
|
|
|
- fee.setCreateTime(new Date());
|
|
|
- fee.setCreateUser(SecureUtil.getUserId());
|
|
|
- fee.setUpdateTime(null);
|
|
|
- fee.setUpdateUser(null);
|
|
|
- orderFeesService.save(fee);
|
|
|
- });
|
|
|
- }
|
|
|
- //保存订单明细
|
|
|
- List<OrderItems> orderItemsList = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("is_deleted", 0));
|
|
|
+ //先获取订单明细有多少个供应商
|
|
|
+ List<OrderItems> orderItemsList = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("is_deleted", 0).groupBy("corp_id"));
|
|
|
if (CollectionUtils.isNotEmpty(orderItemsList)){
|
|
|
orderItemsList.stream().forEach(item ->{
|
|
|
- item.setPid(selectById.getId());
|
|
|
- item.setId(null);
|
|
|
- item.setCreateTime(new Date());
|
|
|
- item.setCreateUser(SecureUtil.getUserId());
|
|
|
- item.setUpdateTime(null);
|
|
|
- item.setUpdateUser(null);
|
|
|
- orderItemsService.save(item);
|
|
|
- });
|
|
|
- }
|
|
|
- //保存订单文件信息
|
|
|
- List<OrderFiles> orderFilesList = orderFilesService.list(new QueryWrapper<OrderFiles>().eq("pid", order.getId()).eq("is_deleted", 0));
|
|
|
- if (CollectionUtils.isNotEmpty(orderFilesList)){
|
|
|
- orderFilesList.stream().forEach(file ->{
|
|
|
- file.setPid(selectById.getId());
|
|
|
- file.setId(null);
|
|
|
- file.setCreateTime(new Date());
|
|
|
- file.setCreateUser(SecureUtil.getUserId());
|
|
|
- file.setUpdateTime(null);
|
|
|
- file.setUpdateUser(null);
|
|
|
- orderFilesService.save(file);
|
|
|
+ Order selectById = baseMapper.selectById(order.getId());
|
|
|
+ if (selectById == null){
|
|
|
+ throw new RuntimeException("找不到单据信息");
|
|
|
+ }
|
|
|
+ //保存订单主表信息
|
|
|
+ //获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(order.getBillType(),order.getTradeType());
|
|
|
+ if (billNo.getCode() != 200){
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成系统编号失败");
|
|
|
+ }
|
|
|
+ selectById.setOrgOrderNo(selectById.getOrderNo());
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
|
|
|
+ if (corpMessage.isSuccess()){
|
|
|
+ R clientBillNo = serialClient.getBillNo(corpMessage.getData().getCode(),order.getTradeType());
|
|
|
+ if (!clientBillNo.isSuccess()){
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成订单编号失败");
|
|
|
+ }
|
|
|
+ if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())){ //进口的orgOrderNo 存的是采购订单号 出口国内存的是本身的订单号码
|
|
|
+ order.setOrgOrderNo((String) clientBillNo.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ selectById.setSrcId(order.getId());
|
|
|
+ selectById.setCorpId(item.getCorpId());
|
|
|
+ selectById.setSrcOrderNo(selectById.getSysNo());
|
|
|
+ selectById.setId(null);
|
|
|
+ selectById.setSysNo((String) billNo.getData());
|
|
|
+ selectById.setTenantId(SecureUtil.getTenantId());
|
|
|
+ selectById.setCreateTime(new Date());
|
|
|
+ selectById.setCreateUser(SecureUtil.getUserId());
|
|
|
+ selectById.setUpdateUser(null);
|
|
|
+ selectById.setUpdateTime(null);
|
|
|
+ selectById.setOrderStatus("录入");
|
|
|
+ selectById.setIfEnquiry(null);
|
|
|
+ selectById.setIfShipping(null);
|
|
|
+ selectById.setIfInvoice("否");
|
|
|
+ selectById.setBillType(order.getBillType());
|
|
|
+ selectById.setTradeType(order.getTradeType());
|
|
|
+ if (order.getBusinesDate() == null){
|
|
|
+ selectById.setBusinesDate(new Date());
|
|
|
+ }
|
|
|
+ baseMapper.insert(selectById);
|
|
|
+ //保存订单明细
|
|
|
+ List<OrderItems> orderList = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("is_deleted", 0)
|
|
|
+ .eq("corp_id",item.getCorpId()));
|
|
|
+ if (CollectionUtils.isNotEmpty(orderList)){
|
|
|
+ orderList.stream().forEach(items ->{
|
|
|
+ items.setPid(selectById.getId());
|
|
|
+ items.setId(null);
|
|
|
+ items.setCreateTime(new Date());
|
|
|
+ items.setCreateUser(SecureUtil.getUserId());
|
|
|
+ items.setUpdateTime(null);
|
|
|
+ items.setUpdateUser(null);
|
|
|
+ orderItemsService.save(items);
|
|
|
+ });
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
return R.data(order);
|