Quellcode durchsuchen

代理商采购合同生成平台代理订单,同时生成审批流, 明天做审批操作

lazhaoqian vor 3 Jahren
Ursprung
Commit
e37e3c6920
47 geänderte Dateien mit 1114 neuen und 87 gelöschten Zeilen
  1. 10 1
      blade-service-api/blade-check-api/src/main/java/org/springblade/check/feign/ICheckClient.java
  2. 11 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java
  3. 2 2
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IGoodsDescClient.java
  4. 3 2
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java
  5. 6 0
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/vo/SalesPolicyItemVO.java
  6. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  7. 10 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java
  8. 14 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  9. 14 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderItemsVO.java
  10. 23 0
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditPathsActsController.java
  11. 4 1
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java
  12. 14 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsActsMapper.java
  13. 11 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsActsMapper.xml
  14. 14 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsLevelsMapper.java
  15. 11 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsLevelsMapper.xml
  16. 18 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditPathsActsService.java
  17. 6 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java
  18. 17 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditPathsActsServiceImpl.java
  19. 190 8
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  20. 8 9
      blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java
  21. 25 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.java
  22. 131 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.xml
  23. 20 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java
  24. 15 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  25. 2 3
      blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java
  26. 10 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/mapper/GoodsDescMapper.java
  27. 10 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/mapper/GoodsDescMapper.xml
  28. 8 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/service/IGoodsDescService.java
  29. 5 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java
  30. 8 20
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java
  31. 16 1
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/mapper/SalesPolicyItemMapper.java
  32. 26 1
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/mapper/SalesPolicyItemMapper.xml
  33. 12 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/ISalesPolicyService.java
  34. 6 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/SalesPolicyServiceImpl.java
  35. 206 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java
  36. 1 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  37. 13 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java
  38. 11 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java
  39. 11 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  40. 9 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  41. 5 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  42. 7 8
      blade-service/trade-purchase/src/main/java/com/trade/purchase/dealer/PurchaseContract.java
  43. 9 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.java
  44. 20 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.xml
  45. 1 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml
  46. 1 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IPurchaseService.java
  47. 135 28
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/PurchaseServiceImpl.java

+ 10 - 1
blade-service-api/blade-check-api/src/main/java/org/springblade/check/feign/ICheckClient.java

@@ -45,7 +45,16 @@ public interface ICheckClient {
 	 */
 	@PostMapping("/auditproecess/update")
 	R update(@RequestBody AuditProecessDTO auditProecess);
-
+	/**
+	 * 通过唯一的actId查询审批等级
+	 */
+	@GetMapping("/auditpathsacts/listApproval")
+	List<AuditPathsLevels> listApproval(@RequestParam("actId") int actId, @RequestParam("fidStatus") String fidStatus,@RequestParam String tenantId);
+	/**
+	 * 通过actId查询是否开启审批
+	 */
+	@GetMapping("/auditpathsacts/getApprovalActId")
+	AuditPathsActs getApprovalActId(@RequestParam("actId") int actId, @RequestParam("fidStatus") String fidStatus,@RequestParam String tenantId);
 	/**
 	 * 获取商品信息
 	 *

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

@@ -39,6 +39,7 @@ public interface ICorpsDescClient {
 	String GET_CORPS_TYPE = API_PREFIX + "/getCorpsType";
 	String GET_AGENT_CODE = API_PREFIX + "/getAgentCode";
 	String GET_CORP = API_PREFIX + "getCorp";
+	String GET_CORP_ID = API_PREFIX + "getCorpId";
 
 	@PostMapping(CORPS_UPDATE)
 	R corpsUpdate(@RequestBody CorpsDesc corpsDesc);
@@ -63,6 +64,14 @@ public interface ICorpsDescClient {
 	R<CorpsDesc> getCorpMessage(@RequestParam("Id") Long Id);
 
 	/**
+	 * 获取客户信息
+	 * @param Id
+	 * @return
+	 */
+	@GetMapping(GET_CORP_ID)
+	CorpsDesc getCorpId(@RequestParam("Id") Long Id);
+
+	/**
 	 * 根据租户id查询所有客户详情
 	 *
 	 * @param tenantId 租户id
@@ -137,7 +146,8 @@ public interface ICorpsDescClient {
 	 */
 	@GetMapping(GET_AGENT_CODE)
 	CorpsDesc getAgentCode(@RequestParam("code") String code,
-						   @RequestParam("tenantId") String tenantId);
+						   @RequestParam("tenantId") String tenantId,
+						   @RequestParam("corpType") String corpType);
 
 	/**
 	 * 获取客户信息

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

@@ -124,11 +124,11 @@ public interface IGoodsDescClient {
 	/**
 	 * 根据商品信息
 	 *
-	 * @param goodsDesc
+	 * @param code
 	 * @return
 	 */
 	@GetMapping(TERRAC_ECODE)
-	GoodsDesc terraceCode(GoodsDesc goodsDesc);
+	GoodsDesc terraceCode(@RequestParam("code") String code,@RequestParam("tenantId") String tenantId);
 	/**
 	 * 根据
 	 *

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

@@ -3,6 +3,7 @@ package org.springblade.mocha.feign;
 import org.springblade.common.constant.LauncherConstant;
 import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
+import org.springblade.mocha.vo.SalesPolicyItemVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -58,7 +59,7 @@ public interface ISalesPolicyClient {
 	 * @return
 	 */
 	@GetMapping(GET_SALES_POLICY)
-	List<SalesPolicyItem> getSalesPolicy(@RequestParam("code") String code,
-										 @RequestParam("tenantId") String tenantId);
+	List<SalesPolicyItemVO> getSalesPolicy(@RequestParam("code") String code,
+										   @RequestParam("tenantId") String tenantId);
 
 }

+ 6 - 0
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/vo/SalesPolicyItemVO.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.mocha.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.mocha.entity.SalesPolicyItem;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -33,4 +34,9 @@ import io.swagger.annotations.ApiModel;
 public class SalesPolicyItemVO extends SalesPolicyItem {
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * 政策名
+	 */
+	@ApiModelProperty(value = "政策名")
+	private String policy;
 }

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

@@ -934,4 +934,9 @@ public class Order implements Serializable {
 	 */
 	@ApiModelProperty(value = "箱重量")
 	private BigDecimal cartonWeight;
+	/**
+	 * 是否生成平台订单/是否从代理订单生成销售订单 默认 0 未生成 1 已生成
+	 */
+	@ApiModelProperty(value = "是否生成平台订单/是否从代理订单生成销售订单 默认 0 未生成 1 已生成")
+	private int generate;
 }

+ 10 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.List;
 
 @FeignClient(
@@ -29,6 +30,7 @@ public interface IStockGoodsClient {
 	String GET_STOCK_BY_CONDITIONS = API_PREFIX + "/getStockByCondition";
 	String LIST_STOCK_BY_CONDITIONS = API_PREFIX + "/listStockByCondition";
 	String POST_LIST_STOCK_BY_CONDITIONS = API_PREFIX + "/postListStockByCondition";
+	String GET_STOCK_NUMBER = API_PREFIX + "/getStockNumber";
 
 
 	@GetMapping("/stockgoods/stocklist")
@@ -121,4 +123,12 @@ public interface IStockGoodsClient {
 	@PostMapping(POST_LIST_STOCK_BY_CONDITIONS)
     List<StockGoods> postListStockByCondition(@RequestBody StockGoods stockGoods);
 
+	/**
+	 * 根据商品id 租户 获取对应租户商品的库存数量
+	 * @param goodId
+	 * @param tenantId
+	 * @return
+	 */
+	@GetMapping(GET_STOCK_NUMBER)
+	BigDecimal getStockNumber(@RequestParam("goodId")Long goodId,@RequestParam("tenantId")String tenantId);
 }

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

@@ -769,4 +769,18 @@ public class Order extends OrderBase {
 	 */
 	@ApiModelProperty(value = "生成工厂")
 	private Long productionPlant;
+	/**
+	 * 是否生成平台订单/是否从代理订单生成销售订单 默认 0 未生成 1 已生成
+	 */
+	@ApiModelProperty(value = "是否生成平台订单/是否从代理订单生成销售订单 默认 0 未生成 1 已生成")
+	private int generate;
+
+	@TableField(exist = false)
+	private String checkType;
+	@TableField(exist = false)
+	private String url;
+	@TableField(exist = false)
+	private String pageStatus;
+	@TableField(exist = false)
+	private String pageLabel;
 }

+ 14 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderItemsVO.java

@@ -1,10 +1,13 @@
 package com.trade.purchase.order.vo;
 
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.trade.purchase.order.entity.OrderItems;
 
+import java.math.BigDecimal;
+
 /**
  * 订单明细表视图实体类
  *
@@ -17,4 +20,15 @@ import com.trade.purchase.order.entity.OrderItems;
 public class OrderItemsVO extends OrderItems {
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * 平台库存
+	 */
+	@ApiModelProperty(value = "平台库存")
+	private BigDecimal platformInventory;
+	/**
+	 * 60天销量
+	 */
+	@ApiModelProperty(value = "60天销量")
+	private BigDecimal salesVolume;
+
 }

+ 23 - 0
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditPathsActsController.java

@@ -119,6 +119,29 @@ public class AuditPathsActsController extends BladeController {
 	return 	auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
 	}
 
+	/**
+	 * 根据租户获取审批流信息
+	 * @param actId
+	 * @param fidStatus
+	 * @return
+	 */
+	@GetMapping("/listApproval")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "feign接口专用,前端勿调", notes = "feign接口专用,前端勿调")
+	public List<AuditPathsLevels> listApproval(@ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam int actId, @ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam String fidStatus
+		, @ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam String tenantId)
+	{
+		return auditPathsActsService.listApproval(actId,fidStatus,tenantId);
+	}
+	@GetMapping("/getApprovalActId")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "feign接口专用,前端勿调", notes = "feign接口专用,前端勿调")
+	public AuditPathsActs getApprovalActId(@ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam int actId,
+										   @ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam String fidStatus,
+		 @ApiParam(value = "feign接口专用,前端勿调", required = true) @RequestParam String tenantId)
+	{
+		return 	auditPathsActsService.getApprovalActId(actId,fidStatus,tenantId);
+	}
 
 
 

