Browse Source

商城相关功能 和 贸易修改

1021934019@qq.com 4 years ago
parent
commit
9f8e637837
24 changed files with 697 additions and 37 deletions
  1. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  2. 34 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/dto/OrderItemsDTO.java
  3. 6 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsDesc.java
  4. 6 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsItems.java
  5. 6 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsType.java
  6. 28 3
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/Order.java
  7. 15 2
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderAddress.java
  8. 130 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderItems.java
  9. 11 1
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderStatusChange.java
  10. 11 1
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderStockChange.java
  11. 36 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/vo/OrderItemsVO.java
  12. 5 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  13. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/goods/mapper/GoodsDescMapper.xml
  14. 1 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java
  15. 7 8
      blade-service/store-goods/src/main/java/com/store/goods/controller/OrderAddressController.java
  16. 72 16
      blade-service/store-goods/src/main/java/com/store/goods/controller/OrderController.java
  17. 42 0
      blade-service/store-goods/src/main/java/com/store/goods/mapper/OrderItemsMapper.java
  18. 27 0
      blade-service/store-goods/src/main/java/com/store/goods/mapper/OrderItemsMapper.xml
  19. 41 0
      blade-service/store-goods/src/main/java/com/store/goods/service/IOrderItemsService.java
  20. 12 0
      blade-service/store-goods/src/main/java/com/store/goods/service/IOrderService.java
  21. 41 0
      blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderItemsServiceImpl.java
  22. 127 3
      blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderServiceImpl.java
  23. 31 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java
  24. 2 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

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

@@ -616,5 +616,10 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "船务备注")
 	private String shippingRemark;
 
+	/**
+	 * 提单号
+	 */
+	@ApiModelProperty(value = "提单号")
+	private String billNo;
 
 }

+ 34 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/dto/OrderItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.dto;
+
+import com.store.goods.entity.OrderItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 订单商品表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderItemsDTO extends OrderItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 6 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsDesc.java

@@ -107,5 +107,11 @@ public class GoodsDesc implements Serializable {
 		@TableLogic
 		private Integer isDeleted;
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 
 }

+ 6 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsItems.java

@@ -174,5 +174,11 @@ public class GoodsItems implements Serializable {
 		@TableLogic
 		private Integer isDeleted;
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 
 }

+ 6 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/GoodsType.java

@@ -117,5 +117,11 @@ public class GoodsType implements Serializable {
 		@TableLogic
 		private Integer isDeleted;
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 
 }

+ 28 - 3
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/Order.java

@@ -17,9 +17,17 @@
 package com.store.goods.entity;
 
 import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
