Просмотр исходного кода

代理商生成平台账单暂存

lazhaoqian 3 лет назад
Родитель
Сommit
e141c2b835
19 измененных файлов с 442 добавлено и 11 удалено
  1. 19 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java
  2. 18 3
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IGoodsDescClient.java
  3. 11 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ISerialClient.java
  4. 11 0
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java
  5. 3 1
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  6. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
  7. 5 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  8. 4 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java
  9. 16 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java
  10. 15 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java
  11. 13 0
      blade-service/blade-client/src/main/java/org/springblade/client/serial/feign/SerialClient.java
  12. 9 0
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/ISerialService.java
  13. 55 0
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java
  14. 1 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  15. 30 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java
  16. 3 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
  17. 11 3
      blade-service/trade-purchase/src/main/java/com/trade/purchase/dealer/PurchaseContract.java
  18. 7 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IPurchaseService.java
  19. 206 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/PurchaseServiceImpl.java

+ 19 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java

@@ -37,7 +37,8 @@ public interface ICorpsDescClient {
 	String LIST_USERID_BY_CORP = API_PREFIX + "/getFleetId";
 	String GET_GOOD_TYPE_MESSAGE = API_PREFIX + "getGoodTypeMessage";
 	String GET_CORPS_TYPE = API_PREFIX + "/getCorpsType";
-
+	String GET_AGENT_CODE = API_PREFIX + "/getAgentCode";
+	String GET_CORP = API_PREFIX + "getCorp";
 
 	@PostMapping(CORPS_UPDATE)
 	R corpsUpdate(@RequestBody CorpsDesc corpsDesc);
@@ -127,5 +128,22 @@ public interface ICorpsDescClient {
 	 */
 	@GetMapping(GET_CORPS_TYPE)
 	List<CorpsDesc> getCorpsType(@RequestParam("corpType") String corpType);
+	/**
+	 * 根据编码获取客户信息
+	 *
+	 * @param code
+	 * @param tenantId
+	 * @return
+	 */
+	@GetMapping(GET_AGENT_CODE)
+	CorpsDesc getAgentCode(@RequestParam("code") String code,
+						   @RequestParam("tenantId") String tenantId);
 
+	/**
+	 * 获取客户信息
+	 * @param corpsDesc
+	 * @return
+	 */
+	@PostMapping(GET_CORP)
+	List<CorpsDesc> getCorp(@RequestBody CorpsDesc corpsDesc);
 }

+ 18 - 3
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IGoodsDescClient.java

@@ -28,8 +28,8 @@ public interface IGoodsDescClient {
 	String GET_GOOD_Name = API_PREFIX + "/getGoodName";
 	String GOOD_TYPE_CNAME = API_PREFIX + "/goodTypeCname";
 	String GET_GOODS_REPORT = API_PREFIX + "/getGoodsReport";
-
-
+	String TERRAC_ECODE = API_PREFIX + "terraceCode";
+	String GET_TERRAC_ECODE = API_PREFIX + "getTerraceCode";
 	/**
 	 * 获取商品信息
 	 *
@@ -121,5 +121,20 @@ public interface IGoodsDescClient {
 									  @RequestParam(name = "code", required = false) String code,
 									  @RequestParam(name = "goodsTypeId", required = false) String goodsTypeId,
 									  @RequestParam(name = "tenantId", required = false) String tenantId);
-
+	/**
+	 * 根据商品信息
+	 *
+	 * @param goodsDesc
+	 * @return
+	 */
+	@GetMapping(TERRAC_ECODE)
+	GoodsDesc terraceCode(GoodsDesc goodsDesc);
+	/**
+	 * 根据
+	 *
+	 * @param terraceCode 平台代码
+	 * @return
+	 */
+	@GetMapping(GET_TERRAC_ECODE)
+	GoodsDesc getTerraceCode(@RequestParam("terraceCode") String terraceCode,@RequestParam("tenantId") String tenantId);
 }

+ 11 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ISerialClient.java

@@ -17,7 +17,7 @@ import java.util.Date;
 public interface ISerialClient {
 	String API_PREFIX = "/client";
 	String billNO = API_PREFIX + "/billNO";
-
+	String GET_NO = API_PREFIX + "/getNo";
 	/**
 	 * 生成系统编号
 	 * @param type 编号类型
@@ -27,4 +27,14 @@ public interface ISerialClient {
 	 */
 	@GetMapping(billNO)
 	R getBillNo(@RequestParam("type") String type,@RequestParam("tradeType") String tradeType,@RequestParam("serialType")String serialType);
+	/**
+	 * 生成系统编号
+	 * @param type 编号类型
+	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 * @param serialType 模块类型
+	 * @param tenantId 租户id
+	 * @return
+	 */
+	@GetMapping(GET_NO)
+	R getNo(@RequestParam("type") String type,@RequestParam("tradeType") String tradeType,@RequestParam("serialType")String serialType,@RequestParam("tenantId")String tenantId);
 }

+ 11 - 0
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java

@@ -7,6 +7,8 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 /**
  * 价格管理对外访问接口
  *
@@ -21,6 +23,7 @@ public interface ISalesPolicyClient {
 	String GET_POLICY_NAME = API_PREFIX + "/get-policy-name";
 	String GET_POLICY = API_PREFIX + "/getPolicy";
 	String GET_POLICY_ITEM = API_PREFIX + "/getPolicyItem";
+	String GET_SALES_POLICY = API_PREFIX + "getSalesPolicy";
 	/**
 	 * 获取商品所属政策名
 	 *
@@ -50,4 +53,12 @@ public interface ISalesPolicyClient {
 								  @RequestParam("pid") Long pid,
 								  @RequestParam("salesType") String salesType);
 
+	/**
+	 * 代理商获取平台政策 传客户编码 代理商对应的平台租户id
+	 * @return
+	 */
+	@GetMapping(GET_SALES_POLICY)
+	List<SalesPolicyItem> getSalesPolicy(@RequestParam("code") String code,
+										 @RequestParam("tenantId") String tenantId);
+
 }

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