+ 4 - 1
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -232,7 +232,10 @@ public class AuditProecessController extends BladeController {
 		} else {
 			auditProecessService.commonCheck(auditProecess);
 		}
-
+		//平台代理订单审核
+		if ("dldd".equals(proecess.getCheckType())) {
+			auditProecessService.agencyOrderProcess(auditProecess);
+		}
 		return R.data(auditProecess);
 	}
 

+ 14 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsActsMapper.java

@@ -16,7 +16,10 @@
  */
 package org.springblade.check.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.check.entity.AuditPathsActs;
+import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.vo.AuditPathsActsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -38,5 +41,16 @@ public interface AuditPathsActsMapper extends BaseMapper<AuditPathsActs> {
 	 * @return
 	 */
 	List<AuditPathsActsVO> selectAuditPathsActsPage(IPage page, AuditPathsActsVO auditPathsActs);
+	/**
+	 * 获取审批流信息
+	 * @param actId 活动id
+	 * @param fidStatus 状态
+	 * @param tenantId 租户
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	AuditPathsActs getApprovalActId(@Param("actId") int actId,
+										@Param("fidStatus")String fidStatus,
+										@Param("tenantId")String tenantId);
 
 }

+ 11 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsActsMapper.xml

@@ -16,5 +16,16 @@
     <select id="selectAuditPathsActsPage" resultMap="auditPathsActsResultMap">
         select * from audit_paths_acts where is_deleted = 0
     </select>
+    <select id="getApprovalActId" resultMap="auditPathsActsResultMap">
+    SELECT
+	    *
+    FROM
+	audit_paths_acts
+	WHERE
+	is_enable = 1
+	AND act_id = #{actId}
+	AND fid_status = #{fidStatus}
+	AND tenant_id = #{tenantId}
+    </select>
 
 </mapper>

+ 14 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsLevelsMapper.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.check.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.vo.AuditPathsLevelsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +41,16 @@ public interface AuditPathsLevelsMapper extends BaseMapper<AuditPathsLevels> {
 	 */
 	List<AuditPathsLevelsVO> selectAuditPathsLevelsPage(IPage page, AuditPathsLevelsVO auditPathsLevels);
 
+	/**
+	 * 获取审批流信息
+	 * @param actId 活动id
+	 * @param fidStatus 状态
+	 * @param tenantId 租户
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	List<AuditPathsLevels> listApproval(@Param("actId") int actId,
+										@Param("fidStatus")String fidStatus,
+										@Param("tenantId")String tenantId);
+
 }

+ 11 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditPathsLevelsMapper.xml

@@ -18,5 +18,16 @@
     <select id="selectAuditPathsLevelsPage" resultMap="auditPathsLevelsResultMap">
         select * from audit_paths_levels where is_deleted = 0
     </select>
+    <select id="listApproval" resultMap="auditPathsLevelsResultMap">
+        SELECT
+	    levels.*
+        FROM
+	    audit_paths_levels levels
+	    LEFT JOIN audit_paths_acts acts
+	    ON levels.path_id = acts.path_id
+	    WHERE acts.act_id = #{actId}
+	    AND acts.fid_status = #{fidStatus}
+	    AND acts.tenant_id = #{tenantId}
+    </select>
 
 </mapper>

+ 18 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditPathsActsService.java

@@ -17,6 +17,7 @@
 package org.springblade.check.service;
 
 import org.springblade.check.entity.AuditPathsActs;
+import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.vo.AuditPathsActsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -42,4 +43,21 @@ public interface IAuditPathsActsService extends IService<AuditPathsActs> {
 
 
 	void modify(List<AuditPathsActs> list);
+
+	/**
+	 * 根据租户获取审批流信息
+	 * @param actId 活动id
+	 * @param fidStatus 状态
+	 * @param tenantId 租户
+	 * @return
+	 */
+	List<AuditPathsLevels> listApproval(int actId, String fidStatus, String tenantId);
+	/**
+	 * 根据租户获取审批流信息
+	 * @param actId 活动id
+	 * @param fidStatus 状态
+	 * @param tenantId 租户
+	 * @return
+	 */
+	AuditPathsActs getApprovalActId(int actId, String fidStatus, String tenantId);
 }

+ 6 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java

@@ -61,4 +61,10 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 
 	void commonCheck(AuditProecess auditProecess);
 
+	/**
+	 * 代理订单审核
+	 * @param auditProecess
+	 */
+	void agencyOrderProcess(AuditProecess auditProecess);
+
 }

+ 17 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditPathsActsServiceImpl.java

@@ -16,7 +16,11 @@
  */
 package org.springblade.check.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
 import org.springblade.check.entity.AuditPathsActs;
+import org.springblade.check.entity.AuditPathsLevels;
+import org.springblade.check.mapper.AuditPathsLevelsMapper;
 import org.springblade.check.vo.AuditPathsActsVO;
 import org.springblade.check.mapper.AuditPathsActsMapper;
 import org.springblade.check.service.IAuditPathsActsService;
@@ -34,8 +38,10 @@ import java.util.List;
  * @since 2021-12-07
  */
 @Service
+@AllArgsConstructor
 public class AuditPathsActsServiceImpl extends ServiceImpl<AuditPathsActsMapper, AuditPathsActs> implements IAuditPathsActsService {
 
+	private AuditPathsLevelsMapper auditPathsLevelsMapper;
 	@Override
 	public IPage<AuditPathsActsVO> selectAuditPathsActsPage(IPage<AuditPathsActsVO> page, AuditPathsActsVO auditPathsActs) {
 		return page.setRecords(baseMapper.selectAuditPathsActsPage(page, auditPathsActs));
@@ -59,4 +65,15 @@ public class AuditPathsActsServiceImpl extends ServiceImpl<AuditPathsActsMapper,
 		});
 	}
 
+	@Override
+	public List<AuditPathsLevels> listApproval(int actId, String fidStatus, String tenantId) {
+		List<AuditPathsLevels> auditPathsLevels = auditPathsLevelsMapper.listApproval(actId, fidStatus, tenantId);
+		return auditPathsLevelsMapper.listApproval(actId,fidStatus,tenantId);
+	}
+
+	@Override
+	public AuditPathsActs getApprovalActId(int actId, String fidStatus, String tenantId) {
+		return baseMapper.getApprovalActId(actId,fidStatus,tenantId);
+	}
+
 }

+ 190 - 8
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -19,6 +19,7 @@ package org.springblade.check.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.extra.feign.IClaimClient;
 import com.trade.purchase.office.feign.IOfficeOrderClient;