@@ -42,6 +50,7 @@ public class Order implements Serializable {
 	* 订单表
 	*/
 		@ApiModelProperty(value = "订单表")
+		@TableId
 		private Long id;
 	/**
 	* 订单号,唯一性
@@ -87,7 +96,7 @@ public class Order implements Serializable {
 	* 订单状态: 0.代付款 1.代发货 2.待收货 3.待评价 	4.已完成 5.已取消 6.售后中 7.售后结束
 	*/
 		@ApiModelProperty(value = "订单状态: 0.代付款 1.代发货 2.待收货 3.待评价 	4.已完成 5.已取消 6.售后中 7.售后结束")
-		private Integer orderStatus;
+		private Integer orderStatus=0;
 	/**
 	* 版本
 	*/
@@ -107,7 +116,7 @@ public class Order implements Serializable {
 	* 创建时间
 	*/
 		@ApiModelProperty(value = "创建时间")
-		private LocalDateTime createTime;
+		private Date createTime;
 	/**
 	* 修改人
 	*/
@@ -117,12 +126,28 @@ public class Order implements Serializable {
 	* 修改时间
 	*/
 		@ApiModelProperty(value = "修改时间")
-		private LocalDateTime updateTime;
+		private Date updateTime;
 	/**
 	* 是否已删除(0 否 1是)
 	*/
 		@ApiModelProperty(value = "是否已删除(0 否 1是)")
+		@TableLogic
 		private Integer isDeleted;
 
+	    @ApiModelProperty(value = "订单中商品信息")
+		@TableField(exist = false)
+		private List<OrderItems> itemList;
+
+		@ApiModelProperty(value = "订单中地址信息")
+		@TableField(exist = false)
+		private OrderAddress orderAddress;
+
+
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 
 }

+ 15 - 2
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderAddress.java

@@ -16,9 +16,14 @@
  */
 package com.store.goods.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
@@ -41,6 +46,7 @@ public class OrderAddress implements Serializable {
 	* 订单收货地址表id
 	*/
 		@ApiModelProperty(value = "订单收货地址表id")
+		@TableId
 		private Long id;
 	/**
 	* 收货人id
@@ -81,7 +87,7 @@ public class OrderAddress implements Serializable {
 	* 创建时间
 	*/
 		@ApiModelProperty(value = "创建时间")
-		private LocalDateTime createTime;
+		private Date createTime;
 	/**
 	* 修改人
 	*/
@@ -91,7 +97,7 @@ public class OrderAddress implements Serializable {
 	* 修改时间
 	*/
 		@ApiModelProperty(value = "修改时间")
-		private LocalDateTime updateTime;
+		private Date updateTime;
 	/**
 	* 状态(0 正常 1停用)
 	*/
@@ -101,7 +107,14 @@ public class OrderAddress implements Serializable {
 	* 是否已删除(0 否 1是)
 	*/
 		@ApiModelProperty(value = "是否已删除(0 否 1是)")
+		@TableLogic
 		private Integer isDeleted;
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 
 }

+ 130 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderItems.java

@@ -0,0 +1,130 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.entity;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 订单商品表实体类
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+@Data
+@TableName("store_order_items")
+@ApiModel(value = "OrderItems对象", description = "订单商品表")
+public class OrderItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	* 订单商品表id
+	*/
+		@ApiModelProperty(value = "订单商品表id")
+		@TableId
+		private Long id;
+	/**
+	* 订单表id
+	*/
+		@ApiModelProperty(value = "订单表id")
+		private Long orderId;
+	/**
+	* 商品id
+	*/
+		@ApiModelProperty(value = "商品id")
+		private Long itemsId;
+	/**
+	* 购买数量
+	*/
+		@ApiModelProperty(value = "购买数量")
+		private BigDecimal number;
+	/**
+	* 单价
+	*/
+		@ApiModelProperty(value = "单价")
+		private BigDecimal price;
+	/**
+	* 总价
+	*/
+		@ApiModelProperty(value = "总价")
+		private BigDecimal totalPrice;
+	/**
+	* 乐观锁
+	*/
+		@ApiModelProperty(value = "乐观锁")
+		private String version;
+	/**
+	* 创建人
+	*/
+		@ApiModelProperty(value = "创建人")
+		private Long createUser;
+	/**
+	* 创建部门
+	*/
+		@ApiModelProperty(value = "创建部门")
+		private Long createDept;
+	/**
+	* 创建时间
+	*/
+		@ApiModelProperty(value = "创建时间")
+		private Date createTime;
+	/**
+	* 修改人
+	*/
+		@ApiModelProperty(value = "修改人")
+		private Long updateUser;
+	/**
+	* 修改时间
+	*/
+		@ApiModelProperty(value = "修改时间")
+		private Date updateTime;
+	/**
+	* 是否已删除(0 否 1是)
+	*/
+		@ApiModelProperty(value = "是否已删除(0 否 1是)")
+		@TableLogic
+		private Integer isDeleted;
+
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
+	@ApiModelProperty(value = "商品图片(回显专用)")
+	@TableField(exist = false)
+	private String picture;
+
+	@ApiModelProperty(value = "商品名称(回显专用)")
+	@TableField(exist = false)
+	private String cName;
+
+
+}

+ 11 - 1
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderStatusChange.java

@@ -16,9 +16,13 @@
  */
 package com.store.goods.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
@@ -41,6 +45,7 @@ public class OrderStatusChange implements Serializable {
 	* 订单状态变动表id
 	*/
 		@ApiModelProperty(value = "订单状态变动表id")
+		@TableId
 		private Long id;
 	/**
 	* 订单号
@@ -91,7 +96,12 @@ public class OrderStatusChange implements Serializable {
 	* 创建时间
 	*/
 		@ApiModelProperty(value = "创建时间")
-		private LocalDateTime createTime;
+		private Date createTime;
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
 
 }

+ 11 - 1
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/OrderStockChange.java

@@ -17,9 +17,13 @@
 package com.store.goods.entity;
 
 import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
@@ -42,6 +46,7 @@ public class OrderStockChange implements Serializable {
 	* 库存变动表id
 	*/
 		@ApiModelProperty(value = "库存变动表id")
+		@TableId
 		private Long id;
 	/**
 	* 订单号
@@ -97,7 +102,12 @@ public class OrderStockChange implements Serializable {
 	* 创建时间
 	*/
 		@ApiModelProperty(value = "创建时间")
-		private LocalDateTime createTime;
+		private Date createTime;
 
 
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
 }

+ 36 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/vo/OrderItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.vo;
+
+import com.store.goods.entity.OrderItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 订单商品表视图实体类
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "OrderItemsVO对象", description = "订单商品表")
+public class OrderItemsVO extends OrderItems {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -547,5 +547,10 @@ public class Order extends OrderBase {
 	@ApiModelProperty(value = "船务备注")
 	private String shippingRemark;
 
+	/**
+	 * 提单号
+	 */
+	@ApiModelProperty(value = "提单号")
+	private String billNo;
 
 }

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/mapper/GoodsDescMapper.xml

@@ -139,7 +139,7 @@
     </select>
     <select id="selectGoods" resultType="org.springblade.client.vo.GoodsDescVO">
         select
-        bg.*
+        bg.*,
         ba.cname AS goodsTypeName
         from basic_goods_desc bg
         LEFT JOIN basic_goods_type ba ON ba.id = bg.goods_type_id AND ba.status = 0 AND ba.is_deleted = 0

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java

@@ -37,7 +37,7 @@ public class OrderItemsClient implements IOrderItemsClient{
 		items.setId(orderItemsId);
 		if (deliveryType == DeliveryEnum.DELIVER.getType()){ //发货
 			//判断 已发货数量 或者 已收货数量 ,不能大于(订货数量-已收数量)
-			if(actualQuantity.compareTo(orderItems.getPurchaseQuantity().subtract(orderItems.getActualQuantity()))==1)
+			if(actualQuantity.compareTo(orderItems.getOrderQuantity().subtract(orderItems.getActualQuantity()))==1)
 			{
 				throw  new RuntimeException("操作数量禁止大于订货数量");
 			}

+ 7 - 8
blade-service/store-goods/src/main/java/com/store/goods/controller/OrderAddressController.java

@@ -73,20 +73,20 @@ public class OrderAddressController extends BladeController {
 	/**
 	 * 自定义分页 订单收货地址表
 	 */
-	@GetMapping("/page")
+	/*@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入orderAddress")
 	public R<IPage<OrderAddressVO>> page(OrderAddressVO orderAddress, Query query) {
 		IPage<OrderAddressVO> pages = orderAddressService.selectOrderAddressPage(Condition.getPage(query), orderAddress);
 		return R.data(pages);
 	}
-
+*/
 	/**
 	 * 新增 订单收货地址表
 	 */
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入orderAddress")
+	@ApiOperation(value = "新增收货单地址", notes = "传入orderAddress")
 	public R save(@Valid @RequestBody OrderAddress orderAddress) {
 		return R.status(orderAddressService.save(orderAddress));
 	}
@@ -96,22 +96,21 @@ public class OrderAddressController extends BladeController {
 	 */
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入orderAddress")
+	@ApiOperation(value = "修改收货单地址", notes = "传入orderAddress")
 	public R update(@Valid @RequestBody OrderAddress orderAddress) {
 		return R.status(orderAddressService.updateById(orderAddress));
 	}
 
 	/**
 	 * 新增或修改 订单收货地址表
-	 */
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入orderAddress")
 	public R submit(@Valid @RequestBody OrderAddress orderAddress) {
 		return R.status(orderAddressService.saveOrUpdate(orderAddress));
-	}
+	}*/
+
 
-	
 	/**
 	 * 删除 订单收货地址表
 	 */
@@ -122,5 +121,5 @@ public class OrderAddressController extends BladeController {
 		return R.status(orderAddressService.removeByIds(Func.toLongList(ids)));
 	}
 
-	
+
 }

+ 72 - 16
blade-service/store-goods/src/main/java/com/store/goods/controller/OrderController.java

@@ -16,6 +16,13 @@
  */
 package com.store.goods.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.store.goods.entity.GoodsItems;
+import com.store.goods.entity.OrderItems;
+import com.store.goods.service.IGoodsItemsService;
+import com.store.goods.service.IOrderAddressService;
+import com.store.goods.service.IOrderItemsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -34,6 +41,8 @@ import com.store.goods.vo.OrderVO;
 import com.store.goods.service.IOrderService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 订单表 控制器
  *
@@ -48,14 +57,34 @@ public class OrderController extends BladeController {
 
 	private final IOrderService orderService;
 
+	private final IOrderAddressService addressService;
+
+	private final IOrderItemsService orderItemsService;
+
+	private final IGoodsItemsService goodsItemsService;
+
 	/**
-	 * 详情
+	 * 查看订单详情
 	 */
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入order")
+	@ApiOperation(value = "查看订单详情", notes = "传入order")
 	public R<Order> detail(Order order) {
 		Order detail = orderService.getOne(Condition.getQueryWrapper(order));
+		detail.setOrderAddress(addressService.getById(detail.getAddressId()));
+		LambdaQueryWrapper<OrderItems> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(OrderItems::getOrderId,detail.getId());
+		itemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
+		List<OrderItems> list = orderItemsService.list(itemsLambdaQueryWrapper);
+		if(CollectionUtils.isNotEmpty(list))
+		{
+			list.forEach(e->{
+				GoodsItems goodsItems = goodsItemsService.getById(e.getItemsId());
+				e.setPicture(goodsItems.getPriture());
+                e.setCName(goodsItems.getCName());
+			});
+		}
+		detail.setItemList(list);
 		return R.data(detail);
 	}
 
@@ -64,54 +93,81 @@ public class OrderController extends BladeController {
 	 */
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入order")
+	@ApiOperation(value = "平台/收货人-查看订单列表", notes = "传入order")
 	public R<IPage<Order>> list(Order order, Query query) {
 		IPage<Order> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
 		return R.data(pages);
 	}
 
+
+	/**
+	 *  下单
+	 *
+	 * */
+	@PostMapping("/createOrder")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "创建订单", notes = "传入order")
+	public R createOrder(@Valid @RequestBody Order order)
+	{
+		orderService.createOrder(order);
+		return R.success("操作成功");
+	}
+
+
+	/**
+	 *  修改订单状态
+	 *
+	 * */
+	@PostMapping("/updateOrderStatus")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改订单状态(已收货/发货/退款等)", notes = "传入order")
+	public R updateOrderStatus(@Valid @RequestBody Order order)
+	{
+		orderService.updateOrderStatus(order);
+		return R.success("操作成功");
+	}
+
 	/**
 	 * 自定义分页 订单表
-	 */
+	 *//*
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入order")
 	public R<IPage<OrderVO>> page(OrderVO order, Query query) {
 		IPage<OrderVO> pages = orderService.selectOrderPage(Condition.getPage(query), order);
 		return R.data(pages);
-	}
+	}*/
 
 	/**
 	 * 新增 订单表
-	 */
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入order")
 	public R save(@Valid @RequestBody Order order) {
 		return R.status(orderService.save(order));
-	}
-
-	/**
+	}*/
+/*
+	*//**
 	 * 修改 订单表
-	 */
+	 *//*
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入order")
 	public R update(@Valid @RequestBody Order order) {
 		return R.status(orderService.updateById(order));
-	}
+	}*/
 
-	/**
+/*	*//**
 	 * 新增或修改 订单表
-	 */
+	 *//*
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入order")
 	public R submit(@Valid @RequestBody Order order) {
 		return R.status(orderService.saveOrUpdate(order));
-	}
+	}*/
+
 
-	
 	/**
 	 * 删除 订单表
 	 */
@@ -122,5 +178,5 @@ public class OrderController extends BladeController {
 		return R.status(orderService.removeByIds(Func.toLongList(ids)));
 	}
 
-	
+
 }

+ 42 - 0
blade-service/store-goods/src/main/java/com/store/goods/mapper/OrderItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.mapper;
+
+import com.store.goods.entity.OrderItems;
+import com.store.goods.vo.OrderItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 订单商品表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+public interface OrderItemsMapper extends BaseMapper<OrderItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param orderItems
+	 * @return
+	 */
+	List<OrderItemsVO> selectOrderItemsPage(IPage page, OrderItemsVO orderItems);
+
+}

+ 27 - 0
blade-service/store-goods/src/main/java/com/store/goods/mapper/OrderItemsMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.store.goods.mapper.OrderItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="orderItemsResultMap" type="com.store.goods.entity.OrderItems">
+        <id column="id" property="id"/>
+        <result column="order_id" property="orderId"/>
+        <result column="items_id" property="itemsId"/>
+        <result column="number" property="number"/>
+        <result column="price" property="price"/>
+        <result column="total_price" property="totalPrice"/>
+        <result column="version" property="version"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+
+    <select id="selectOrderItemsPage" resultMap="orderItemsResultMap">
+        select * from store_order_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/IOrderItemsService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.service;
+
+import com.store.goods.entity.OrderItems;
+import com.store.goods.vo.OrderItemsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 订单商品表 服务类
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+public interface IOrderItemsService extends IService<OrderItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param orderItems
+	 * @return
+	 */
+	IPage<OrderItemsVO> selectOrderItemsPage(IPage<OrderItemsVO> page, OrderItemsVO orderItems);
+
+}