@@ -420,7 +420,9 @@ public class OrderItems implements Serializable {
 	private BigDecimal integralMultiples;
 	@ApiModelProperty(value = "商品叫赠送积分 赠品叫兑换积分")
 	private BigDecimal integral;
-
+	/**
+	 * 是否质量胎
+	 */
 	private Integer shopQuality;
 
 	@TableField(exist = false)

+ 5 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java

@@ -111,5 +111,10 @@ public class Tenant extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "对应平台")
 	private String terrace;
+	/**
+	 * 平台客户编码
+	 */
+	@ApiModelProperty(value = "平台客户编码")
+	private String corpCode;
 
 }

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

@@ -764,4 +764,9 @@ public class Order extends OrderBase {
 	 */
 	@ApiModelProperty(value = "箱重量")
 	private BigDecimal cartonWeight;
+	/**
+	 * 生成工厂
+	 */
+	@ApiModelProperty(value = "生成工厂")
+	private Long productionPlant;
 }

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

@@ -469,4 +469,8 @@ public class OrderItems extends OrderBase {
 	 */
 	@ApiModelProperty(value = "箱重量")
 	private BigDecimal cartonWeight;
+	/**
+	 * 是否质量胎
+	 */
+	private Integer shopQuality;
 }

+ 16 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -164,6 +164,22 @@ public class CorpsDescClient implements ICorpsDescClient {
 	}
 
 	@Override
