纪新园 3 лет назад
Родитель
Сommit
13da99a40e

+ 37 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/dealer/DealerOrderController.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.order.enums.OrderTypeEnum;
@@ -203,29 +204,49 @@ public class DealerOrderController extends BladeController {
 			page.getRecords().stream().forEach(item -> {
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
-						item.setCorpsName(corpsDescList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst().get().getCname());
+						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)){
+							item.setCorpsName(corpsDesc.getCname());
+						}
+//						item.setCorpsName(corpsDescList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst().get().getCname());
 					}
 				}
 				if (item.getBelongToCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(belongToCorpList)) {
-						item.setBelongToCorpName(belongToCorpList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId())).findFirst().get().getCname());
+						CorpsDesc corpsDesc = belongToCorpList.stream().filter(d -> d.getId().equals(item.getBelongToCorpId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)){
+							item.setBelongToCorpName(corpsDesc.getCname());
+						}
+//						item.setBelongToCorpName(belongToCorpList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId())).findFirst().get().getCname());
 					}
 				}
 				if (item.getProductionPlant() != null) {
 					if (ObjectUtil.isNotEmpty(productionPlantList)) {
-						item.setProductionPlantName(productionPlantList.stream().filter(e -> e.getId().equals(item.getProductionPlant())).findFirst().get().getCname());
+						CorpsDesc corpsDesc = productionPlantList.stream().filter(d -> d.getId().equals(item.getProductionPlant())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)){
+							item.setProductionPlantName(corpsDesc.getCname());
+						}
+//						item.setProductionPlantName(productionPlantList.stream().filter(e -> e.getId().equals(item.getProductionPlant())).findFirst().get().getCname());
 					}
 				}
 				//制单人
 				if (item.getCreateUser() != null){
 					if (ObjectUtil.isNotEmpty(createUserList)) {
-						item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
+						User user = createUserList.stream().filter(d -> d.getId().equals(item.getCreateUser())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(user)){
+							item.setCreateUserName(user.getName());
+						}
+//						item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
 					}
 				}
 				//仓库信息
 				if (item.getStorageId() != null){
 					if (ObjectUtil.isNotEmpty(storageList)){
-						item.setStorageName((storageList.stream().filter(e -> e.getId().equals(item.getStorageId()))).findFirst().get().getCname());
+						StorageDesc storageDesc = storageList.stream().filter(d -> d.getId().equals(item.getStorageId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(storageDesc)){
+							item.setStorageName(storageDesc.getCname());
+						}
+//						item.setStorageName((storageList.stream().filter(e -> e.getId().equals(item.getStorageId()))).findFirst().get().getCname());
 					}
 				}
 				//获取订单明细
@@ -307,6 +328,17 @@ public class DealerOrderController extends BladeController {
 		return orderService.saveOrderMessage(order);
 	}
 
+	/**
+	 * 新增或修改 经销商销售或采购订单表(app)
+	 */
+	@PostMapping("/submitApp")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R submitApp(@Valid @RequestBody Order order) {
+		order.setTradeType(OrderTypeEnum.DEALER.getType());
+		return orderService.saveOrderMessageApp(order);
+	}
+
 
 	/**
 	 * 删除 销售或采购订单表

+ 15 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java

@@ -164,19 +164,31 @@ public class EntranceOrderController extends BladeController {
 			page.getRecords().stream().forEach(item ->{
 				if (item.getCorpId() != null){
 					if (ObjectUtil.isNotEmpty(corpList)) {
-						item.setCorpsName(corpList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst().get().getCname());
+						CorpsDesc corpsDesc = corpList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)){
+							item.setCorpsName(corpsDesc.getCname());
+						}
+//						item.setCorpsName(corpList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst().get().getCname());
 					}
 				}
 				if (item.getBelongToCorpId() != null){
 					if (ObjectUtil.isNotEmpty(belongToCorpList)){
-						item.setBelongToCorpName(belongToCorpList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId())).findFirst().get().getCname());
+						CorpsDesc corpsDesc = corpList.stream().filter(d -> d.getId().equals(item.getBelongToCorpId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)){
+							item.setBelongToCorpName(corpsDesc.getCname());
+						}
+//						item.setBelongToCorpName(belongToCorpList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId())).findFirst().get().getCname());
 					}
 				}
 				//制单人名字
 				if(item.getCreateUser()!=null)
 				{
 					if (ObjectUtil.isNotEmpty(createUserList)) {
-						item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
+						User user = createUserList.stream().filter(d -> d.getId().equals(item.getCreateUser())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(user)){
+							item.setBelongToCorpName(user.getName());
+						}
+//						item.setCreateUserName(createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get().getName());
 					}
 				}
 				//获取订单明细

+ 8 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -56,6 +56,14 @@ public interface IOrderService extends IService<Order> {
 	R saveOrderMessage(Order order);
 
 	/**
+	 * 保存订单信息
+	 *
+	 * @param order
+	 * @return
+	 */
+	R saveOrderMessageApp(Order order);
+
+	/**
 	 * 获取订单详情
 	 *
 	 * @param order

+ 118 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -413,6 +413,124 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
+	@Transactional
+	public R saveOrderMessageApp(Order order) {
+		// 校验单号重复-新增
+		if (order.getId() == null && StringUtils.isNotBlank(order.getOrderNo())) {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		// 校验单号重复-编辑
+		else {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.ne(Order::getId, order.getId())
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		// 订单时间
+		Date date = new Date();
+		// 保存订单主表信息
+		if (order.getId() == null) {
+			// 获取系统编号
+			R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			order.setSysNo((String) billNo.getData());
+			R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			order.setOrderNo((String) clientBillNo.getData());
+			// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+			if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+				order.setOrgOrderNo((String) clientBillNo.getData());
+			}
+
+			order.setTenantId(SecureUtil.getTenantId());
+			order.setCreateTime(date);
+			order.setCreateUser(SecureUtil.getUserId());
+			if (order.getBusinesDate() == null) {
+				order.setBusinesDate(date);
+			}
+			baseMapper.insert(order);
+		} else {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getId, order.getId())
+				.eq(Order::getCorpId, order.getCorpId())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count <= 0) {
+				R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+				if (!clientBillNo.isSuccess()) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					return R.fail(500, "生成订单编号失败");
+				}
+				order.setOrderNo((String) clientBillNo.getData());
+				// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+				if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+					order.setOrgOrderNo((String) clientBillNo.getData());
+				}
+			}
+			order.setTenantId(SecureUtil.getTenantId());
+			order.setUpdateTime(date);
+			order.setUpdateUser(SecureUtil.getUserId());
+			baseMapper.updateById(order);
+		}
+		// 保存订单明细
+		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+			for (OrderItems orderItems : order.getOrderItemsList()) {
+				orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+				BigDecimal stockPrice = new BigDecimal("0.00");
+				BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
+				BigDecimal balanceQuantity = new BigDecimal("0.00");
+				BigDecimal balanceAmount = new BigDecimal("0.00");
+				//获取本商品库存
+				R<StockGoodsVO> r = stockGoodsClient.selectStock(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+					surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+					balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+					balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+					stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
+					r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
+					r.getData().setBalanceQuantity(balanceQuantity);
+					r.getData().setBalanceAmount(balanceAmount);
+					r.getData().setStockPrice(stockPrice);
+					stockGoodsClient.updateStock(r.getData());
+				}
+			}
+			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
+			order.setOrderItemsList(orderItemsList);
+			order.setDebitAmount(orderItemsList.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		}
+		baseMapper.updateById(order);
+		return R.data(order);
+	}
+
+	@Override
 	public Order getOrderMessage(Order order) {
 		// 获取订单主表信息
 		Order orderMessage = baseMapper.selectById(order.getId());