+ 12 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/IOrderService.java

@@ -38,4 +38,16 @@ public interface IOrderService extends IService<Order> {
 	 */
 	IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order);
 
+	/**
+	 * 创建订单
+	 * */
+     void createOrder(Order order);
+
+
+     /**
+	  * 修改订单状态
+	  * */
+     void updateOrderStatus(Order order);
 }
+
+

+ 41 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderItemsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.store.goods.service.impl;
+
+import com.store.goods.entity.OrderItems;
+import com.store.goods.vo.OrderItemsVO;
+import com.store.goods.mapper.OrderItemsMapper;
+import com.store.goods.service.IOrderItemsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 订单商品表 服务实现类
+ *
+ * @author BladeX
+ * @since 2021-11-24
+ */
+@Service
+public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderItems> implements IOrderItemsService {
+
+	@Override
+	public IPage<OrderItemsVO> selectOrderItemsPage(IPage<OrderItemsVO> page, OrderItemsVO orderItems) {
+		return page.setRecords(baseMapper.selectOrderItemsPage(page, orderItems));
+	}
+
+}

+ 127 - 3
blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderServiceImpl.java

@@ -16,13 +16,24 @@
  */
 package com.store.goods.service.impl;
 
-import com.store.goods.entity.Order;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.store.goods.entity.*;
+import com.store.goods.mapper.*;
 import com.store.goods.vo.OrderVO;