+	public CorpsDesc getAgentCode(String code, String tenantId) {
+		LambdaQueryWrapper<CorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted,0);
+		lambdaQueryWrapper.eq(CorpsDesc::getCorpType,"KH");
+		lambdaQueryWrapper.eq(CorpsDesc::getTenantId,tenantId);
+		lambdaQueryWrapper.eq(CorpsDesc::getCode,code);
+		return service.getOne(lambdaQueryWrapper);
+	}
+
+	@Override
+	public List<CorpsDesc> getCorp(CorpsDesc corpsDesc) {
+		corpsDesc.setIsDeleted(0);
+		return service.list(new QueryWrapper<CorpsDesc>().setEntity(corpsDesc));
+	}
+
+	@Override
 	public List<Long> getGoodTypeMessage(Long goodTypeId) {
 		return goodsTypeService.goodTypeIdList(goodTypeId.toString());
 	}

+ 15 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java

@@ -157,6 +157,21 @@ public class GoodsDescClient implements IGoodsDescClient {
 		return R.data(goodsDescService.list(goodsDescLambdaQueryWrapper));
 	}
 
+	@Override
+	public GoodsDesc terraceCode(GoodsDesc goodsDesc) {
+		goodsDesc.setIsDeleted(0);
+		return goodsDescService.getOne(new QueryWrapper<GoodsDesc>().setEntity(goodsDesc));
+	}
+
+	@Override
+	public GoodsDesc getTerraceCode(String terraceCode, String tenantId) {
+		LambdaQueryWrapper<GoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(GoodsDesc::getIsDeleted,0);
+		lambdaQueryWrapper.eq(GoodsDesc::getTerraceCode,terraceCode);
+		lambdaQueryWrapper.eq(GoodsDesc::getTenantId,tenantId);
+		return goodsDescService.getOne(lambdaQueryWrapper);
+	}
+
 	/**
 	 * 递归查询ID
 	 */

+ 13 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/feign/SerialClient.java

@@ -28,4 +28,17 @@ public class SerialClient implements ISerialClient {
 	public R getBillNo(String type,String tradeType,String serialType) {
 		return R.data(serialService.getBillNo(type,tradeType,serialType));
 	}
+	/**
+	 * 生成系统编号
+	 * @param type 编号类型
+	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 * @param serialType 模块类型
+	 * @param tenantId 租户id
+	 * @return
+	 */
+	@Override
+	@GetMapping(GET_NO)
+	public R getNo(String type, String tradeType, String serialType, String tenantId) {
+		return R.data(serialService.getNo(type,tradeType,serialType,tenantId));
+	}
 }

+ 9 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/ISerialService.java

@@ -46,4 +46,13 @@ public interface ISerialService extends IService<Serial> {
 	 * @return
 	 */
 	public String getBillNo(String type,String tradeType,String serialType);
+	/**
+	 * 生成系统编号
+	 * @param type 编号类型
+	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 * @param serialType 模块类型
+	 * @param tenantId 租户id
+	 * @return
+	 */
+	public String getNo(String type,String tradeType,String serialType,String tenantId);
 }

+ 55 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java

@@ -104,4 +104,59 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 		return type+billNo;
 	}
 