@@ -228,11 +229,16 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					message.setMessageBody("您有交接单审核,请审核,"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
-				}else if ("销售特批审批".equals(auditProecessDTO.getProcessType())) {
+				} else if ("销售特批审批".equals(auditProecessDTO.getProcessType())) {
 					message.setMessageBody("您有欠款发货审批,公司名:" + corpName + "," + "销售订单号:" +
 						"" + auditProecessDTO.getBillNo() + "," + "订单金额:" + auditProecessDTO.getAmount() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
+				} else if ("代理订单审批".equals(auditProecessDTO.getProcessType())) {
+					message.setMessageBody("您有代理订单审批,公司名:" + corpName + "," + "代理订单号:" +
+						"" + auditProecessDTO.getBillNo() + "," + "订单金额:" + auditProecessDTO.getAmount() + ",请审核。"
+						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
 				}
 
 				message.setUrl("/approveData/index");
@@ -253,14 +259,18 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			if (auditPathsActs != null) {
 				auditProecess.setFidStatus(auditPathsActs.getFidStatus());
 			}
-			auditProecess.setTenantId(AuthUtil.getTenantId());
+			if (StringUtils.isNotBlank(auditProecessDTO.getTenantId())) {
+				auditProecess.setTenantId(auditProecessDTO.getTenantId());
+			} else {
+				auditProecess.setTenantId(AuthUtil.getTenantId());
+			}
 			baseMapper.insert(auditProecess);
 		});
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class,timeoutMills = 12000000)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void operationFinanceProcess(AuditProecess auditProecess) {
 
 		//查看最新操作记录,防止重复提交
@@ -588,7 +598,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class,timeoutMills = 12000000)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void orderCheckProcess(AuditProecess auditProecess) {
 		//查看最新操作记录,防止重复提交
 		AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
@@ -936,9 +946,9 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		List<AuditProecess> auditProecessList = proecessList.stream().filter(e -> e.getBatchNo() == max).collect(Collectors.toList());
 		//如果最新审批记录 第一级已经操作,就禁止撤回
 		long count = auditProecessList.stream().filter(
-				e -> e.getBatchNo() == max &&
-					e.getLevelId() == 1 &&
-					("A".equals(e.getAuditStatus()) || "B".equals(e.getAuditStatus())))
+			e -> e.getBatchNo() == max &&
+				e.getLevelId() == 1 &&
+				("A".equals(e.getAuditStatus()) || "B".equals(e.getAuditStatus())))
 			.count();
 		if (count > 0) {
 			throw new SecurityException("第一级审批已经开始,禁止撤回");
@@ -964,7 +974,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class,timeoutMills = 12000000)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void salaryCheck(AuditProecess auditProecess) {
 		//查看最新操作记录,防止重复提交
 		AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
@@ -1525,6 +1535,178 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		baseMapper.updateById(auditProecess);
 	}
 