-import com.store.goods.mapper.OrderMapper;
 import com.store.goods.service.IOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
 
 /**
  * 订单表 服务实现类
@@ -31,11 +42,124 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2021-11-24
  */
 @Service
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService
+{
+	@Autowired
+	private OrderAddressMapper addressMapper;
+
+	@Autowired
+	private OrderStatusChangeMapper orderStatusChangeMapper;
+
+	@Autowired
+	private OrderStockChangeMapper orderStockChangeMapper;
+
+	@Autowired
+	private OrderItemsMapper orderItemsMapper;
+
+	@Autowired
+	private GoodsItemsMapper goodsItemsMapper;
 
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		return page.setRecords(baseMapper.selectOrderPage(page, order));
 	}
 
+	@Override
+	@Transactional
+	public void createOrder(Order order)
+	{
+		//获取订单商品信息
+		List<OrderItems> itemList = order.getItemList();
+		if(CollectionUtils.isEmpty(itemList))
+		{
+			throw new SecurityException("订单信息不能为空");
+		}
+		//检查地址是否正确
+		OrderAddress orderAddress = addressMapper.selectById(order.getAddressId());
+		if(orderAddress==null || orderAddress.getUserId()!=order.getUserId())
+		{
+			throw new SecurityException("地址信息不正确");
+		}
+		//新增订单
+		order.setCreateTime(new Date());
+		order.setTenantId(AuthUtil.getTenantId());
+		order.setCreateUser(AuthUtil.getUserId());
+		order.setOrderStatus(order.getOrderStatus());
+		order.setOrderNo(String.valueOf(System.currentTimeMillis()));
+		baseMapper.insert(order);
+		//新增订单下的物品明细
+		itemList.forEach(e->{
+			e.setOrderId(order.getId());
+			e.setItemsId(e.getItemsId());
+			e.setNumber(e.getNumber());
+			e.setPrice(e.getPrice());
+			e.setTotalPrice(e.getTotalPrice());
+			e.setCreateTime(new Date());
+			e.setTenantId(AuthUtil.getTenantId());
+			e.setCreateUser(AuthUtil.getUserId());
+			e.setIsDeleted(0);
+			orderItemsMapper.insert(e);
+
+			//查看库存
+			GoodsItems goodsItems = goodsItemsMapper.selectById(e.getItemsId());
+			if(goodsItems==null || goodsItems.getStock().compareTo(e.getNumber())==-1)
+			{
+                throw new SecurityException("扣除商品库存失败");
+			}
+			//原库存
+			BigDecimal originStock = goodsItems.getStock();
+            //新库存
+			BigDecimal newStock=originStock.subtract(e.getNumber());
+			//增加库存变动记录
+			OrderStockChange stockChange=new OrderStockChange();
+			stockChange.setBeforeStock(originStock);
+			stockChange.setAfterStock(newStock);
+			stockChange.setItemId(e.getItemsId());
+			stockChange.setOrderNo(order.getOrderNo());
+			stockChange.setUserId(AuthUtil.getUserId());
+			stockChange.setOperationType(1);
+			stockChange.setUserRealName(AuthUtil.getUserName());
+			stockChange.setCreateTime(new Date());
+			stockChange.setTenantId(AuthUtil.getTenantId());
+			stockChange.setCreateUser(AuthUtil.getUserId());
+			orderStockChangeMapper.insert(stockChange);
+			//开始扣库存
+			goodsItems.setStock(newStock);
+			goodsItems.setUpdateTime(new Date());
+			goodsItems.setUpdateUser(AuthUtil.getUserId());
+			goodsItemsMapper.updateById(goodsItems);
+
+		});
+
+
+
+
+	}
+
+	@Override
+	@Transactional
+	public void updateOrderStatus(Order order)
+	{
+		Order one = baseMapper.selectById(order.getId());
+		if(!AuthUtil.getTenantId().equals(one.getTenantId()))
+		{
+			throw new SecurityException("非自家租户禁止操作");
+		}
+		//修改订单状态
+		one.setOrderStatus(order.getOrderStatus());
+		baseMapper.updateById(one);
+		//记录变更记录
+		OrderStatusChange orderStatusChange=new OrderStatusChange();
+		orderStatusChange.setBeforeStatus(one.getOrderStatus());
+		orderStatusChange.setAfterStatus(order.getOrderStatus());
+		orderStatusChange.setOrderNo(one.getOrderNo());
+		orderStatusChange.setUserId(AuthUtil.getUserId());
+		orderStatusChange.setUserRealName(AuthUtil.getUserName());
+		orderStatusChange.setCreateTime(new Date());
+		orderStatusChange.setTenantId(AuthUtil.getTenantId());
+		orderStatusChange.setCreateUser(AuthUtil.getUserId());
+		orderStatusChangeMapper.insert(orderStatusChange);
+
+	}
+
 }

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