+	@Override
+	public String getNo(String type, String tradeType, String serialType, String tenantId) {
+		Date date = new Date();
+		String billNo = null;
+		String yyyyMM = null;
+		if (tradeType.equals("CK")){
+			yyyyMM = DateFormatUtils.format(date, "yy");
+		}else {
+			yyyyMM = DateFormatUtils.format(date, "yyyyMM");
+		}
+		Serial billNoSerial = new Serial();
+		billNoSerial.setBillType(type);
+		billNoSerial.setTradeType(tradeType);
+		billNoSerial.setBillPrefix(yyyyMM);
+		billNoSerial.setTenantId(tenantId);
+		billNoSerial.setIsDeleted(0);
+		billNoSerial.setSerialType(serialType);
+		Serial serial = baseMapper.selectOne(new QueryWrapper<Serial>().setEntity(billNoSerial));
+		if (tradeType.equals("CK")){
+			yyyyMM = DateFormatUtils.format(date, "yyMMdd");
+			if (serial != null) {
+				serial.setSerial(serial.getSerial() + 1);
+				baseMapper.updateById(serial);
+				if (serial.getSerial() <= 9) {
+					billNo = "00" + serial.getSerial()+ "-" + yyyyMM ;
+				} else if (serial.getSerial() <= 99) {
+					billNo = "0" + serial.getSerial()+ "-" + yyyyMM ;
+				} else {
+					billNo =  "" + serial.getSerial()+ "-" + yyyyMM;
+				}
+			} else {
+				billNo =  "001-" + yyyyMM ;
+				billNoSerial.setSerial(1);
+				baseMapper.insert(billNoSerial);
+			}
+		}else {
+			if (serial != null) {
+				serial.setSerial(serial.getSerial() + 1);
+				baseMapper.updateById(serial);
+				if (serial.getSerial() <= 9) {
+					billNo = yyyyMM + "00" + serial.getSerial();
+				} else if (serial.getSerial() <= 99) {
+					billNo = yyyyMM + "0" + serial.getSerial();
+				}else{
+					billNo = yyyyMM + "" + serial.getSerial();
+				}
+			} else {
+				billNo = yyyyMM + "001";
+				billNoSerial.setSerial(1);
+				baseMapper.insert(billNoSerial);
+			}
+		}
+		return type+billNo;
+	}
+
 }

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

@@ -297,7 +297,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	}
 
 	@Override