+	@Override
+	public void agencyOrderProcess(AuditProecess auditProecess) {
+		//查看最新操作记录,防止重复提交
+		/*AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
+		if (proecessTemp == null) {
+			throw new SecurityException("未查到此审批记录,禁止操作");
+		}
+		if ("A".equals(proecessTemp.getAuditStatus()) || "B".equals(proecessTemp.getAuditStatus())) {
+			throw new SecurityException("当前记录已经完成审批,禁止重复操作");
+		}
+
+		if (auditProecess.getAuditStatus() == null || !"S".equals(auditProecess.getAuditStatus())) {
+			throw new SecurityException("审批状态非待审,禁止操作");
+		}
+		//信息
+		Message sendMessage = new Message();
+		sendMessage.setParameter(String.valueOf(auditProecess.getBillId()));
+		sendMessage.setUserName(AuthUtil.getUserName());
+		sendMessage.setUserId(AuthUtil.getUserId());
+		sendMessage.setToUserId(auditProecess.getSendUserId());
+		sendMessage.setToUserName(auditProecess.getSendName());
+		sendMessage.setMessageType(1);
+		sendMessage.setTenantId(AuthUtil.getTenantId());
+		sendMessage.setCreateUser(AuthUtil.getUserId());
+		sendMessage.setCreateTime(new Date());
+		sendMessage.setUrl(auditProecess.getUrl());
+		sendMessage.setPageLabel(auditProecess.getPageLabel());
+		sendMessage.setPageStatus(auditProecess.getPageStatus());
+
+		//用户操作 1.通过  2.驳回
+		Integer operate = auditProecess.getOperate();
+		//查看当前审批是否为最后一级
+		String iffinalItem = auditProecess.getIffinalItem();
+		//审批人
+		auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
+		//审批时间
+		auditProecess.setAuditOpTime(new Date());
+		//不是最后一级
+		if ("F".equals(iffinalItem)) {
+
+			//通过
+			if (operate == 1) {
+				//如果是第一级, 则修改状态为审批中
+				if (auditProecess.getLevelId() == 1) {
+					Settlement settlement = new Settlement();
+					settlement.setId(auditProecess.getSrcBillId());
+					settlement.setCheckStatus("审批中");
+					R submit = financeClient.submit(settlement);
+					if (!submit.isSuccess()) {
+						throw new SecurityException("审批开始修改审核状态失败");
+					}
+				}
+
+				auditProecess.setAuditStatus("A");
+				//查询下一级,开启待审
+				LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				auditProecessLambdaQueryWrapper
+					.eq(AuditProecess::getBatchNo, auditProecess.getBatchNo())
+					.eq(AuditProecess::getSrcBillId, auditProecess.getSrcBillId())
+					.eq(AuditProecess::getIsDelete, 0)
+					.eq(AuditProecess::getActId, auditProecess.getActId())
+					.eq(AuditProecess::getBillId, auditProecess.getBillId())
+					.eq(AuditProecess::getBillNo, auditProecess.getBillNo())
+					.eq(AuditProecess::getTenantId, AuthUtil.getTenantId())
+					.eq(AuditProecess::getLevelId, auditProecess.getLevelId() + 1);
+				Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
+				if (count != null && count > 1) {
+					throw new SecurityException("审核失败,获取下一级信息失败");
+				}
+				AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
+				if (proecess == null) {
+					throw new SecurityException("审批通过=>获取下一级信息失败");
+				}
+				proecess.setAuditStatus("S");
+				baseMapper.updateById(proecess);
+
+				SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
+				String corpName = null;
+				if (proecessTemp.getCorpId() != null) {
+					R<CorpsDesc> corpMessage = iCorpsDescClient.getCorpMessage(proecessTemp.getCorpId());
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						corpName = corpMessage.getData().getCname();
+					}
+				}
+				String orderDate = null;
+				if (proecessTemp.getBillId() != null) {
+					Order order = orderDescClient.getById(proecessTemp.getBillId());
+					if (order != null) {
+
+						orderDate = simpleDateFormat.format(order.getCreateTime());
+					}
+				}
+
+				Message message = new Message();
+				message.setUserName(AuthUtil.getUserName());
+				message.setUserId(AuthUtil.getUserId());
+				message.setParameter(String.valueOf(auditProecess.getBillId()));
+				message.setMessageType(1);
+				message.setTenantId(AuthUtil.getTenantId());
+				//付费申请模板
+				message.setMessageBody("您有代理订单审核,公司名:" + corpName + "," + "代理订单单号:" +
+					"" + proecessTemp.getBillNo() + "," + "订单日期:" + orderDate + ",请审核。"
+					+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+				);
+
+				message.setCreateUser(AuthUtil.getUserId());
+				message.setUrl("/approveData/index");
+				message.setCreateTime(new Date());
+
+				// 消息批量通知下一级
+				sendMsgToGroup(message, proecess.getAuditUserId());
+			}
+			//不通过
+			else if (operate == 2) {
+				auditProecess.setAuditStatus("B");
+				//todo 调用feign取消
+				R r = financeClient.passCancel(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改财务数据失败");
+				}
+
+				sendMessage.setMessageBody("您的代理订单审核未通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+
+		}
+		//是最后一级
+		else if ("T".equals(iffinalItem)) {
+			//通过
+			if (operate == 1) {
+				//todo 调用feign直接通过
+				auditProecess.setAuditStatus("A");
+				R r = financeClient.passCheck(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改财务数据失败");
+				}
+
+				sendMessage.setMessageBody("您的代理订单审核已通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",请继续操作");
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+			//不通过
+			else if (operate == 2) {
+				//todo 调用feign取消
+				auditProecess.setAuditStatus("B");
+				R r = financeClient.passCancel(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改财务数据失败");
+				}
+				sendMessage.setMessageBody("代理订单审核未通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		} else {
+			throw new SecurityException("审批异常,请联系管理员");
+		}
+
+		cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
+
+		//保存操作记录
+		auditProecess.setAuditMsg(auditProecess.getAuditMsg());
+		auditProecess.setAuditItem(new Date());
+		baseMapper.updateById(auditProecess);*/
+	}
+
 	private void sendMsgToGroup(Message message, String group) {
 		List<String> userList = Arrays.asList(group.split(","));
 		userList.forEach(user -> {

+ 8 - 9
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -69,6 +69,11 @@ public class CorpsDescClient implements ICorpsDescClient {
 		return R.data(service.getById(Id));
 	}
 
+	@Override
+	public CorpsDesc getCorpId(Long Id) {
+		return service.getCorpId(Id);
+	}
+
 	/**
 	 * 根据租户id查询所有客户详情
 	 *
@@ -164,19 +169,13 @@ 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);
+	public CorpsDesc getAgentCode(String code, String tenantId,String corpType) {
+		return service.selectCode(code,tenantId,corpType);
 	}
 
 	@Override
 	public List<CorpsDesc> getCorp(CorpsDesc corpsDesc) {
-		corpsDesc.setIsDeleted(0);
-		return service.list(new QueryWrapper<CorpsDesc>().setEntity(corpsDesc));
+		return service.getCorp(corpsDesc);
 	}
 
 	@Override

+ 25 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.java

@@ -1,5 +1,6 @@
 package org.springblade.client.corps.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -49,5 +50,29 @@ public interface CorpsDescMapper extends BaseMapper<CorpsDesc> {
 	 * @return
 	 */
 	List<Map<String,Object>> getCorpsMessage(@Param("corps") List<Long> corps);
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	CorpsDesc getCorpMessage(@Param("code") String code,
+								  @Param("tenantId") String tenantId,
+								  @Param("corpType") String corpType);
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	CorpsDesc getCorpId(@Param("id") Long id);
+
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	List<CorpsDesc> getCorp(@Param("CorpsDesc") CorpsDesc corpsDesc);
 
 }

+ 131 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsDescMapper.xml

@@ -213,4 +213,135 @@
             #{id}
         </foreach>
     </select>
+    <select id="getCorpMessage" resultMap="corpsDescResultMap">
+        select *
+        from basic_corps_desc
+        where is_deleted = 0
+          and code = #{code}
+          and tenant_id = #{tenantId}
+          and corp_type = #{corpType}
+    </select>
+    <select id="getCorpId" resultMap="corpsDescResultMap">
+        select *
+        from basic_corps_desc
+        where is_deleted = 0
+          and id = #{id}
+    </select>
+    <select id="getCorp" resultMap="corpsDescResultMap">
+        select *
+        from basic_corps_desc
+        where is_deleted = 0
+        <if test="CorpsDesc.id!=null">
+            and id = #{CorpsDesc.id}
+        </if>
+        <if test="CorpsDesc.isDeleted!=null">
+            and is_deleted = #{CorpsDesc.isDeleted}
+        </if>
+        <if test="CorpsDesc.code!=null and CorpsDesc.code != ''">
+            and code like CONCAT(CONCAT('%', #{CorpsDesc.code}), '%')
+        </if>
+        <if test="CorpsDesc.corpType!=null and CorpsDesc.corpType != ''">
+            and corp_type like CONCAT('%', #{CorpsDesc.corpType}, '%')
+        </if>
+        <if test="CorpsDesc.cname!=null and CorpsDesc.cname != ''">
+            and cname like CONCAT(CONCAT('%', #{CorpsDesc.cname}), '%')
+        </if>
+        <if test="CorpsDesc.enname!=null and CorpsDesc.enname != ''">
+            and enname = #{CorpsDesc.enname}
+        </if>
+        <if test="CorpsDesc.goodtypes!=null and CorpsDesc.goodtypes != ''">
+            and goodtypes like CONCAT(CONCAT('%', #{CorpsDesc.goodtypes}), '%')
+        </if>
+        <if test="CorpsDesc.companytype!=null and CorpsDesc.companytype != ''">
+            and companytype = #{CorpsDesc.companytype}
+        </if>
+        <if test="CorpsDesc.belongtoarea!=null and CorpsDesc.belongtoarea != ''">
+            and belongtoarea like CONCAT(CONCAT('%',  #{CorpsDesc.belongtoarea}), '%')
+        </if>
+        <if test="CorpsDesc.attn!=null and CorpsDesc.attn != ''">
+            and attn like CONCAT(CONCAT('%',  #{CorpsDesc.attn}), '%')
+        </if>
+        <if test="CorpsDesc.tel!=null and CorpsDesc.tel != ''">
+            and tel = #{CorpsDesc.tel}
+        </if>
+        <if test="CorpsDesc.position!=null and CorpsDesc.position != ''">
+            and id = #{CorpsDesc.position}
+        </if>
+        <if test="CorpsDesc.invioceTitle!=null and CorpsDesc.invioceTitle != ''">
+            and invioce_title = #{CorpsDesc.invioceTitle}
+        </if>
+        <if test="CorpsDesc.taxCode!=null and CorpsDesc.taxCode != ''">
+            and tax_code = #{CorpsDesc.taxCode}
+        </if>
+        <if test="CorpsDesc.invioceAddrTel!=null and CorpsDesc.invioceAddrTel != ''">
+            and invioce_addr_tel = #{CorpsDesc.invioceAddrTel}
+        </if>
+        <if test="CorpsDesc.accountName!=null and CorpsDesc.accountName != ''">
+            and account_name = #{CorpsDesc.accountName}
+        </if>
+        <if test="CorpsDesc.accountBank!=null and CorpsDesc.accountBank != ''">
+            and account_bank = #{CorpsDesc.accountBank}
+        </if>
+        <if test="CorpsDesc.accountNo!=null and CorpsDesc.accountNo != ''">
+            and account_no = #{CorpsDesc.accountNo}
+        </if>
+        <if test="CorpsDesc.accountNameFcy!=null and CorpsDesc.accountNameFcy != ''">
+            and account_name_fcy = #{CorpsDesc.accountNameFcy}
+        </if>
+        <if test="CorpsDesc.accountBankFcy!=null and CorpsDesc.accountBankFcy != ''">
+            and account_bank_fcy = #{CorpsDesc.accountBankFcy}
+        </if>
+        <if test="CorpsDesc.accountNoFcy!=null and CorpsDesc.accountNoFcy != ''">
+            and account_no_fcy = #{CorpsDesc.accountNoFcy}
+        </if>
+        <if test="CorpsDesc.addr!=null and CorpsDesc.addr != ''">
+            and addr = #{CorpsDesc.addr}
+        </if>
+        <if test="CorpsDesc.storageAddr!=null and CorpsDesc.storageAddr != ''">
+            and storage_addr = #{CorpsDesc.storageAddr}
+        </if>
+        <if test="CorpsDesc.subStorageAddr!=null and CorpsDesc.subStorageAddr != ''">
+            and sub_storage_addr = #{CorpsDesc.subStorageAddr}
+        </if>
+        <if test="CorpsDesc.creditstatus!=null and CorpsDesc.creditstatus != ''">
+            and creditstatus = #{CorpsDesc.creditstatus}
+        </if>
+        <if test="CorpsDesc.creditLevel!=null and CorpsDesc.creditLevel != ''">
+            and credit_level like CONCAT(CONCAT('%',  #{CorpsDesc.creditLevel}), '%')
+        </if>
+        <if test="CorpsDesc.adminProfiles!=null and CorpsDesc.adminProfiles != ''">
+            and (admin_profiles like CONCAT(CONCAT('%',  #{CorpsDesc.adminProfiles}), '%')
+            or admin_profiles = '' or admin_profiles IS NULL)
+        </if>
+        <if test="CorpsDesc.belongtocompany!=null and CorpsDesc.belongtocompany != ''">
+            and belongtocompany = #{CorpsDesc.belongtocompany}
+        </if>
+        <if test="CorpsDesc.creditGrant!=null">
+            and credit_grant = #{CorpsDesc.creditGrant}
+        </if>
+        <if test="CorpsDesc.creditDay!=null">
+            and credit_day = #{CorpsDesc.creditDay}
+        </if>
+        <if test="CorpsDesc.creditRate!=null">
+            and credit_rate = #{CorpsDesc.creditRate}
+        </if>
+        <if test="CorpsDesc.remarks!=null and CorpsDesc.remarks != ''">
+            and remarks = #{CorpsDesc.remarks}
+        </if>
+        <if test="CorpsDesc.version!=null and CorpsDesc.version != ''">
+            and version = #{CorpsDesc.version}
+        </if>
+        <if test="CorpsDesc.tenantId!=null and CorpsDesc.tenantId != ''">
+            and tenant_id = #{CorpsDesc.tenantId}
+        </if>
+        <if test="CorpsDesc.createUser!=null">
+            and create_user = #{CorpsDesc.createUser}
+        </if>
+        <if test="CorpsDesc.updateUser!=null">
+            and update_user = #{CorpsDesc.updateUser}
+        </if>
+        <if test="CorpsDesc.status!=null">
+            and status = #{CorpsDesc.status}
+        </if>
+    </select>
 </mapper>

+ 20 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java

@@ -16,8 +16,10 @@
  */
 package org.springblade.client.corps.service;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.client.corps.excel.*;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.vo.CorpsDescVO;
@@ -137,5 +139,23 @@ public interface ICorpsDescService extends IService<CorpsDesc> {
 	 * @return
 	 */
 	R importFactoryData(List<FactoryExcel> data, Boolean isCovered);
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	CorpsDesc selectCode(String code,String tenantId,String corpType);
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	CorpsDesc getCorpId(Long id);
+	/**
+	 * 查询客户信息
+	 *
+	 * @return
+	 */
+	List<CorpsDesc> getCorp(CorpsDesc corpsDesc);
 
 }

+ 15 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -571,6 +571,21 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 		return R.success("ok");
 	}
 
+	@Override
+	public CorpsDesc selectCode(String code, String tenantId, String corpType) {
+		return baseMapper.getCorpMessage(code,tenantId,corpType);
+	}
+
+	@Override
+	public CorpsDesc getCorpId(Long id) {
+		return baseMapper.getCorpId(id);
+	}
+
+	@Override
+	public List<CorpsDesc> getCorp(CorpsDesc corpsDesc) {
+		return baseMapper.getCorp(corpsDesc);
+	}
+
 
 	/**
 	 * 保护客户联系人信息

+ 2 - 3
blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java

@@ -158,9 +158,8 @@ public class GoodsDescClient implements IGoodsDescClient {
 	}
 
 	@Override
-	public GoodsDesc terraceCode(GoodsDesc goodsDesc) {
-		goodsDesc.setIsDeleted(0);
-		return goodsDescService.getOne(new QueryWrapper<GoodsDesc>().setEntity(goodsDesc));
+	public GoodsDesc terraceCode(String code,String tenantId) {
+		return goodsDescService.terraceCode(code,tenantId);
 	}
 
 	@Override

+ 10 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/mapper/GoodsDescMapper.java

@@ -1,5 +1,6 @@
 package org.springblade.client.goods.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.vo.GoodsDescVO;
@@ -53,5 +54,14 @@ public interface GoodsDescMapper extends BaseMapper<GoodsDesc> {
 	 * @return
 	 */
 	GoodsDescVO selectGoodsMessage(@Param("Id") Long Id);
+	/**
+	 * 获取商品信息
+	 *
+	 * @param code
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	GoodsDesc getTerraceCode(@Param("code") String code,
+							 @Param("tenantId") String tenantId);
 
 }

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

@@ -212,5 +212,15 @@
             and id = #{Id}
         </if>
     </select>
+    <select id="getTerraceCode" resultMap="goodsDescResultMap">
+        select
+        *
+        from
+        basic_goods_desc
+        where
+        is_deleted = 0
+        and code = #{code}
+        and tenant_id = #{tenantId}
+    </select>
 
 </mapper>

+ 8 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/IGoodsDescService.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.goods.service;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.client.corps.excel.CorpsExcel;
 import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.goods.excel.GoodsExcel;
@@ -99,4 +100,11 @@ public interface IGoodsDescService extends IService<GoodsDesc> {
 	 * 导入产品信息
 	 * */
 	R importGoodsInfo(List<GoodsInfoExcel> data,Boolean isCovered);
+
+	/**
+	 * 获取商品信息
+	 * @param code
+	 * @return
+	 */
+	GoodsDesc terraceCode(String code,String tenantId);
 }

+ 5 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -488,6 +488,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 		return R.success("ok");
 	}
 
+	@Override
+	public GoodsDesc terraceCode(String code,String tenantId) {
+		return baseMapper.getTerraceCode(code,tenantId);
+	}
+
 	private String getCnameInt(String cname) {
 		String regex = "[^0-9]";
 		Pattern p = Pattern.compile(regex);

+ 8 - 20
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java

@@ -1,6 +1,7 @@
 package org.springblade.mocha.feign;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import lombok.AllArgsConstructor;
 import org.checkerframework.checker.units.qual.A;
 import org.springblade.client.entity.CorpsDesc;
@@ -14,9 +15,11 @@ import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
 import org.springblade.mocha.service.ISalesPolicyItemService;
 import org.springblade.mocha.service.ISalesPolicyService;
+import org.springblade.mocha.vo.SalesPolicyItemVO;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
+import sun.text.CollatorUtilities;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -83,29 +86,14 @@ public class SalesPolicyClient implements ISalesPolicyClient {
 	}
 
 	@Override
-	public List<SalesPolicyItem> getSalesPolicy(String code, String tenantId) {
-		List<SalesPolicyItem> list = new ArrayList<>();
+	public List<SalesPolicyItemVO> getSalesPolicy(String code, String tenantId) {
 		//获取代理商信息
-		CorpsDesc agentCode = corpsDescClient.getAgentCode(code, tenantId);
+		CorpsDesc agentCode = corpsDescClient.getAgentCode(code, tenantId,"KH");
 		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 null;
 		}
-		return list;
+		//获取销售政策
+		return salesPolicyService.selectSales(tenantId,agentCode.getId().toString(),new Date());
 	}
 
 }

+ 16 - 1
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/mapper/SalesPolicyItemMapper.java

@@ -16,10 +16,15 @@
  */
 package org.springblade.mocha.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
 import org.springblade.mocha.vo.SalesPolicyItemVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -38,5 +43,15 @@ public interface SalesPolicyItemMapper extends BaseMapper<SalesPolicyItem> {
 	 * @return
 	 */
 	List<SalesPolicyItemVO> selectSalesPolicyItemPage(IPage page, SalesPolicyItemVO salesPolicyItem);
-
+	/**
+	 * 获取平台租户中客户对应的销售政策
+	 * @param tenantId 平台租户id
+	 * @param corps 客户/代理商
+	 * @param newTime 时间
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	List<SalesPolicyItemVO> selectSales(@Param("tenantId") String tenantId,
+								  @Param("corps") String corps,
+								  @Param("newTime") Date newTime);
 }

+ 26 - 1
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/mapper/SalesPolicyItemMapper.xml

@@ -32,5 +32,30 @@
     <select id="selectSalesPolicyItemPage" resultMap="salesPolicyItemResultMap">
         select * from basic_sales_policy_item where is_deleted = 0
     </select>
-
+    <select id="selectSales" resultType="org.springblade.mocha.vo.SalesPolicyItemVO">
+        SELECT
+        it.*,
+        sp.cname AS policy
+        FROM
+        basic_sales_policy_item it
+        LEFT JOIN
+        basic_sales_policy sp
+        ON it.pid = sp.id
+        WHERE
+        it.is_deleted = 0
+        AND sp.is_deleted = 0
+        AND sp.STATUS = 0
+        <if test="tenantId!=null and tenantId != ''">
+            and sp.tenant_id = #{tenantId}
+        </if>
+        <if test="newTime!=null">
+            and sp.start_time &lt;= #{newTime}
+        </if>
+        <if test="newTime!=null">
+            and sp.end_time &gt;= #{newTime}
+        </if>
+        <if test="corps!=null and corps != ''">
+            and sp.corps like CONCAT(CONCAT('%', #{corps}), '%')
+        </if>
+    </select>
 </mapper>

+ 12 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/ISalesPolicyService.java

@@ -16,14 +16,18 @@
  */
 package org.springblade.mocha.service;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tool.api.R;
 import org.springblade.mocha.entity.SalesPolicy;
+import org.springblade.mocha.entity.SalesPolicyItem;
 import org.springblade.mocha.excel.PriceItemExcel;
 import org.springblade.mocha.excel.SalesItemExcel;
+import org.springblade.mocha.vo.SalesPolicyItemVO;
 import org.springblade.mocha.vo.SalesPolicyVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -72,5 +76,13 @@ public interface ISalesPolicyService extends IService<SalesPolicy> {
 	 * @return
 	 */
 	R importSalesPolicy(List<SalesItemExcel> data, Boolean isCovered);
+	/**
+	 * 获取平台租户中客户对应的销售政策
+	 * @param tenantId 平台租户id
+	 * @param corps 客户/代理商
+	 * @param newTime 时间
+	 * @return
+	 */
+	List<SalesPolicyItemVO> selectSales(String tenantId, String corps, Date newTime);
 
 }

+ 6 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/SalesPolicyServiceImpl.java

@@ -34,6 +34,7 @@ import org.springblade.mocha.excel.SalesItemExcel;
 import org.springblade.mocha.mapper.SalesPolicyItemMapper;
 import org.springblade.mocha.mapper.SalesPolicyMapper;
 import org.springblade.mocha.service.ISalesPolicyService;
+import org.springblade.mocha.vo.SalesPolicyItemVO;
 import org.springblade.mocha.vo.SalesPolicyVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -228,6 +229,11 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		return R.data(list);
 	}
 
+	@Override
+	public List<SalesPolicyItemVO> selectSales(String tenantId, String corps, Date newTime) {
+		return salesPolicyItemMapper.selectSales(tenantId,corps,newTime);
+	}
+
 	private String getUserName(Long user) {
 		String userName = null;
 		R<User> create = userClient.userInfoById(user);

+ 206 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java

@@ -0,0 +1,206 @@
+package org.springblade.purchase.sales.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.enums.OrderTypeEnum;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.feign.IDeliveryClient;
+import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Acc;
+import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.purchase.sales.service.*;
+import org.springblade.purchase.sales.vo.OrderVO;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 平台代理订单 控制器
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/agencyOrder")
+@Api(value = "平台代理订单", tags = "平台代理订单")
+public class AgencyOrderController extends BladeController {
+	private final IOrderService orderService;
+	private final IOrderItemsService orderItemsService;
+	private final IOrderFeesService orderFeesService;
+	private final IOrderFilesService orderFilesService;
+	private final IOrderFreightService orderFreightService;
+	private final IOrderModifyService orderModifyService;
+	private final IOrderPartsService orderPartsService;
+	private final ICorpsDescClient corpsDescClient;//获取客户信息
+	private final IUserClient userClient;//获取用户信息
+	private final IFeesDescClient feesDescClient;
+	private final IFinanceClient iFinanceClient;
+	private final IDeliveryClient deliveryClient;
+
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入order")
+	public R<Order> detail(Order order) {
+		order.setIsDeleted(0);
+		order.setTenantId(SecureUtil.getTenantId());
+		Order detail = orderService.getOrderMessage(order);
+		return R.data(detail);
+	}
+
+	/**
+	 * 自定义分页 平台代理订单
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<Order>> page(OrderVO order, Query query) {
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
+		lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.AGENCY_ORDER.getType());//订单类型
+		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());//贸易类型
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStorageId()), Order::getStorageId, order.getStorageId());//仓库id
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractEndDate()), Order::getBusinesDate, order.getContractEndDate());//合同日期结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());//订单来源
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getShippingAddress()), Order::getShippingAddress, order.getShippingAddress());//发货地址
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getArrivalAddress()), Order::getArrivalAddress, order.getArrivalAddress());//到货地址
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getActualDeliveryDateStart()), Order::getActualDeliveryDate, order.getActualDeliveryDateStart());//发货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getActualDeliveryDateEnd()), Order::getActualDeliveryDate, order.getActualDeliveryDateEnd());//发货日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDeliveryStartDate()), Order::getRequiredDeliveryDate, order.getDeliveryStartDate());//要求发货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getDeliveryEndDate()), Order::getRequiredDeliveryDate, order.getDeliveryEndDate());//要求发货日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getArrivalDateStart()), Order::getRequiredArrivalDate, order.getArrivalDateStart());//要求到货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getArrivalDateEnd()), Order::getRequiredArrivalDate, order.getArrivalDateEnd());//要求到货日期结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderStatus()), Order::getOrderStatus, order.getOrderStatus());//单据状态
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getSysNo()), Order::getSysNo, order.getSysNo());//系统编号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getCreateTimeStart()), Order::getCreateTime, order.getCreateTimeStart());//制单日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getCreateTimeEnd()), Order::getCreateTime, order.getCreateTimeEnd());//制单日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDateValidityStart()), Order::getDateValidity, order.getDateValidityStart());//有效日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getDateValidityEnd()), Order::getDateValidity, order.getDateValidityEnd());//有效日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()), Order::getBusinesDate, order.getOrderStartDate());//订单日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()), Order::getBusinesDate, order.getOrderEndDate());//订单日期结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPortOfLoad()), Order::getPortOfLoad, order.getPortOfLoad());//装货港
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPortOfDestination()), Order::getPortOfDestination, order.getPortOfDestination());//目的港
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryStart()), Order::getPlannedDeliveryDate, order.getPlannedDeliveryStart());//计划交货开始
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryEnd()), Order::getPlannedDeliveryDate, order.getPlannedDeliveryEnd());//计划交货结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderRemark()), Order::getOrderRemark, order.getOrderRemark());//备注
+		lambdaQueryWrapper.orderByDesc(Order::getId);
+		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(page.getRecords())) {
+			page.getRecords().stream().forEach(item -> {
+				if (item.getCorpId() != null) {
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());//客户
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						item.setCorpsName(corpMessage.getData().getCname());
+					}
+				}
+				if (item.getBelongToCorpId() != null) {
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getBelongToCorpId());//销售公司
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						item.setBelongToCorpName(corpMessage.getData().getCname());
+					}
+				}
+				if (item.getProductionPlant() != null) {
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getProductionPlant());//销售公司
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						item.setProductionPlantName(corpMessage.getData().getCname());
+					}
+				}
+				R<User> user = userClient.userInfoById(item.getCreateUser());//制单人
+				if (user.isSuccess() && user.getData() != null) {
+					item.setCreateUserName(user.getData().getName());
+				}
+				//获取订单明细
+				List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
+				if (CollectionUtils.isNotEmpty(list)) {
+					item.setOrderQuantity(list.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//数量合计
+					item.setAmount(list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//销售金额
+					item.setPurchaseAmount(list.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//采购金额
+					item.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//发货数量
+				}
+			});
+		}
+		return R.data(page);
+	}
+	/**
+	 * 修改 销售或采购订单表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入order")
+	public R update(@Valid @RequestBody Order order) {
+		if (order.getId() == null) {
+			throw new SecurityException("请选择要删除的数据");
+		}
+		//先查订单信息
+		Order orderMessage = orderService.getById(order.getId());
+		//是否生成采购单
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getSrcOrderNo, orderMessage.getSysNo());
+		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.PURCHASE.getType());
+		List<Order> orderList = orderService.list(lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(orderList)) {
+			throw new SecurityException("销售单已生成采购单不能删除");
+		}
+		//是否生成发货单
+		List<Delivery> list = deliveryClient.getOrderMessage(orderMessage.getSysNo(), OrderTypeEnum.DOMESTIC.getType());
+		if (CollectionUtils.isNotEmpty(list)) {
+			throw new SecurityException("销售单已生成发货单不能删除");
+		}
+		//是否生成账单单
+		List<Acc> financeAcc = iFinanceClient.getFinanceAccList(orderMessage.getOrderNo(), OrderTypeEnum.DOMESTIC.getType());
+		if (CollectionUtils.isNotEmpty(financeAcc)) {
+			throw new SecurityException("销售单已生成账单不能删除");
+		}
+		order.setIsDeleted(1);
+		orderService.updateById(order);
+		orderItemsService.updateByPid(order.getId());
+		orderFeesService.updateByPid(order.getId());
+		orderFilesService.updateByPid(order.getId());
+		orderFreightService.updateByPid(order.getId());
+		orderModifyService.updateByPid(order.getId());
+		orderPartsService.updateByPid(order.getId());
+		return R.success("操作成功");
+	}
+	/**
+	 * 新增或修改 国内销售或采购订单表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R submit(@Valid @RequestBody Order order) {
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return orderService.saveOrderMessage(order);
+	}
+}

+ 1 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -109,6 +109,7 @@
         <result column="print_number" property="printNumber"/>
         <result column="corp_debt" property="corpDebt"/>
         <result column="num_to_english" property="numToEnglish"/>
+        <result column="generate" property="generate"/>
     </resultMap>
 
 

+ 13 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -303,4 +303,17 @@ public class StockGoodsClient implements IStockGoodsClient{
 			return Collections.EMPTY_LIST;
 		}
 	}
+
+	@Override
+	@GetMapping(GET_STOCK_NUMBER)
+	public BigDecimal getStockNumber(Long goodId, String tenantId) {
+		BigDecimal reduce=BigDecimal.ZERO;//库存
+		BigDecimal bigDecimal = stockGoodsService.selectStockNumber(tenantId, goodId);
+
+		if(bigDecimal != null)
+		{
+			reduce = bigDecimal;
+		}
+		return reduce;
+	}
 }

+ 11 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.stock.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -23,6 +24,7 @@ import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.vo.AppStockVO;
 import org.springblade.stock.vo.StockGoodsVO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -46,4 +48,13 @@ public interface StockGoodsMapper extends BaseMapper<StockGoods> {
 
 	List<AppStockVO> selectAppStockPage(IPage<AppStockVO> page, @Param("stock") AppStockVO appStockVO);
 
+	/**
+	 * 根据商品获取库存
+	 * @param tenantId 租户id
+	 * @param goodsId 商品
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	BigDecimal selectStockNumber(@Param("tenantId") String tenantId,@Param("goodsId") Long goodsId);
+
 }

+ 11 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -115,5 +115,16 @@
             </if>
         </where>
     </select>
+    <select id="selectStockNumber" resultType="BigDecimal">
+        SELECT
+	IFNULL(SUM(surplus_route_quantity),0) AS surplusQuantity
+FROM
+	business_stock_goods
+WHERE
+	is_deleted = 0
+	AND goods_id = #{goodsId}
+	AND tenant_id = #{tenantId}
+	GROUP BY goods_id
+    </select>
 
 </mapper>

+ 9 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java

@@ -19,12 +19,14 @@ package org.springblade.stock.service;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tool.api.R;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.excel.StockGoodsExcel;
 import org.springblade.stock.vo.AppStockVO;
 import org.springblade.stock.vo.StockGoodsVO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -99,5 +101,12 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	 * @return
 	 */
 	IPage<AppStockVO> selectAppStockPage(IPage<AppStockVO> page, AppStockVO appStockVO);
+	/**
+	 * 根据商品获取库存
+	 * @param tenantId 租户id
+	 * @param goodsId 商品
+	 * @return
+	 */
+	BigDecimal selectStockNumber(String tenantId,Long goodsId);
 
 }

+ 5 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -296,4 +296,9 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		return page.setRecords(baseMapper.selectAppStockPage(page, appStockVO));
 	}
 
+	@Override
+	public BigDecimal selectStockNumber(String tenantId, Long goodsId) {
+		return baseMapper.selectStockNumber(tenantId,goodsId);
+	}
+
 }

+ 7 - 8
blade-service/trade-purchase/src/main/java/com/trade/purchase/dealer/PurchaseContract.java

@@ -26,6 +26,7 @@ import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.client.feign.IStorageClient;
 import org.springblade.client.vo.GoodsDescVO;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.CollectionUtil;
@@ -51,7 +52,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 @RequestMapping("/purchaseContract")
 @Api(value = "经销商采购合同", tags = "经销商采购合同")
-public class PurchaseContract {
+public class PurchaseContract extends BladeController {
 	private final IOrderService orderService;
 
 	private final IOrderFeesService orderFeesService;
@@ -386,10 +387,10 @@ public class PurchaseContract {
 	}
 	//经销商采购合同审批
 	//经销商采购合同提交平台生成平台销售订单
-	@PostMapping("/createOrder")
+	@GetMapping("/createOrder")
 	@ApiOperationSupport(order = 12)
 	@ApiOperation(value = "提交平台", notes = "传入order 主表id")
-	public R createOrder(@Valid @RequestBody Order order){
+	public R createOrder(Order order){
 		if (order.getId() == null){
 			throw new SecurityException("请选择要提交的订单");
 		}
@@ -397,12 +398,10 @@ public class PurchaseContract {
 		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
 		return purchaseService.createOrder(order);
 	}
-	@PostMapping("/getGoodStock")
-	@ApiOperationSupport(order = 12)
+	@GetMapping("/getGoodStock")
+	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "获取商品信息", notes = "传入order 主表id")
-	public R getGoodStock(@Valid @RequestBody OrderVO order){
-		order.setBillType(OrderTypeEnum.AGENCY_ORDER.getType());
-		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+	public R getGoodStock(Order order){
 		return purchaseService.getGoodStock(order);
 	}
 }

+ 9 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.java

@@ -8,6 +8,7 @@ import com.trade.purchase.order.vo.OrderDTO;
 import com.trade.purchase.order.vo.OrderItemsVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -29,4 +30,12 @@ public interface OrderItemsMapper extends BaseMapper<OrderItems> {
 
 	IPage<OrderDTO>  listOrderItem(IPage<OrderDTO> iPage, @Param("tradeType") String tradeType,@Param("orderNo") String orderNo,@Param("corpId")  Long corpId,@Param("startDate")  String startDate, @Param("endDate") String endDate);
 
+	/**
+	 * 经销商获取近60天销售数据
+	 * @param tradeType 贸易类型
+	 * @param tenantId  租户id
+	 * @param billType  订单类型
+	 * @return
+	 */
+	BigDecimal orderNumber(@Param("tradeType") String tradeType,@Param("tenantId") String tenantId,@Param("billType") String billType);
 }

+ 20 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.xml

@@ -90,7 +90,7 @@
         business_order a,
         business_order_items b
         WHERE
-        a.id = b.pid
+        a.id = b.pidc
         and b.order_quantity>b.actual_quantity
         and a.bill_type='CG'
         and a.trade_type=#{tradeType}
@@ -106,5 +106,24 @@
             and a.create_time between #{startDate} and #{endDate}
         </if>
     </select>
+    <select id="orderNumber" resultType="BigDecimal">
+        SELECT
+            IFNULL(SUM(it.order_quantity),0) AS quantuty
+        FROM
+            business_order_items it
+        LEFT JOIN
+            business_order io
+            ON it.pid = io.id
+        WHERE
+            io.is_deleted = 0
+            AND it.is_deleted = 0
+            AND it.item_id = '123'
+            AND io.tenant_id = #{tenantId}
+            AND io.trade_type = #{tradeType}
+            AND io.bill_type = #{billType}
+            AND io.busines_date &gt;= (select adddate(now(),interval -1 day))
+            AND io.busines_date &lt;= (select NOW())
+            GROUP BY item_id
+    </select>
 
 </mapper>

+ 1 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

@@ -107,6 +107,7 @@
         <result column="print_number" property="printNumber"/>
         <result column="corp_debt" property="corpDebt"/>
         <result column="num_to_english" property="numToEnglish"/>
+        <result column="generate" property="generate"/>
     </resultMap>
 
 

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

@@ -18,7 +18,7 @@ public interface IPurchaseService extends IService<Order> {
 	 */
 	R createOrder(Order order);
 	/**
-	 * 经销商获取商品信息
+	 * 经销商采购合同导入商品信息
 	 * @param order
 	 * @return
 	 */

+ 135 - 28
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/PurchaseServiceImpl.java

@@ -7,12 +7,17 @@ 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.enums.OrderTypeEnum;
 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.check.dto.AuditProecessDTO;
+import org.springblade.check.entity.AuditPathsActs;
+import org.springblade.check.entity.AuditPathsLevels;
+import org.springblade.check.feign.ICheckClient;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.entity.GoodsType;
@@ -20,10 +25,12 @@ 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.AuthUtil;
 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.mocha.vo.SalesPolicyItemVO;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ITenantClient;
@@ -32,9 +39,7 @@ 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;
+import java.util.*;
 
 @Service
 @AllArgsConstructor
@@ -46,6 +51,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 	private ICorpsDescClient corpsDescClient;
 	private IStockGoodsClient stockGoodsClient;//查询库存账对外访问接口
 	private ISalesPolicyClient salesPolicyClient;//获取政策信息
+	private final ICheckClient iCheckClient;
 	/**
 	 * 生成系统编号
 	 */
@@ -56,9 +62,22 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 	public R createOrder(Order order) {
 		//查询采购合同主表信息
 		Order orderMessage = orderMapper.selectById(order.getId());
+		//查询采购合同明细信息
+		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.isEmpty(orderItemsList)){
+			throw new SecurityException("未找到采购合同明细");
+		}
 		if (orderMessage == null){
 			throw new SecurityException("未找到采购合同");
 		}
+		if (orderMessage.getGenerate() == 1){
+			throw new SecurityException("采购合同已提交平台,请勿重复提交");
+		}
 		//获取平台租户id
 		Tenant tenant = tenantClient.tenantMessage(SecureUtil.getTenantId());
 		if (tenant == null){
@@ -71,7 +90,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 			throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
 		}
 		//获取客户信息
-		CorpsDesc agentCode = corpsDescClient.getAgentCode(tenant.getCorpCode(), tenant.getTerrace());
+		CorpsDesc agentCode = corpsDescClient.getAgentCode(tenant.getCorpCode(), tenant.getTerrace(),"KH");
 		if (agentCode == null){
 			throw new SecurityException("在平台上未找到对应的客户信息,请通知平台维护");
 		}
@@ -85,14 +104,10 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 			packageRemarks = "无包装";
 		}
 		//获取客户对应的所属公司
-		R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(Long.valueOf(agentCode.getBelongtocompany()));
-		if (!corpMessage.isSuccess()){
-			throw new SecurityException("获取客户对应的所属公司失败");
-		}
-		if (corpMessage.getData() == null){
+		CorpsDesc corpsDesc = corpsDescClient.getCorpId(Long.valueOf(agentCode.getBelongtocompany()));
+		if (corpsDesc == null){
 			throw new SecurityException("未找到客户对应的所属公司信息");
 		}
-		CorpsDesc corpsDesc = corpMessage.getData();//所属公司信息
 		//获取所属公司对应的供应商
 		CorpsDesc desc = new CorpsDesc();
 		desc.setCorpType("GYS");
@@ -111,6 +126,8 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 		purchase.setBusinesDate(new Date());//订单日期
 		//purchase.setCreateUser(SecureUtil.getUserId());
 		purchase.setCreateTime(new Date());
+		purchase.setSrcOrderNo(orderMessage.getOrderNo());//来源订单号
+		purchase.setSrcId(orderMessage.getId());//来源id
 		purchase.setPaymentType("预付");//付款方式
 		purchase.setRequiredDeliveryDate(new Date());//要求发货日期
 		purchase.setRequiredArrivalDate(new Date());//要求到货日期
@@ -121,6 +138,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 		purchase.setBanksAccountName(corpsDesc.getAccountName());//公司户头
 		purchase.setAccountBank(corpsDesc.getAccountBank());//开户银行
 		purchase.setShippingAddress(supplier.getStorageAddr());//发货地址
+		purchase.setStatus(1);
 		purchase.setArrivalAddress(agentCode.getStorageAddr());//到货地址
 		//生成系统编号
 		R billNo = serialClient.getNo(purchase.getBillType(), purchase.getTradeType(), purchase.getBillType(),tenant.getTerrace());
@@ -137,13 +155,6 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 		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 ->{
@@ -154,10 +165,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 				//获取代理商商品信息
 				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);
+					GoodsDesc terraceCode = goodsDescClient.terraceCode(goods.getData().getTerraceCode(),tenant.getTerrace());
 					if (terraceCode == null){
 						throw new SecurityException("平台未找到对应的商品,请通知平台维护");
 					}
@@ -191,6 +199,64 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 				orderItemsMapper.insert(orderItems);
 			});
 		}
+		//修改原订单信息
+		Order deal = new Order();
+		deal.setId(orderMessage.getId());
+		deal.setGenerate(1);
+		deal.setOrderStatus("提交平台审核");
+		orderMapper.updateById(deal);
+		//生成平台审核数据
+		AuditPathsActs pathsActs = iCheckClient.getApprovalActId(14, "status",tenant.getTerrace());
+		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
+			throw new SecurityException("当前租户未查询到审批流配置");
+		} else {
+			//获取审批级次
+			List<AuditPathsLevels> auditPathsLevels = iCheckClient.listApproval(14, "status",tenant.getTerrace());
+			if (CollectionUtils.isEmpty(auditPathsLevels)) {
+				throw new SecurityException("开启审批失败:未查询到审批信息");
+			}
+			//修改订单信息
+			AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
+			// 绑定审核类型
+			auditProecessDTO.setCheckType("dldd");//代理订单
+			// 追加跳转路由url
+			auditProecessDTO.setUrl("/businessManagement/proxyOrder/index");
+			auditProecessDTO.setPageStatus("this.$store.getters.domSaleStatus");
+			auditProecessDTO.setPageLabel("代理订单(N)");
+			//增加审批类型
+			auditProecessDTO.setProcessType("代理订单审批");
+			LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderItemsLambdaQueryWrapper
+				.eq(OrderItems::getGoodType, 0)
+				.eq(OrderItems::getPid, purchase.getId())
+				.eq(OrderItems::getIsDeleted, 0);
+			List<OrderItems> orderItems = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(orderItems)) {
+				auditProecessDTO.setOrderQuantity(orderItems.stream().map(OrderItems::getOrderQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setAmount(orderItems.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			} else {
+				auditProecessDTO.setOrderQuantity(BigDecimal.ZERO);
+				auditProecessDTO.setAmount(BigDecimal.ZERO);
+			}
+			auditProecessDTO.setOrderRemark(purchase.getOrderRemark());
+			auditProecessDTO.setGrossProfit(purchase.getGrossProfit());
+			auditProecessDTO.setGrossProfitRate(purchase.getGrossProfitRate());
+			auditProecessDTO.setCorpId(purchase.getCorpId());
+			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
+			auditProecessDTO.setActId(1);
+			auditProecessDTO.setSrcBillId(purchase.getId());
+			auditProecessDTO.setBillId(purchase.getId());
+			auditProecessDTO.setBillNo(purchase.getOrderNo());
+			auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+			auditProecessDTO.setSendName(AuthUtil.getUserName());
+			auditProecessDTO.setSendTime(new Date());
+			auditProecessDTO.setTenantId(tenant.getTerrace());
+			R financeProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
+			if (!financeProcess.isSuccess()) {
+				throw new SecurityException("操作失败,请联系管理员");
+			}
+
+		}
 		return R.success("操作成功");
 	}
 
@@ -209,16 +275,57 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
 			throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
 		}
 		//获取平台销售政策  需将平台编码转成代理商编码
-		List<SalesPolicyItem> salesPolicy = salesPolicyClient.getSalesPolicy(tenant.getCorpCode(), tenant.getTerrace());
-		if (CollectionUtils.isEmpty(salesPolicy)){
+		List<SalesPolicyItemVO> salesPolicy = salesPolicyClient.getSalesPolicy(tenant.getCorpCode(), tenant.getTerrace());
+		if (CollectionUtils.isNotEmpty(salesPolicy)){
 			salesPolicy.stream().forEach(item ->{
+				//获取代理商商品信息
+				OrderItemsVO orderItemsVO = new OrderItemsVO();
+				GoodsDesc terraceCode = goodsDescClient.getTerraceCode(item.getCode(), SecureUtil.getTenantId());
+				if (terraceCode == null){
+					throw new SecurityException("未找到商品"+item.getCode());
+				}
+				orderItemsVO.setCode(terraceCode.getCode());
+				orderItemsVO.setCname(terraceCode.getCname());
+
+				orderItemsVO.setItemId(terraceCode.getId());
+				//获取商品分类
+				GoodsType goodsType = goodsDescClient.goodTypeId(terraceCode.getId());
+				orderItemsVO.setPriceCategory(goodsType.getCname());//产品分类
+				orderItemsVO.setPriceType(item.getPolicy());//价格类别
+				orderItemsVO.setTypeno(terraceCode.getTypeno());//规格型号
+				orderItemsVO.setBrandItem(terraceCode.getBrandItem());//花纹
+				orderItemsVO.setSize(terraceCode.getSize());//尺寸
+				orderItemsVO.setCorpId(terraceCode.getCorpId());//供应商id
+				orderItemsVO.setCorpName(terraceCode.getCorpName());//供应商名称
+				orderItemsVO.setShopQuality(0);//质量胎
+				orderItemsVO.setOrderQuantity(item.getOrderQuantity());//数量
+				orderItemsVO.setActualQuantity(BigDecimal.ZERO);//发货数量
+				orderItemsVO.setPurchaseAmount(item.getPurchaseAmount());//采购价格
+				orderItemsVO.setPrice(item.getSalesPrice());//最新价格
+				//orderItemsVO.setAmount(orderItemsVO.getOrderQuantity().multiply(orderItemsVO.getPrice()));//金额
+				orderItemsVO.setIntegral(BigDecimal.ZERO);//赠送积分
+				orderItemsVO.setIntegralMultiples(BigDecimal.ZERO);//积分倍数
+				orderItemsVO.setCartonWeight(terraceCode.getCartonWeight());//重量
+				orderItemsVO.setCntrVolumn(terraceCode.getCntrVolumn());//体积
+				//获取平台库存
+				orderItemsVO.setPlatformInventory(stockGoodsClient.getStockNumber(item.getItemId(),tenant.getTerrace()));
+				//获取代理商库存
+				orderItemsVO.setStorageQuantity(stockGoodsClient.getStockNumber(terraceCode.getId(),SecureUtil.getTenantId()));//库存数量
+				//获取最近六十天销售
+				BigDecimal bigDecimal = orderItemsMapper.orderNumber(OrderTypeEnum.DEALER.getType(), SecureUtil.getTenantId(), OrderTypeEnum.SALES.getType());
+				if (bigDecimal != null){
+					orderItemsVO.setSalesVolume(bigDecimal);
+				}else {
+					orderItemsVO.setSalesVolume(BigDecimal.ZERO);
+				}
 
+				list.add(orderItemsVO);
 			});
 		}
-		//获取平台库存
-		//获取代理商库存
-		//获取最近六十天销售
-		//
-		return null;
+		//政策不为空,按销量倒叙排序
+		if (CollectionUtils.isNotEmpty(list)){
+			list.sort(Comparator.comparing(OrderItemsVO::getSalesVolume).reversed());
+		}
+		return R.data(list);
 	}
 }