@@ -15,9 +15,14 @@ import com.trade.purchase.order.mapper.OrderItemsMapper;
 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.feign.ICorpsDescClient;
+import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
+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.util.Date;
 import java.util.List;
@@ -44,6 +49,9 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 
 	private final OrderItemMapstructMapper orderItemMapstructMapper;
 
+	private ISerialClient serialClient;//生成系统编号
+
+	private ICorpsDescClient corpsDescClient;//获取客户信息
 
 	/**
 	 * 订单暂存
@@ -81,7 +89,29 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 		if (Func.isEmpty(order.getBusinesDate())) {
 			order.setBusinesDate(new Date());
 		}
-		if (Objects.isNull(order.getId())) {
+		//新增采购订单
+		if (Objects.isNull(order.getId()))
+		{
+			//生成系统编号
+			R billNo = serialClient.getBillNo(order.getBillType(),order.getTradeType());
+			if (billNo.getCode() != 200){
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				throw new SecurityException("生成系统编号失败");
+			}
+			order.setSysNo((String) billNo.getData());
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
+			//生成订单号
+			R clientBillNo = serialClient.getBillNo(corpMessage.getData().getCode(),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());
+			}
 			order.setCreateTime(new Date());
 			order.setCreateUser(AuthUtil.getUserId());
 			orderService.insert(order);

+ 2 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -88,6 +88,7 @@ public class PurchaseOrderController extends BladeController {
 	@ApiOperation(value = "采购订单表列表(内贸 外贸 出口)", notes = "传入order")
 	public R<?> list( @RequestParam(name = "current", defaultValue = "1") Integer current,
 								 @RequestParam(name = "size", defaultValue = "10") Integer size,
+					 			 @RequestParam(value = "billNo",required = false) String billNo,//提单号
 								 @RequestParam(value = "strCorpName",required = false) String strCorpName,//供应商名称
 								 @RequestParam(value = "strPurchaserName",required = false) String strPurchaserName,//采购商名称
 								 @RequestParam(value = "businesStartDate",required = false) String businesStartDate,//订单开始时间
@@ -140,6 +141,7 @@ public class PurchaseOrderController extends BladeController {
 		queryWrapper.eq("tenant_id",AuthUtil.getTenantId());
 		queryWrapper.eq("bill_type",OrderTypeEnum.PURCHASE.getType());
 		queryWrapper.eq("trade_type",order.getTradeType());
+		queryWrapper.apply(StringUtils.isNotBlank(billNo),"find_in_set('"+billNo+"',bill_no)");
 		queryWrapper.between(StringUtils.isNotBlank(businesStartDate)&&StringUtils.isNotBlank(businesEndDate),"busines_date",businesStartDate,businesEndDate);
 		queryWrapper.between(StringUtils.isNotBlank(accountsCollectionStartDate)&&StringUtils.isNotBlank(accountsCollectionEndDate),"accounts_collection_date",accountsCollectionStartDate,accountsCollectionEndDate);
 		queryWrapper.between(StringUtils.isNotBlank(dateOfStartArrival)&&StringUtils.isNotBlank(dateOfEndArrival),"arrival_date",dateOfStartArrival,dateOfEndArrival);