Browse Source

2023年2月20日17:20:24

纪新园 2 years ago
parent
commit
5466f183db

+ 6 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java

@@ -636,4 +636,10 @@ public class Delivery implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal actualArrivalAmount;
 
+	/**
+	 * 提单号
+	 */
+	@ApiModelProperty(value = "提单号")
+	private String billLadingNo;
+
 }

+ 7 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -1308,6 +1308,13 @@ public class Order implements Serializable {
 	private String srcIds;
 
 	/**
+	 * 提单号
+	 */
+	@ApiModelProperty(value = "提单号")
+	private String billLadingNo;
+
+
+	/**
 	 * 采购状态类型
 	 */
 	@TableField(exist = false)

+ 12 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java

@@ -729,6 +729,12 @@ public class OrderItems implements Serializable {
 	 */
 	@ApiModelProperty(value = "业务类型")
 	private String billType;
+
+	/**
+	 * 采购员
+	 */
+	@ApiModelProperty(value = "采购员")
+	private String carry;
 	/**
 	 * 销售日期
 	 */
@@ -771,5 +777,11 @@ public class OrderItems implements Serializable {
 	@TableField(exist = false)
 	private String url;
 
+	/**
+	 * 采购状态(福达)
+	 */
+	@ApiModelProperty(value = "采购状态")
+	private String fudaPurchaseStatus;
+
 
 }

+ 125 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java

@@ -885,4 +885,129 @@ public class Order extends OrderBase {
 	@TableField(exist = false)
 	private String corpCName;
 
+	/**
+	 * 采购员(福达)
+	 */
+	@ApiModelProperty(value = "采购员")
+	private Long buyerId;
+
+	/**
+	 * 采购员(福达)
+	 */
+	@TableField(exist = false)
+	private String $buyerId;
+
+	/**
+	 * 采购员(福达)
+	 */
+	@ApiModelProperty(value = "采购员")
+	private String buyerName;
+
+	/**
+	 * 跟单员(福达)
+	 */
+	@ApiModelProperty(value = "跟单员")
+	private Long documenterId;
+
+	/**
+	 * 跟单员(福达)
+	 */
+	@TableField(exist = false)
+	private String $documenterId;
+
+	/**
+	 * 跟单员(福达)
+	 */
+	@ApiModelProperty(value = "跟单员")
+	private String documenterName;
+
+	/**
+	 * 采购状态(福达)
+	 */
+	@ApiModelProperty(value = "采购状态")
+	private String fudaPurchaseStatus;
+
+	/**
+	 * 采购日期(福达)
+	 */
+	@ApiModelProperty(value = "采购日期")
+	private Date fudaPurchaseDate;
+
+	/**
+	 * 排产状态(福达)
+	 */
+	@ApiModelProperty(value = "排产状态")
+	private String productionScheduling;
+
+	/**
+	 * 排产日期(福达)
+	 */
+	@ApiModelProperty(value = "排产日期")
+	private Date productionSchedulingDate;
+
+	/**
+	 * 预计货好状态(福达)
+	 */
+	@ApiModelProperty(value = "预计货好状态")
+	private String estimateGoodGoods;
+
+	/**
+	 * 预计货好日期(福达)
+	 */
+	@ApiModelProperty(value = "预计货好日期")
+	private Date estimateGoodGoodsDate;
+
+	/**
+	 * 跟单状态(福达)
+	 */
+	@ApiModelProperty(value = "跟单状态")
+	private String documentaryStatus;
+
+	/**
+	 * 跟单日期(福达)
+	 */
+	@ApiModelProperty(value = "跟单日期")
+	private Date documentaryDate;
+
+	/**
+	 * 来源ids
+	 */
+	@ApiModelProperty(value = "来源ids")
+	private String srcIds;
+
+	/**
+	 * 提单号
+	 */
+	@ApiModelProperty(value = "提单号")
+	private String billLadingNo;
+
+
+	/**
+	 * 采购状态类型
+	 */
+	@TableField(exist = false)
+	private Integer purchaseStatusType;
+
+	/**
+	 * 单据数量统计(日期区间)
+	 */
+	@TableField(exist = false)
+	private List<String> dateList;
+
+	public String get$buyerId() {
+		return $buyerId;
+	}
+
+	public void set$buyerId(String $buyerId) {
+		this.$buyerId = $buyerId;
+	}
+
+	public String get$documenterId() {
+		return $documenterId;
+	}
+
+	public void set$documenterId(String $documenterId) {
+		this.$documenterId = $documenterId;
+	}
+
 }

+ 42 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -659,4 +659,46 @@ public class OrderItems extends OrderBase {
 	@ApiModelProperty(value = "分摊金额(国际)")
 	private BigDecimal internationalAmount;
 
+	/**
+	 * 销售日期
+	 */
+	@ApiModelProperty(value = "销售日期")
+	private Date businesDate;
+
+	/**
+	 * 销售日期
+	 */
+	@TableField(exist = false)
+	private List<String> businesDateList;
+
+	/**
+	 * 计划交货日期
+	 */
+	@ApiModelProperty(value = "计划交货日期")
+	private Date plannedDeliveryDate;
+
+	/**
+	 * 计划交货日期
+	 */
+	@TableField(exist = false)
+	private List<String> plannedDeliveryDateList;
+
+	/**
+	 * 采购价
+	 */
+	@TableField(exist = false)
+	private BigDecimal purchasePrice;
+
+	/**
+	 * 图片
+	 */
+	@TableField(exist = false)
+	private String url;
+
+	/**
+	 * 采购状态(福达)
+	 */
+	@ApiModelProperty(value = "采购状态")
+	private String fudaPurchaseStatus;
+
 }

+ 9 - 6
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ExportDeliveryController.java

@@ -33,6 +33,7 @@ import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.StorageDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IStorageClient;
+import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -104,8 +105,8 @@ public class ExportDeliveryController extends BladeController {
 		lambdaQueryWrapper.eq(Delivery::getTradeType,OrderTypeEnum.EXPORT.getType());
 		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()),Delivery::getCreateTime,delivery.getCreateStartTime());//制单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()),Delivery::getCreateTime,delivery.getCreateEndTime());//制单日期结束
-		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinessDate,delivery.getBusinessStartDate());//发货日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()),Delivery::getBusinessDate,delivery.getBusinessEndDate());//发货日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinesDate,delivery.getBusinessStartDate());//发货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()),Delivery::getBusinesDate,delivery.getBusinessEndDate());//发货日期结束
 		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getOrgOrderNo()),Delivery::getOrgOrderNo,delivery.getOrgOrderNo());//销售订单号
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCorpId()),Delivery::getCorpId,delivery.getCorpId());//客户
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getSalesCompany()),Delivery::getSalesCompany,delivery.getSalesCompany());//所属公司
@@ -113,14 +114,15 @@ public class ExportDeliveryController extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalContact()),Delivery::getArrivalContact,delivery.getArrivalContact());//收货人
 		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalTel()),Delivery::getArrivalTel,delivery.getArrivalTel());//收货电话
 		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getDeliveryRemarks()),Delivery::getDeliveryRemarks,delivery.getDeliveryRemarks());//备注
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getBillLadingNo()),Delivery::getBillLadingNo,delivery.getBillLadingNo());//提单号
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()),Delivery::getCreateUser,delivery.getCreateUser());//制单人
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()),Delivery::getStorageId,delivery.getStorageId());//仓库
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getPortOfLoad()),Delivery::getPortOfLoad,delivery.getPortOfLoad());//起运港
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getPortOfDestination()),Delivery::getPortOfDestination,delivery.getPortOfDestination());//目的港
-		if (ObjectUtils.isNotNull(delivery.getBusinesDateList()) && delivery.getBusinesDateList().size()>0){//订单日期
-			lambdaQueryWrapper.ge(Delivery::getCreateTime,delivery.getBusinesDateList().get(0));
-			lambdaQueryWrapper.le(Delivery::getCreateTime,delivery.getBusinesDateList().get(1));
-		}
+		/*if (ObjectUtils.isNotNull(delivery.getBusinesDateList()) && delivery.getBusinesDateList().size()>0){//订单日期
+			lambdaQueryWrapper.ge(Delivery::getBusinesDate,delivery.getBusinesDateList().get(0));
+			lambdaQueryWrapper.le(Delivery::getBusinesDate,delivery.getBusinesDateList().get(1));
+		}*/
 		lambdaQueryWrapper.orderByDesc(Delivery::getId);
 		IPage<Delivery> pages = deliveryService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(pages.getRecords())){
@@ -349,6 +351,7 @@ public class ExportDeliveryController extends BladeController {
 	@PostMapping("/documentaryStatusUpdate")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "跟单状态修改", notes = "传入主订单id,明细ids")
+	@RepeatSubmit
 	public R documentaryStatusUpdate(@Valid @RequestBody Delivery delivery) {
 		if (delivery.getId() == null) {
 			return R.fail(500, "参数缺失");

+ 2 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -1115,6 +1115,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			detail.setDocumentaryDate(delivery.getDocumentaryDate());
 			detail.setShippingDate(null);
 			detail.setCustomsDate(null);
+			detail.setDeliveryStatus("订单完成");
 		}
 		Order selectOrder = orderDescClient.getById(detail.getSrcId());
 		if (ObjectUtils.isNotNull(selectOrder)) {
@@ -1150,6 +1151,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "已完成,请查看");
 				selectOrder.setDocumentaryStatus("已完成");
 				selectOrder.setDocumentaryDate(delivery.getDocumentaryDate());
+				selectOrder.setBillLadingNo(detail.getBillLadingNo());
 				orderDescClient.updateOrder(selectOrder);
 			}
 			R save = messageClient.save(sendMessage);

+ 28 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -15,7 +15,10 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
@@ -67,6 +70,7 @@ public class ExportOrderController extends BladeController {
 	private final IFinanceClient financeClient;
 	private final IDeliveryClient deliveryClient;
 	private final IFinancingClient financingClient;
+	private IGoodsDescClient goodsDescClient;
 
 	/**
 	 * 详情
@@ -1276,6 +1280,7 @@ public class ExportOrderController extends BladeController {
 	@PostMapping("/generatePurchaseNews")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入order")
+	@RepeatSubmit
 	public R generatePurchaseNews(@Valid @RequestBody Order order) {
 		order.setBillType(OrderTypeEnum.SALES.getType());
 		order.setTradeType(OrderTypeEnum.EXPORT.getType());
@@ -1293,19 +1298,35 @@ public class ExportOrderController extends BladeController {
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
 		lambdaQueryWrapper.eq(OrderItems::getBillType, OrderTypeEnum.SALES.getType());//订单类型
-		lambdaQueryWrapper.eq(OrderItems::getBillNo, orderItems.getBillNo());//销售单号
-		if (ObjectUtils.isNotNull(orderItems.getBusinesDateList()) && orderItems.getBusinesDateList().size()>0){
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getBillNo()), OrderItems::getBillNo, orderItems.getBillNo());//销售单号
+		if (ObjectUtils.isNotNull(orderItems.getBusinesDateList()) && orderItems.getBusinesDateList().size() > 0) {
 			lambdaQueryWrapper.ge(OrderItems::getBusinesDate, orderItems.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(OrderItems::getBusinesDate, orderItems.getBusinesDateList().get(1));
 		}
-		if (ObjectUtils.isNotNull(orderItems.getPlannedDeliveryDateList()) && orderItems.getPlannedDeliveryDateList().size()>0){
+		if (ObjectUtils.isNotNull(orderItems.getPlannedDeliveryDateList()) && orderItems.getPlannedDeliveryDateList().size() > 0) {
 			lambdaQueryWrapper.eq(OrderItems::getPlannedDeliveryDate, orderItems.getPlannedDeliveryDateList().get(0));//销售单号
 			lambdaQueryWrapper.eq(OrderItems::getPlannedDeliveryDate, orderItems.getPlannedDeliveryDateList().get(1));//销售单号
 		}
-		lambdaQueryWrapper.eq(OrderItems::getCorpId, orderItems.getCorpId());//销售单号
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getCorpId()), OrderItems::getCorpId, orderItems.getCorpId());//销售单号
+		lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");//销售单号
 		lambdaQueryWrapper.apply("order_quantity > purchase_quantity");//销售数量大于采购数量
 		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
 		IPage<OrderItems> pages = orderItemsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		for (OrderItems orderItems_ : pages.getRecords()) {
+			if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
+				CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
+				if (ObjectUtils.isNotNull(corpsDesc)) {
+					orderItems_.setCorpName(corpsDesc.getCname());
+				}
+			}
+			if (ObjectUtils.isNotNull(orderItems_.getItemId())) {
+				GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(orderItems_.getItemId());
+				if (ObjectUtils.isNotNull(goodsDesc)) {
+					orderItems_.setCname(goodsDesc.getCname());
+					orderItems_.setCode(goodsDesc.getCode());
+				}
+			}
+		}
 		return R.data(pages);
 	}
 
@@ -1318,6 +1339,7 @@ public class ExportOrderController extends BladeController {
 	@PostMapping("/generateShipment")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "出口销售单生成发货单", notes = "传入主订单id,明细ids")
+	@RepeatSubmit
 	public R generateShipment(@Valid @RequestBody Order order) {
 		if (order.getId() == null) {
 			return R.fail(500, "参数缺失");
@@ -1333,6 +1355,7 @@ public class ExportOrderController extends BladeController {
 	@GetMapping("/generatePurchaseBill")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入order")
+	@RepeatSubmit
 	public R generatePurchaseBill(@RequestParam(value = "ids") String ids) {
 		return orderService.generatePurchaseBill(ids);
 	}
@@ -1346,6 +1369,7 @@ public class ExportOrderController extends BladeController {
 	@PostMapping("/purchaseStatusUpdate")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "出口销售单生成发货单", notes = "传入主订单id,明细ids")
+	@RepeatSubmit
 	public R purchaseStatusUpdate(@Valid @RequestBody Order order) {
 		if (order.getId() == null) {
 			return R.fail(500, "参数缺失");

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -192,7 +192,7 @@ public class AppPartsController extends BladeController {
 			if ("234557".equals(AuthUtil.getTenantId())){
 				lambdaQueryWrapper.orderByAsc(Order::getStatus);
 			}else{
-				lambdaQueryWrapper.orderByAsc(Order::getId);
+				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			}
 		}
 		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);

+ 81 - 33
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -302,8 +302,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						}
 						order.setFudaPurchaseDate(new Date());
 						order.setFudaPurchaseStatus("采购中");
-						order.setBuyerName(order.get$buyerId());
-						order.setDocumenterName(order.get$documenterId());
 					}
 				} else {
 					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
@@ -343,6 +341,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			if (order.getBusinesDate() == null) {
 				order.setBusinesDate(date);
 			}
+			order.setBuyerName(order.get$buyerId());
+			order.setDocumenterName(order.get$documenterId());
 			baseMapper.insert(order);
 		} else {
 			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -423,8 +423,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					}
 				}
 				item.setBillNo(order.getOrderNo());
+				item.setBillType(order.getBillType());
 				item.setBusinesDate(order.getBusinesDate());
 				item.setPlannedDeliveryDate(order.getPlannedDeliveryDate());
+				item.setCarry(order.getBuyerName());
 				if (item.getId() == null) {
 					item.setTenantId(SecureUtil.getTenantId());
 					item.setCreateUser(SecureUtil.getUserId());
@@ -2709,20 +2711,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R collectPayment(Order order) {
 		if ("线上".equals(order.getOrderSource())) {
-			order.setStatus(2);
 			Order selectOrder = baseMapper.selectById(order.getId());
+			selectOrder.setStatus(2);
 			if (null == selectOrder) {
 				throw new RuntimeException("未找到订单信息,订单已取消");
 			}
-			if (selectOrder.getActualPaymentStatus() > 0) {
+			/*if (selectOrder.getActualPaymentStatus() > 0) {
 				throw new RuntimeException("订单已支付,请不要重复操作");
-			}
+			}*/
 			if (ObjectUtils.isNotNull(selectOrder) && ObjectUtils.isNotNull(selectOrder.getDebitAmount())) {
 				List<Settlement> settlementList = new ArrayList<>();
 				Settlement settlement = new Settlement();
-				if ("XS".equals(order.getBillType())) {
+				if ("XS".equals(selectOrder.getBillType())) {
 					settlement.setDc("d");
 					settlement.setBillType("收费");
 				} else {
@@ -2731,13 +2735,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				settlement.setSettlementDate(new Date());
 				settlement.setAccount("微信支付");
-				settlement.setAmount(order.getDebitAmount());
+				settlement.setAmount(selectOrder.getRmbAmount());
 				settlement.setOverPayment(new BigDecimal("0.00"));
 				settlementList.add(settlement);
-				order.setSettlementList(settlementList);
-				this.paymentApply(order, order.getBillType(), order.getTradeType());
+				selectOrder.setCurrentAmount(selectOrder.getRmbAmount());
+				selectOrder.setSettlementList(settlementList);
+				this.paymentApply(selectOrder, selectOrder.getBillType(), selectOrder.getTradeType());
 			}
-			baseMapper.updateById(order);
+			baseMapper.updateById(selectOrder);
 		} else {
 			if (ObjectUtils.isNotNull(order.getCurrentAmount()) && !order.getCurrentAmount().equals(new BigDecimal(0))) {
 
@@ -4214,11 +4219,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					if (ObjectUtils.isNull(corpsDesc)) {
 						throw new RuntimeException("未找到客户信息");
 					}
-					//通联支付下单处理
-					R r = this.payPrepay(order.getId());
-					if (!r.isSuccess() || r.getCode() != 200) {
-						throw new RuntimeException("支付失败!原因:" + r.getData());
-					}
 					if (ObjectUtils.isNotNull(corpsDesc.getAdminProfiles())) {
 						String[] arrs = corpsDesc.getAdminProfiles().split(",");
 						for (String arr : arrs) {
@@ -4242,6 +4242,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							}
 						}
 					}
+					//通联支付下单处理
+					R r = this.payPrepay(order.getId());
+					if (!r.isSuccess() || r.getCode() != 200) {
+						throw new RuntimeException("支付失败!原因:" + r.getData());
+					} else {
+						return r;
+					}
 				}
 			}
 		}
@@ -4965,13 +4972,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			R<Map<Object, Object>> res = paymentClient.payPrepay(paymentDTO);
 
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				String prepay_id = res.getData().get("prepay_id").toString();
-				// 业务处理
-				orderInfo.setPrepayId(prepay_id);
-				// 付款中
+				// 付款
 				orderInfo.setActualPaymentStatus(1);
+				orderInfo.setRmbAmount(orderInfo.getDebitAmount().multiply(new BigDecimal(100)));
 				//更新订单表
 				baseMapper.updateById(orderInfo);
+				res.getData().put("id", orderInfo.getId());
 				return R.data(res.getData());
 			} else {
 				throw new RuntimeException("下单失败");
@@ -4991,7 +4997,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		Order selectOrder = baseMapper.selectById(order.getId());
 		if (ObjectUtils.isNotNull(selectOrder)) {
-
+			LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(OrderItems::getPid, selectOrder.getId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+			// 获取销售单明细数据
+			List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
+			for (OrderItems orderItems : orderItemsList) {
+				orderItems.setFudaPurchaseStatus("待采购");
+				orderItemsMapper.updateById(orderItems);
+			}
 			selectOrder.setFudaPurchaseStatus("待采购");
 			selectOrder.setFudaPurchaseDate(order.getFudaPurchaseDate());
 			baseMapper.updateById(selectOrder);
@@ -5038,8 +5051,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<OrderItems> orderItemsList = orderItemsService.list(lambdaQueryWrapper);
 		orderMessage.setOrderItemsList(orderItemsList);
 		orderMessage.setDeliverQuantity(orderItemsList.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
-		orderMessage.setDocumentaryStatus("" +
-			"");
+		orderMessage.setDocumentaryStatus("跟单中");
 		orderMessage.setDocumentaryDate(order.getDocumentaryDate());
 		baseMapper.updateById(orderMessage);
 
@@ -5077,8 +5089,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<OrderItems> orderItemsListAll = new ArrayList<>();
 		List<Order> orderListAll = new ArrayList<>();
 		String[] arrs = ids.split(",");
-		StringBuilder srcIds = new StringBuilder();
-		StringBuilder srcOrderNos = new StringBuilder();
 		for (String arr : arrs) {
 			OrderItems orderItems = orderItemsMapper.selectById(Long.parseLong(arr));
 			if (ObjectUtils.isNotNull(orderItems)) {
@@ -5092,6 +5102,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderItems_.setSrcItemId(orderItems_.getId());
 					orderItems_.setPid(null);
 					orderItems_.setId(null);
+					orderItems_.setBillType("CG");
+
+					if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
+						CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
+						if (ObjectUtils.isNotNull(corpsDesc)) {
+							orderItems_.setCorpName(corpsDesc.getCname());
+						}
+					}
+					if (ObjectUtils.isNotNull(orderItems_.getItemId())) {
+						GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(orderItems_.getItemId());
+						if (ObjectUtils.isNotNull(goodsDesc)) {
+							orderItems_.setCname(goodsDesc.getCname());
+							orderItems_.setCode(goodsDesc.getCode());
+						}
+					}
+
 					orderItemsListAll.add(orderItems_);
 					orderListAll.add(order);
 				}
@@ -5117,12 +5143,20 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 			}*/
 		}
-		if (ObjectUtils.isNotNull(srcIds) && ObjectUtils.isNotNull(srcOrderNos)) {
-			order_.setSrcIds(orderListAll.stream().map(Order::getSysNo).distinct().collect(Collectors.joining(",")));
+
+		if (ObjectUtils.isNotNull(orderListAll) && orderListAll.size() > 0) {
+			StringBuilder srcIds = new StringBuilder();
+			for (Long e : orderListAll.stream().map(Order::getId).distinct().collect(Collectors.toList())) {
+				srcIds.append(e).append(",");
+			}
+			if (ObjectUtils.isNotNull(srcIds)) {
+				order_.setSrcIds(srcIds.substring(0, srcIds.length() - 1));
+			}
 			order_.setSrcOrderNo(orderListAll.stream().map(Order::getSysNo).distinct().collect(Collectors.joining(",")));
 		} else {
 			throw new RuntimeException("生成失败,未查到单据信息");
 		}
+		order_.setBillType("CG");
 		order_.setOrderItemsList(orderItemsListAll);
 		return R.data(order_);
 	}
@@ -5152,7 +5186,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getPid, detail.getId());
 		List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
 		if (ObjectUtils.isNotNull(orderItemsList) && orderItemsList.size() > 0) {
-			List<Long> pids = orderItemsList.stream().map(OrderItems::getSrcId).distinct().collect(Collectors.toList());
+			List<Long> pidList = new ArrayList<>();
+			for (OrderItems orderItems : orderItemsList) {
+				if (orderItems.getOrderQuantity().equals(orderItems.getPurchaseQuantity())) {
+					orderItems.setFudaPurchaseStatus("采购完成");
+				}
+				orderItemsMapper.updateById(orderItems);
+				pidList.add(orderItems.getSrcId());
+			}
+			List<Long> pids = pidList.stream().distinct().collect(Collectors.toList());
 			for (Long pid : pids) {
 				Order order1 = baseMapper.selectById(pid);
 				BigDecimal purchaseQuantity = orderItemsList.stream().filter(e -> e.getSrcId().equals(pid)).map(OrderItems::getPurchaseQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -5250,15 +5292,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (ObjectUtils.isNotNull(orderList) && orderList.size() > 0) {
 			List<Long> userIdList = orderList.stream().map(Order::getCreateUser).distinct().collect(Collectors.toList());
 			for (Long userId : userIdList) {
-				Map<String, Object> map = new HashMap<>();
 				R<User> res = userClient.userInfoById(userId);
 				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-					map.put("name", res.getData().getRealName());
 					int cg = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
 						.eq(Order::getTenantId, AuthUtil.getTenantId())
 						.eq(Order::getCreateUser, userId)
 						.eq(Order::getBillType, "CG"));
-					if (cg != 0){
+					if (cg != 0) {
+						Map<String, Object> map = new HashMap<>();
+						map.put("name", res.getData().getRealName());
 						map.put("number", cg);
 						map.put("billType", "采购单");
 						mapList.add(map);
@@ -5267,7 +5309,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						.eq(Order::getTenantId, AuthUtil.getTenantId())
 						.eq(Order::getCreateUser, userId)
 						.eq(Order::getBillType, "XS"));
-					if (xs != 0){
+					if (xs != 0) {
+						Map<String, Object> map = new HashMap<>();
+						map.put("name", res.getData().getRealName());
 						map.put("number", xs);
 						map.put("billType", "销售单");
 						mapList.add(map);
@@ -5276,13 +5320,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						.eq(Order::getTenantId, AuthUtil.getTenantId())
 						.eq(Order::getCreateUser, userId)
 						.eq(Order::getBillType, "CGXJ"));
-					if (cgxj != 0){
+					if (cgxj != 0) {
+						Map<String, Object> map = new HashMap<>();
+						map.put("name", res.getData().getRealName());
 						map.put("number", cgxj);
 						map.put("billType", "报价单");
 						mapList.add(map);
 					}
 					int gd = deliveryClient.selectCount(userId);
-					if (gd != 0){
+					if (gd != 0) {
+						Map<String, Object> map = new HashMap<>();
+						map.put("name", res.getData().getRealName());
 						map.put("number", gd);
 						map.put("billType", "跟单");
 						mapList.add(map);

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -39,7 +39,7 @@
             and account like concat('%', #{user.account}, '%')
         </if>
         <if test="user.realName!=null and user.realName != ''">
-            and real_name = #{user.realName}
+            and real_name like concat('%', #{user.realName}, '%')
         </if>
         <if test="user.userType!=null and user.userType != ''">
             and user_type = #{user.userType}

+ 217 - 30
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

@@ -1,6 +1,7 @@
 package com.trade.purchase.order.component.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -11,6 +12,8 @@ import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.entity.OrderFees;
 import com.trade.purchase.order.entity.OrderFiles;
+import com.trade.purchase.order.entity.OrderItems;
+import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.mapper.OrderFeesMapper;
 import com.trade.purchase.order.mapper.OrderFilesMapper;
 import com.trade.purchase.order.mapper.OrderItemsMapper;
@@ -18,15 +21,20 @@ import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.vo.OrderItemsVO;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.Message;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 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.Func;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -55,6 +63,8 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 
 	private ICorpsDescClient corpsDescClient;//获取客户信息
 
+	private final IMessageClient messageClient;//消息
+
 	/**
 	 * 订单暂存
 	 *
@@ -64,6 +74,38 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 	public void save(OrderSubmitDto orderSubmitDto) {
 		// 保存订单
 		Order order = saveOrder(orderSubmitDto);
+		// 保存订单明细
+		if (CollectionUtils.isNotEmpty(orderSubmitDto.getItemsVOList())) {
+			orderSubmitDto.getItemsVOList().forEach(item -> {
+				if (ObjectUtils.isNotNull(item.getCorpId())) {
+					CorpsDesc corpsDesc = corpsDescClient.getCorpId(item.getCorpId());
+					if (ObjectUtils.isNotNull(corpsDesc)) {
+						item.setCorpAddress(corpsDesc.getBelongtoarea());
+					}
+				}
+				item.setBillNo(order.getOrderNo());
+				item.setBillType(order.getBillType());
+				item.setBusinesDate(order.getBusinesDate());
+				item.setPlannedDeliveryDate(order.getPlannedDeliveryDate());
+				item.setCarry(order.getBuyerName());
+				if (item.getId() == null) {
+					item.setTenantId(SecureUtil.getTenantId());
+					item.setCreateUser(SecureUtil.getUserId());
+					item.setCreateTime(new Date());
+					item.setPid(order.getId());
+					item.setBillType(order.getBillType());
+					orderItemsMapper.insert(item);
+				} else {
+					item.setTenantId(SecureUtil.getTenantId());
+					item.setUpdateUser(SecureUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setPid(order.getId());
+					item.setBillType(order.getBillType());
+					orderItemsMapper.updateById(item);
+				}
+			});
+		}
+
 		// 保存子订单
 		saveItem(orderSubmitDto.getItemsVOList(), orderSubmitDto.getDelItemIds(), order.getId());
 		// 保存费用信息
@@ -130,41 +172,186 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 			}
 			order.setSysNo((String) billNo.getData());
 			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
-			if (StringUtils.isBlank(order.getOrderNo())) {
-				//生成订单号
-				R clientBillNo = serialClient.getBillNo(corpMessage.getData().getCode(), order.getTradeType(), order.getTradeType());
-				if (!clientBillNo.isSuccess()) {
-					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-					throw new SecurityException("生成订单号失败");
+			if ("577435".equals(AuthUtil.getTenantId())) {
+				if (corpMessage.isSuccess() && StringUtils.isNotBlank(corpMessage.getData().getCode())) {
+					String substring = "";
+					if (order.getBillType().equals(OrderTypeEnum.ENQUIRY.getType())) {
+						substring = substring + "Q";
+					}
+					if (corpMessage.getData().getCode().length() > 10) {
+						substring = substring + corpMessage.getData().getCode().substring(corpMessage.getData().getCode().length() - 3, corpMessage.getData().getCode().length());
+					} else {
+						substring = substring + corpMessage.getData().getCode();
+					}
+					R clientBillNo = serialClient.getBillNo(substring, order.getTradeType(), order.getBillType());
+					if (!clientBillNo.isSuccess()) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						throw new RuntimeException("生成订单编号失败");
+					}
+					order.setOrderNo((String) clientBillNo.getData());
+					// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+					if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+						order.setOrgOrderNo((String) clientBillNo.getData());
+					}
 				}
-				order.setOrderNo((String) clientBillNo.getData());
-			}
-			//判断贸易类型
-			if (order.getTradeType().equals("JK")) {
-				order.setOrgOrderNo(order.getOrderNo());
-			}
-			if ("橡胶".equals(order.getOrderType())) {
-				order.setOrderAmount(order.getSalesPrice().multiply(order.getContractWeight()));
+				if ("CG".equals(order.getBillType()) && ObjectUtils.isNotNull(order.getSrcIds())) {
+					String[] arrs = order.getSrcIds().split(",");
+					for (String arr : arrs) {
+						Order selectOrder = orderService.selectById(Long.parseLong(arr));
+						if (ObjectUtils.isNotNull(selectOrder)) {
+							selectOrder.setFudaPurchaseDate(new Date());
+							selectOrder.setFudaPurchaseStatus("采购中");
+							selectOrder.setUpdateTime(new Date());
+							selectOrder.setUpdateUser(AuthUtil.getUserId());
+							selectOrder.setUpdateUserName(AuthUtil.getUserName());
+							orderService.updateById(selectOrder);
+
+							//循环发送消息
+							Message sendMessage = new Message();
+							sendMessage.setParameter(String.valueOf(selectOrder.getId()));
+							sendMessage.setUserName(AuthUtil.getUserName());
+							sendMessage.setUserId(AuthUtil.getUserId());
+							sendMessage.setMessageType(1);
+							sendMessage.setTenantId(AuthUtil.getTenantId());
+							sendMessage.setCreateUser(AuthUtil.getUserId());
+							sendMessage.setCreateTime(new Date());
+							sendMessage.setUrl(selectOrder.getUrl());
+							sendMessage.setPageLabel(selectOrder.getPageLabel());
+							sendMessage.setPageStatus(selectOrder.getPageStatus());
+							if (true) {
+								sendMessage.setToUserId(selectOrder.getCreateUser());
+								sendMessage.setToUserName(selectOrder.getCreateUserName());
+								sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "正在采购中,请查看");
+								R save = messageClient.save(sendMessage);
+								if (!save.isSuccess()) {
+									throw new SecurityException("发送消息失败");
+								}
+							}
+							if (true) {
+								sendMessage.setToUserId(selectOrder.getDocumenterId());
+								sendMessage.setToUserName(selectOrder.getDocumenterName());
+								sendMessage.setMessageBody("销售订单" + selectOrder.getSysNo() + "正在采购中,请查看");
+								R save = messageClient.save(sendMessage);
+								if (!save.isSuccess()) {
+									throw new SecurityException("发送消息失败");
+								}
+							}
+						}
+					}
+					order.setFudaPurchaseDate(new Date());
+					order.setFudaPurchaseStatus("采购中");
+				}
+			} else {
+				if (StringUtils.isBlank(order.getOrderNo())) {
+					//生成订单号
+					R clientBillNo = serialClient.getBillNo(corpMessage.getData().getCode(), order.getTradeType(), order.getTradeType());
+					if (!clientBillNo.isSuccess()) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						throw new SecurityException("生成订单号失败");
+					}
+					order.setOrderNo((String) clientBillNo.getData());
+				}
+				//判断贸易类型
+				if (order.getTradeType().equals("JK")) {
+					order.setOrgOrderNo(order.getOrderNo());
+				}
+				if ("橡胶".equals(order.getOrderType())) {
+					order.setOrderAmount(order.getSalesPrice().multiply(order.getContractWeight()));
+				}
+				//订单编号转大写
+				//order.setOrderNo(order.getOrderNo().toUpperCase());
+				//order.setSysNo(order.getSysNo().toUpperCase());
+				//order.setBillNo(order.getBillNo().toUpperCase());
+				order.setCreateTime(new Date());
+				order.setCreateUser(AuthUtil.getUserId());
+				order.setBuyerName(order.get$buyerId());
+				order.setDocumenterName(order.get$documenterId());
+				orderService.insert(order);
 			}
-			//订单编号转大写
-			//order.setOrderNo(order.getOrderNo().toUpperCase());
-			//order.setSysNo(order.getSysNo().toUpperCase());
-			//order.setBillNo(order.getBillNo().toUpperCase());
-			order.setCreateTime(new Date());
-			order.setCreateUser(AuthUtil.getUserId());
-			orderService.insert(order);
 		} else {
-			if ("橡胶".equals(order.getOrderType())) {
-				order.setOrderAmount(order.getSalesPrice().multiply(order.getContractWeight()));
+			if ("577435".equals(AuthUtil.getTenantId())) {
+				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 = orderService.selectCount(orderLambdaQueryWrapper);
+				if (count <= 0) {
+					// 出口贸易的报价单号和销售单号的生成规则是 Q + 客户编码后三位
+					if (order.getTradeType().equals(OrderTypeEnum.EXPORT.getType())) {
+						R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
+						if (corpMessage.isSuccess() && StringUtils.isNotBlank(corpMessage.getData().getCode())) {
+							String substring = "";
+							if (order.getBillType().equals(OrderTypeEnum.ENQUIRY.getType())) {
+								substring = substring + "Q";
+							}
+							if (corpMessage.getData().getCode().length() > 10) {
+								substring = substring + corpMessage.getData().getCode().substring(corpMessage.getData().getCode().length() - 3, corpMessage.getData().getCode().length());
+							} else {
+								substring = substring + corpMessage.getData().getCode();
+							}
+							R clientBillNo = serialClient.getBillNo(substring, order.getTradeType(), order.getBillType());
+							if (!clientBillNo.isSuccess()) {
+								TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+								throw new RuntimeException("生成订单编号失败");
+							}
+							order.setOrderNo((String) clientBillNo.getData());
+							// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+							if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+								order.setOrgOrderNo((String) clientBillNo.getData());
+							}
+						}
+					}
+					// 主订单号为空已订单号一致国内贸易
+					if (order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
+						order.setMorderNo(order.getOrderNo());
+					}
+				}
+			} else {
+				if ("橡胶".equals(order.getOrderType())) {
+					order.setOrderAmount(order.getSalesPrice().multiply(order.getContractWeight()));
+				}
+				//防止有人改成小写的字母
+				//order.setOrderNo(order.getOrderNo().toUpperCase());
+				//order.setSysNo(order.getSysNo().toUpperCase());
+				//order.setBillNo(order.getBillNo().toUpperCase());
+			}
+			if ("577435".equals(AuthUtil.getTenantId())) {
+				// 生成毛利润 毛利额
+				List<OrderItems> list = orderItemsMapper.selectList(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type", 0).eq("is_deleted", 0));
+				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)
+				// 金额求和
+//				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				BigDecimal amount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getOutFactoryPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				// 采购金额求和
+				BigDecimal purchaseAmount = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPurchaseAmount().multiply(y.getOrderQuantity())), BigDecimal::add);
+				// 配件金额求和
+				BigDecimal partsPrice = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getPartsPrice().multiply(y.getOrderQuantity())), BigDecimal::add);
+				// 毛利额
+				order.setGrossProfit(amount.multiply(order.getExchangeRate()).subtract((purchaseAmount.add(partsPrice))).setScale(2, RoundingMode.HALF_UP));
+				BigDecimal grossProfitRate = new BigDecimal(BigInteger.ZERO);
+				if ((amount.compareTo(BigDecimal.ZERO)) > 0) {
+					BigDecimal multiply = amount.multiply(order.getExchangeRate());
+					grossProfitRate = order.getGrossProfit().divide(multiply, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
+				}
+				// 毛利率
+				order.setGrossProfitRate(grossProfitRate);
+			} else {
+				// 毛利额
+				order.setGrossProfit(new BigDecimal(BigInteger.ZERO));
+				// 毛利率
+				order.setGrossProfitRate(new BigDecimal(BigInteger.ZERO));
 			}
-			//防止有人改成小写的字母
-			//order.setOrderNo(order.getOrderNo().toUpperCase());
-			//order.setSysNo(order.getSysNo().toUpperCase());
-			//order.setBillNo(order.getBillNo().toUpperCase());
-			order.setUpdateTime(new Date());
-			order.setUpdateUser(AuthUtil.getUserId());
-			orderService.updateById(order);
+			order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
+		order.setUpdateTime(new Date());
+		order.setUpdateUser(AuthUtil.getUserId());
+		order.setBuyerName(order.get$buyerId());
+		order.setDocumenterName(order.get$documenterId());
+		orderService.updateById(order);
 		return order;
 	}