-	@GlobalTransactional
+	@GlobalTransactional(timeoutMills = 120000000)
 	@Transactional(rollbackFor = Exception.class)
 	public R submit(Delivery delivery) {
 

+ 30 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java

@@ -3,6 +3,8 @@ package org.springblade.mocha.feign;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import org.checkerframework.checker.units.qual.A;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.utils.CollectionUtil;
@@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -29,6 +32,7 @@ public class SalesPolicyClient implements ISalesPolicyClient {
 	private final ISalesPolicyService salesPolicyService;
 
 	private final ISalesPolicyItemService salesPolicyItemService;
+	private final ICorpsDescClient corpsDescClient;
 
 	@Override
 	@GetMapping(GET_POLICY_NAME)
@@ -78,4 +82,30 @@ public class SalesPolicyClient implements ISalesPolicyClient {
 		return salesPolicyItemService.getOne(lambdaQueryWrapper);
 	}
 
+	@Override
+	public List<SalesPolicyItem> getSalesPolicy(String code, String tenantId) {
+		List<SalesPolicyItem> list = new ArrayList<>();
+		//获取代理商信息
+		CorpsDesc agentCode = corpsDescClient.getAgentCode(code, tenantId);
+		if (agentCode == null){
+			return list;
+		}
+		LambdaQueryWrapper<SalesPolicy> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.like(SalesPolicy::getCorps,agentCode.getId());
+		lambdaQueryWrapper.eq(SalesPolicy::getTenantId,tenantId);
+		lambdaQueryWrapper.eq(SalesPolicy::getIsDeleted,0);
+		lambdaQueryWrapper.le(SalesPolicy::getStartTime,new Date());
+		lambdaQueryWrapper.ge(SalesPolicy::getEndTime,new Date());
+		List<SalesPolicy> salesPolicyList = salesPolicyService.list(lambdaQueryWrapper);
+		if (CollectionUtil.isNotEmpty(salesPolicyList)){
+			List<Long> collect = salesPolicyList.stream().map(SalesPolicy::getId).collect(Collectors.toList());
+			LambdaQueryWrapper<SalesPolicyItem> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(SalesPolicyItem::getTenantId,tenantId);
+			queryWrapper.eq(SalesPolicyItem::getIsDeleted,0);
+			queryWrapper.in(SalesPolicyItem::getPid,collect);
+			list = salesPolicyItemService.list(queryWrapper);
+		}
+		return list;
+	}
+
 }

+ 3 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml

@@ -21,6 +21,9 @@
         <result column="account_number" property="accountNumber"/>
         <result column="expire_time" property="expireTime"/>
         <result column="license_key" property="licenseKey"/>
+        <result column="bill_type" property="billType"/>
+        <result column="terrace" property="terrace"/>
+        <result column="corp_code" property="corpCode"/>
     </resultMap>
 
 

+ 11 - 3
blade-service/trade-purchase/src/main/java/com/trade/purchase/dealer/PurchaseContract.java

@@ -393,8 +393,16 @@ public class PurchaseContract {
 		if (order.getId() == null){
 			throw new SecurityException("请选择要提交的订单");
 		}
-		order.setBillType(OrderTypeEnum.PURCHASE_CONTRACT.getType());
-		order.setTradeType(OrderTypeEnum.DEALER.getType());
-		return null;
+		order.setBillType(OrderTypeEnum.AGENCY_ORDER.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return purchaseService.createOrder(order);
+	}
+	@PostMapping("/getGoodStock")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "获取商品信息", notes = "传入order 主表id")
+	public R getGoodStock(@Valid @RequestBody OrderVO order){
+		order.setBillType(OrderTypeEnum.AGENCY_ORDER.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return purchaseService.getGoodStock(order);
 	}
 }

+ 7 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IPurchaseService.java

@@ -17,4 +17,11 @@ public interface IPurchaseService extends IService<Order> {
 	 * @return
 	 */
 	R createOrder(Order order);
+	/**
+	 * 经销商获取商品信息
+	 * @param order
+	 * @return
+	 */
+	R getGoodStock(Order order);
+
 }

+ 206 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/PurchaseServiceImpl.java

@@ -1,19 +1,224 @@
 package com.trade.purchase.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.trade.purchase.office.service.IStockService;
 import com.trade.purchase.order.entity.Order;
+import com.trade.purchase.order.entity.OrderItems;
+import com.trade.purchase.order.mapper.OrderItemsMapper;
 import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.service.IPurchaseService;
+import com.trade.purchase.order.vo.OrderItemsVO;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.GoodsDesc;
+import org.springblade.client.entity.GoodsType;
+import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.client.feign.ISerialClient;
+import org.springblade.client.vo.GoodsDescVO;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.mocha.entity.SalesPolicyItem;
+import org.springblade.mocha.feign.ISalesPolicyClient;
+import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.system.entity.Tenant;
+import org.springblade.system.feign.ITenantClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
 public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> implements IPurchaseService {
-
+	private OrderMapper orderMapper;
+	private OrderItemsMapper orderItemsMapper;
+	private ITenantClient tenantClient;
+	private IGoodsDescClient goodsDescClient;
+	private ICorpsDescClient corpsDescClient;
+	private IStockGoodsClient stockGoodsClient;//查询库存账对外访问接口
+	private ISalesPolicyClient salesPolicyClient;//获取政策信息
+	/**
+	 * 生成系统编号
+	 */
+	private ISerialClient serialClient;
 	@Override
+	@GlobalTransactional(timeoutMills = 12000000)
+	@Transactional(rollbackFor = Exception.class)
 	public R createOrder(Order order) {
+		//查询采购合同主表信息
+		Order orderMessage = orderMapper.selectById(order.getId());
+		if (orderMessage == null){
+			throw new SecurityException("未找到采购合同");
+		}
+		//获取平台租户id
+		Tenant tenant = tenantClient.tenantMessage(SecureUtil.getTenantId());
+		if (tenant == null){
+			throw new SecurityException("未找到租户信息");
+		}
+		if (StringUtils.isBlank(tenant.getTerrace())){
+			throw new SecurityException("未找到租户对应的平台信息,请维护平台信息");
+		}
+		if (StringUtils.isBlank(tenant.getCorpCode())){
+			throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
+		}
+		//获取客户信息
+		CorpsDesc agentCode = corpsDescClient.getAgentCode(tenant.getCorpCode(), tenant.getTerrace());
+		if (agentCode == null){
+			throw new SecurityException("在平台上未找到对应的客户信息,请通知平台维护");
+		}
+		if (StringUtils.isBlank(agentCode.getBelongtocompany())){
+			throw new SecurityException("在平台上未找到对应的客户的所属公司未维护,请通知平台维护");
+		}
+		String packageRemarks = null;
+		if (StringUtils.isNotBlank(agentCode.getPackageRemarks())){
+			packageRemarks = agentCode.getPackageRemarks();
+		}else {
+			packageRemarks = "无包装";
+		}
+		//获取客户对应的所属公司
+		R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(Long.valueOf(agentCode.getBelongtocompany()));
+		if (!corpMessage.isSuccess()){
+			throw new SecurityException("获取客户对应的所属公司失败");
+		}
+		if (corpMessage.getData() == null){
+			throw new SecurityException("未找到客户对应的所属公司信息");
+		}
+		CorpsDesc corpsDesc = corpMessage.getData();//所属公司信息
+		//获取所属公司对应的供应商
+		CorpsDesc desc = new CorpsDesc();
+		desc.setCorpType("GYS");
+		desc.setBelongtocompany(agentCode.getBelongtocompany());
+		desc.setTenantId(tenant.getTerrace());
+		List<CorpsDesc> corpsDescList = corpsDescClient.getCorp(desc);
+		if (CollectionUtils.isEmpty(corpsDescList)){
+			throw new SecurityException("未找到所属公司对应的供应商,请通知平台维护");
+		}
+		CorpsDesc supplier = corpsDescList.get(0);//供应商/生成工厂
+		//生成平台代理商订单
+		Order purchase = new Order();
+		purchase.setBillType(order.getBillType());//代理订单
+		purchase.setTradeType(order.getTradeType());//国内订单
+		purchase.setTenantId(tenant.getTerrace());//代理商对应的平台的租户id
+		purchase.setBusinesDate(new Date());//订单日期
+		//purchase.setCreateUser(SecureUtil.getUserId());
+		purchase.setCreateTime(new Date());
+		purchase.setPaymentType("预付");//付款方式
+		purchase.setRequiredDeliveryDate(new Date());//要求发货日期
+		purchase.setRequiredArrivalDate(new Date());//要求到货日期
+		purchase.setCorpId(agentCode.getId());//客户
+		purchase.setProductionPlant(supplier.getId());//生成工厂
+		purchase.setPackageRemarks(packageRemarks);//包装要求
+		purchase.setBanks(corpsDesc.getAccountNo());//银行账号
+		purchase.setBanksAccountName(corpsDesc.getAccountName());//公司户头
+		purchase.setAccountBank(corpsDesc.getAccountBank());//开户银行
+		purchase.setShippingAddress(supplier.getStorageAddr());//发货地址
+		purchase.setArrivalAddress(agentCode.getStorageAddr());//到货地址
+		//生成系统编号
+		R billNo = serialClient.getNo(purchase.getBillType(), purchase.getTradeType(), purchase.getBillType(),tenant.getTerrace());
+		if (billNo.getCode() != 200) {
+			throw new SecurityException("生成系统编号失败");
+		}
+		purchase.setSysNo((String) billNo.getData());//系统编号
+		//生成销售单号
+		R clientBillNo = serialClient.getNo(agentCode.getCode(), order.getTradeType(), order.getBillType(),tenant.getTerrace());
+		if (!clientBillNo.isSuccess()) {
+			throw new SecurityException("生成系统编号失败");
+		}
+		purchase.setOrderNo((String) clientBillNo.getData());//销售单号
+		purchase.setMorderNo(order.getOrderNo());//主订单号
+		purchase.setOrderStatus("录入");
+		orderMapper.insert(purchase);
+		//查询采购合同明细信息
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
+		lambdaQueryWrapper.eq(OrderItems::getGoodType,0);
+		lambdaQueryWrapper.eq(OrderItems::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
+		List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
+		//生成平台代理商订单明细
+		if (CollectionUtils.isNotEmpty(orderItemsList)){
+			orderItemsList.stream().forEach(item ->{
+				OrderItems orderItems = new OrderItems();
+				orderItems.setPid(purchase.getId());
+				orderItems.setTenantId(tenant.getTerrace());
+				orderItems.setCreateTime(new Date());
+				//获取代理商商品信息
+				R<GoodsDescVO> goods = goodsDescClient.selectGoodsMessage(item.getItemId());
+				if (goods.isSuccess() && goods.getData() != null){
+					GoodsDesc goodsDesc = new GoodsDesc();
+					goodsDesc.setCode(goods.getData().getTerraceCode());
+					goodsDesc.setTenantId(tenant.getTerrace());
+					GoodsDesc terraceCode = goodsDescClient.terraceCode(goodsDesc);
+					if (terraceCode == null){
+						throw new SecurityException("平台未找到对应的商品,请通知平台维护");
+					}
+					orderItems.setItemId(terraceCode.getId());
+					//获取商品分类
+					GoodsType goodsType = goodsDescClient.goodTypeId(terraceCode.getId());
+					orderItems.setPriceCategory(goodsType.getCname());//产品分类
+					orderItems.setPriceType(item.getPriceType());//价格类别
+					orderItems.setCname(terraceCode.getCname());//商品名
+					orderItems.setCode(terraceCode.getCode());//商品编码
+					orderItems.setTypeno(terraceCode.getTypeno());//规格型号
+					orderItems.setBrandItem(terraceCode.getBrandItem());//花纹
+					orderItems.setSize(terraceCode.getSize());//尺寸
+					orderItems.setCorpId(terraceCode.getCorpId());//供应商id
+					orderItems.setCorpName(terraceCode.getCorpName());//供应商名称
+					orderItems.setShopQuality(0);//质量胎
+					orderItems.setOrderQuantity(item.getOrderQuantity());//数量
+					orderItems.setActualQuantity(BigDecimal.ZERO);//发货数量
+					orderItems.setStorageQuantity(item.getStorageQuantity());//库存数量
+					orderItems.setPurchaseAmount(item.getPurchaseAmount());//采购价格
+					orderItems.setPrice(item.getPrice());//最新价格
+					orderItems.setAmount(orderItems.getOrderQuantity().multiply(orderItems.getPrice()));//金额
+					orderItems.setIntegral(BigDecimal.ZERO);//赠送积分
+					orderItems.setIntegralMultiples(BigDecimal.ZERO);//积分倍数
+					orderItems.setCartonWeight(terraceCode.getCartonWeight());//重量
+					orderItems.setCntrVolumn(terraceCode.getCntrVolumn());//体积
+					orderItems.setRemarks(item.getRemarks());//备注
+				}else {
+					throw new SecurityException("未找到商品信息");
+				}
+				orderItemsMapper.insert(orderItems);
+			});
+		}
+		return R.success("操作成功");
+	}
+
+	@Override
+	public R getGoodStock(Order order) {
+		//获取平台租户id
+		List<OrderItemsVO> list = new ArrayList<>();
+		Tenant tenant = tenantClient.tenantMessage(SecureUtil.getTenantId());
+		if (tenant == null){
+			throw new SecurityException("未找到租户信息");
+		}
+		if (StringUtils.isBlank(tenant.getTerrace())){
+			throw new SecurityException("未找到租户对应的平台信息,请维护平台信息");
+		}
+		if (StringUtils.isBlank(tenant.getCorpCode())){
+			throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
+		}
+		//获取平台销售政策  需将平台编码转成代理商编码
+		List<SalesPolicyItem> salesPolicy = salesPolicyClient.getSalesPolicy(tenant.getCorpCode(), tenant.getTerrace());
+		if (CollectionUtils.isEmpty(salesPolicy)){
+			salesPolicy.stream().forEach(item ->{
+
+			});
+		}
+		//获取平台库存
+		//获取代理商库存
+		//获取最近六十天销售
+		//
 		return null;
 	}
 }