فهرست منبع

2022年11月3日18:23:50

纪新园 3 سال پیش
والد
کامیت
f88b116fea
16فایلهای تغییر یافته به همراه357 افزوده شده و 25 حذف شده
  1. 6 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java
  2. 25 1
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java
  3. 10 2
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  4. 4 4
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java
  5. 2 2
      blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java
  6. 2 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  7. 34 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  8. 38 13
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java
  9. 5 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  10. 161 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  11. 20 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java
  12. 1 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  13. 15 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  14. 32 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  15. 1 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java
  16. 1 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

+ 6 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java

@@ -326,4 +326,10 @@ public class GoodsDesc implements Serializable {
 	@TableField(exist = false)
 	private List<StockGoods> stockGoodsList;
 
+	/**
+	 * 库存数据
+	 */
+	@TableField(exist = false)
+	private StockGoods stockGoods;
+
 }

+ 25 - 1
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java

@@ -30,6 +30,7 @@ public interface IStockGoodsClient {
 	String GET_STOCK_NUMBER = API_PREFIX + "/getStockNumber";
 	String UPDATE_STOCK_GOODS = API_PREFIX + "/updateStockGoods";
 	String GET_STOCK_GOODS_ALL = API_PREFIX + "/selectStockGoodsAll";
+	String SELECT_STOCK_PARTS = API_PREFIX + "/selectStockParts";
 
 
 	@GetMapping("/stockgoods/stocklist")
@@ -75,6 +76,29 @@ public interface IStockGoodsClient {
 								@RequestParam(value = "tradeType",required = false)String tradeType);
 
 	/**
+	 * 查询库存总账 是否存在
+	 * @param corpId 客户id
+	 * @param storageId 仓库id
+	 * @param goodId 商品id
+	 * @param itemType 产品规格型号
+	 * @param lotNo 批次号
+	 * @param cntrNo 箱号
+	 * @param billNo 提单号
+	 * @param contractNumber 合同号
+	 * @return
+	 */
+	@GetMapping(SELECT_STOCK_PARTS)
+	R<StockGoodsVO> selectStockParts(@RequestParam(value = "corpId",required = false)Long corpId,
+								@RequestParam(value = "storageId",required = false)Long storageId,
+								@RequestParam("goodId")Long goodId,
+								@RequestParam(value = "itemType",required = false)String itemType,
+								@RequestParam(value = "lotNo",required = false)String lotNo,
+								@RequestParam(value = "cntrNo",required = false)String cntrNo,
+								@RequestParam(value = "billNo",required = false)String billNo,
+								@RequestParam(value = "contractNumber",required = false)String contractNumber,
+								@RequestParam(value = "tradeType",required = false)String tradeType);
+
+	/**
 	 * 新增库存总账
 	 * @param stockGoods
 	 * @return
@@ -120,7 +144,7 @@ public interface IStockGoodsClient {
 	StockGoods getOneStock(@RequestBody StockGoods stockGoods);
 
 	@GetMapping(LIST_STOCK_BY_CONDITIONS)
-    List<StockGoods> listStockByCondition( StockGoods stockGoods);
+    List<StockGoods> listStockByCondition(@RequestBody StockGoods stockGoods);
 
 	@PostMapping(POST_LIST_STOCK_BY_CONDITIONS)
     List<StockGoods> postListStockByCondition(@RequestBody StockGoods stockGoods);

+ 10 - 2
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -55,6 +55,7 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.stock.vo.StockGoodsVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -540,7 +541,8 @@ public class GoodsDescController extends BladeController {
 							 @RequestParam(name = "cname", required = false) String cname,
 							 @RequestParam(name = "typeno", required = false) String typeno,
 							 @RequestParam(name = "brandItem", required = false) String brandItem,
-							 @RequestParam(name = "brand", required = false) String brand
+							 @RequestParam(name = "brand", required = false) String brand,
+							 @RequestParam(name = "storageId", required = false) Long storageId
 	) {
 		LambdaQueryWrapper<GoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
@@ -563,12 +565,18 @@ public class GoodsDescController extends BladeController {
 			//获取本商品库存
 			StockGoods stockGoods = new StockGoods();
 			stockGoods.setGoodsId(good.getId());
-			List<StockGoods> stockGoodsList = stockGoodsClient.listStockByCondition(stockGoods);
+			List<StockGoods> stockGoodsList = stockGoodsClient.postListStockByCondition(stockGoods);
 			if (stockGoodsList.size() > 0) {
 				good.setStockGoodsList(stockGoodsList);
 			}else{
 				good.setStockGoodsList(new ArrayList<>());
 			}
+			if (ObjectUtils.isNotNull(storageId)){
+				R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, storageId, good.getId(), null, null, null, null, null, null);
+				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+					good.setStockGoods(r.getData());
+				}
+			}
 		});
 
 		return R.data(iPage);

+ 4 - 4
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java

@@ -122,13 +122,13 @@ public class GoodsDescPartsController extends BladeController {
 		//获取本商品库存
 		StockGoods stockGoods = new StockGoods();
 		stockGoods.setGoodsId(goodsId);
-		List<StockGoods> stockGoodsList = stockGoodsClient.listStockByCondition(stockGoods);
+		List<StockGoods> stockGoodsList = stockGoodsClient.postListStockByCondition(stockGoods);
 		if (stockGoodsList.size()>0){
 			goodsDescDto.setStockGoodsList(stockGoodsList);
 		}else{
 			goodsDescDto.setStockGoodsList(new ArrayList<>());
 		}
-		R<StockGoodsVO> r = stockGoodsClient.selectStock(null, storageId, goodsId, null, null, null, null, null, null);
+		R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, storageId, goodsId, null, null, null, null, null, null);
 		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 			goodsDescDto.setStockGoods(r.getData());
 		}
@@ -145,7 +145,7 @@ public class GoodsDescPartsController extends BladeController {
 
 	@PostMapping("/delete")
 	public R delete(@RequestParam(name = "id") String id) {
-		R<StockGoodsVO> r = stockGoodsClient.selectStock(null, null, Long.parseLong(id), null, null, null, null, null, null);
+		R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, null, Long.parseLong(id), null, null, null, null, null, null);
 		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 			throw new RuntimeException("该产品已有库存不删除");
 		}
@@ -164,7 +164,7 @@ public class GoodsDescPartsController extends BladeController {
 		if (ObjectUtils.isNotNull(ids)) {
 			String[] arrs = ids.split(",");
 			for (String arr : arrs) {
-				R<StockGoodsVO> r = stockGoodsClient.selectStock(null, null, Long.parseLong(arr), null, null, null, null, null, null);
+				R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, null, Long.parseLong(arr), null, null, null, null, null, null);
 				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 					throw new RuntimeException("该产品已有库存不删除");
 				}

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

@@ -708,7 +708,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 					k.setGoodsId(goodsDesc.getId());
 					k.setCreateTime(new Date());
 					k.setCreateUser(SecureUtil.getUserId());
-					R<StockGoodsVO> r = stockGoodsClient.selectStock(null, k.getStorageId(), goodsDesc.getId(), null, null, null, null, null, null);
+					R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, k.getStorageId(), goodsDesc.getId(), null, null, null, null, null, null);
 					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 						stockGoodsClient.updateStock(k);
 					}else{
@@ -752,7 +752,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 						k.setGoodsId(goodsDesc.getId());
 						k.setCreateTime(new Date());
 						k.setCreateUser(SecureUtil.getUserId());
-						R<StockGoodsVO> r = stockGoodsClient.selectStock(null, k.getStorageId(), goodsDesc.getId(), null, null, null, null, null, null);
+						R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, k.getStorageId(), goodsDesc.getId(), null, null, null, null, null, null);
 						if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 							stockGoodsClient.updateStock(k);
 						}else{

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

@@ -303,4 +303,6 @@ public interface OrderMapper extends BaseMapper<Order> {
 					   @Param("tradeType") String tradeType);
 
     BigDecimal selectStorageAmount(@Param("order") OrderVO order);
+
+    List<Order> selectPageByCorp(IPage<Order> page, @Param("order") Order order);
 }

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

@@ -2578,6 +2578,40 @@ ORDER BY
             </if>
         </where>
     </select>
+    <select id="selectPageByCorp" resultType="org.springblade.purchase.sales.entity.Order">
+        select
+        corp_id AS corpId,
+        sum(balance_amount) AS balanceAmount
+        from
+        business_order
+        where
+        is_deleted = 0
+        <if test="order.tradeType != null and order.tradeType != ''">
+            AND trade_type = #{order.tradeType}
+        </if>
+        <if test="order.billType != null and order.billType != ''">
+            AND bill_type = #{order.billType}
+        </if>
+        <if test="order.confirmStatus != null and order.confirmStatus != ''">
+            AND confirm_status = #{order.confirmStatus}
+        </if>
+        <if test="order.tenantId != null and order.tenantId != ''">
+            AND tenant_id = #{order.tenantId}
+        </if>
+        <if test="order.corpId != null">
+            AND corp_id = #{order.corpId}
+        </if>
+        <if test="order.orderStartDate!=null and order.orderStartDate != ''">
+            and DATE_FORMAT(busines_date,'%Y-%m-%d') &gt;= DATE_FORMAT(#{order.orderStartDate},'%Y-%m-%d')
+        </if>
+        <if test="order.orderEndDate!=null and order.orderEndDate != ''">
+            and DATE_FORMAT(busines_date,'%Y-%m-%d') &lt;= DATE_FORMAT(#{order.orderEndDate},'%Y-%m-%d')
+        </if>
+        <if test="order.modular != null and order.modular != '' and order.modular == 1">
+            AND debit_amount &gt; settlment_amount
+        </if>
+        group by corp_id
+    </select>
     <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
         UPDATE business_stock_goods SET surplus_route_quantity = #{surplusRouteQuantity},locking_quantity = #{lockingQuantity} WHERE tenant_id = #{tenantId} AND id = #{id} AND is_deleted = 0
     </update>

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

@@ -308,6 +308,7 @@ public class AppPartsController extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
 		lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.SALES.getType());
 		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.PARTS.getType());
+		lambdaQueryWrapper.eq(Order::getConfirmStatus,1);
 		List<Order> orderList = orderService.list(lambdaQueryWrapper);
 
 		BigDecimal total = new BigDecimal("0.00");
@@ -360,19 +361,9 @@ public class AppPartsController extends BladeController {
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入order")
 	public R<IPage<Order>> selectPageByCorp(OrderVO order, Query query) {
-		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
-		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
-		lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
-		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()), Order::getBusinesDate, order.getOrderStartDate());//订单日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()), Order::getBusinesDate, order.getOrderEndDate());//订单日期结束
-		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getBillType()), Order::getBillType, order.getBillType());
-		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getTradeType()), Order::getTradeType, order.getTradeType());
-		if ("1".equals(order.getModular())) {
-			lambdaQueryWrapper.apply("debit_amount > settlment_amount");
-		}
-//		lambdaQueryWrapper.groupBy(Order::getCorpId);
-		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setConfirmStatus(1);
+		IPage<Order> page = orderService.selectPageByCorp(Condition.getPage(query), order);
 
 		String corpIds = "";//客户拼接
 		for (Order orders : page.getRecords()) {
@@ -397,4 +388,38 @@ public class AppPartsController extends BladeController {
 		return R.data(page);
 	}
 
+
+	/**
+	 * 新增或修改 经销商销售或采购订单表(app)
+	 */
+	@PostMapping("/quickBilling")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R quickBilling(@Valid @RequestBody Order order) {
+		order.setTradeType(OrderTypeEnum.PARTS.getType());
+		return orderService.quickBilling(order);
+	}
+
+	/**
+	 * app营业分析
+	 *
+	 * @return
+	 */
+	@GetMapping("/turnoverAnalysis")
+	@ApiOperation(value = "app营业分析", notes = "传入参数")
+	public R<Map<String,Object>> turnoverAnalysis(@RequestParam("type") String type,
+							  @RequestParam("statusDate") String statusDate,
+							  @RequestParam("endDate") String endDate) {
+		Map<String,Object> map = new HashMap<>();
+		BigDecimal income = new BigDecimal("0.00");
+		BigDecimal expenditure = new BigDecimal("0.00");
+		BigDecimal profit = new BigDecimal("0.00");
+		BigDecimal cost = new BigDecimal("0.00");
+		map.put("income",income);
+		map.put("expenditure",expenditure);
+		map.put("profit",profit);
+		map.put("cost",cost);
+		return R.data(map);
+	}
+
 }

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.purchase.sales.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -372,4 +373,8 @@ public interface IOrderService extends IService<Order> {
     BigDecimal selectStorageAmount(OrderVO order);
 
 	R collectPayment(Order order);
+
+	IPage<Order> selectPageByCorp(IPage<Order> page, Order order);
+
+	R quickBilling(Order order);
 }

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

@@ -529,6 +529,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		order.setDebitAmount(order.getOrderAmount());
 		order.setBalanceAmount(order.getOrderAmount());
+		order.setPurchaseAmount(order.getOrderAmount());
 		baseMapper.updateById(order);
 		return R.data(order);
 	}
@@ -2256,6 +2257,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			settlement.setSettlementDate(new Date());
 			settlement.setAccount(order.getAccount());
 			settlement.setAmount(order.getCurrentAmount());
+			settlement.setOverPayment(order.getOverPayment());
 			settlementList.add(settlement);
 			order.setSettlementList(settlementList);
 			this.paymentApply(order, order.getBillType(), order.getTradeType());
@@ -2271,6 +2273,165 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
+	public IPage<Order> selectPageByCorp(IPage<Order> page, Order order) {
+		return page.setRecords(baseMapper.selectPageByCorp(page, order));
+	}
+
+	@Override
+	public R quickBilling(Order order) {
+		// 校验单号重复-新增
+		if (order.getId() == null && StringUtils.isNotBlank(order.getOrderNo())) {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		// 校验单号重复-编辑
+		else {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.ne(Order::getId, order.getId())
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		// 订单时间
+		Date date = new Date();
+		// 保存订单主表信息
+		if (order.getId() == null) {
+			// 获取系统编号
+			R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			order.setSysNo((String) billNo.getData());
+			R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			order.setOrderNo((String) clientBillNo.getData());
+			// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+			if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+				order.setOrgOrderNo((String) clientBillNo.getData());
+			}
+
+			order.setTenantId(SecureUtil.getTenantId());
+			order.setCreateTime(date);
+			order.setCreateUser(SecureUtil.getUserId());
+			if (order.getBusinesDate() == null) {
+				order.setBusinesDate(date);
+			}
+			baseMapper.insert(order);
+		} else {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getId, order.getId())
+				.eq(Order::getCorpId, order.getCorpId())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count <= 0) {
+				R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+				if (!clientBillNo.isSuccess()) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					return R.fail(500, "生成订单编号失败");
+				}
+				order.setOrderNo((String) clientBillNo.getData());
+				// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+				if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+					order.setOrgOrderNo((String) clientBillNo.getData());
+				}
+			}
+			order.setTenantId(SecureUtil.getTenantId());
+			order.setUpdateTime(date);
+			order.setUpdateUser(SecureUtil.getUserId());
+			baseMapper.updateById(order);
+		}
+		if (ObjectUtils.isNotNull(order.getCorpId())) {
+			CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getCorpId());
+			if (ObjectUtils.isNotNull(corpsDesc)) {
+				if (ObjectUtils.isNotNull(corpsDesc.getCorpsAddrList()) && corpsDesc.getCorpsAddrList().size() > 0) {
+					order.setArrivalAddress(corpsDesc.getCorpsAddrList().get(0).getDetailedAddress());
+				}
+			}
+		}
+		// 保存订单明细
+		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+			for (OrderItems orderItems : order.getOrderItemsList()) {
+				orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+				BigDecimal stockPrice = new BigDecimal("0.00");
+				BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
+				BigDecimal balanceQuantity = new BigDecimal("0.00");
+				BigDecimal balanceAmount = new BigDecimal("0.00");
+				//获取本商品库存
+				R<StockGoodsVO> r = stockGoodsClient.selectStock(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+					if ("XS".equals(order.getBillType())) {
+						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+						balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
+						r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
+						r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getAmount()));
+					} else {
+						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
+						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+						balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
+						r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
+						r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
+					}
+					r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
+					r.getData().setBalanceQuantity(balanceQuantity);
+					r.getData().setBalanceAmount(balanceAmount);
+					r.getData().setStockPrice(stockPrice);
+					stockGoodsClient.updateStock(r.getData());
+				}
+			}
+			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
+			order.setOrderItemsList(orderItemsList);
+			//应收账款
+			order.setDebitAmount(order.getOrderAmount());
+			//入库出库金额
+			order.setStorageAmount(orderItemsList.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//入库出库数量
+			order.setStorageQuantity(orderItemsList.stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		}
+		if (ObjectUtils.isNull(order.getThisUsedProfit())){
+			order.setThisUsedProfit(new BigDecimal("0"));
+		}
+		if (ObjectUtils.isNull(order.getOrderAmount())){
+			order.setOrderAmount(order.getStorageAmount().subtract(order.getThisUsedProfit()));
+		}
+		order.setConfirmStatus(1);
+		this.paymentApply(order, order.getBillType(), order.getTradeType());
+		order.setDebitAmount(order.getOrderAmount());
+		order.setBalanceAmount(order.getOrderAmount());
+		order.setPurchaseAmount(order.getOrderAmount());
+
+		order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
+		baseMapper.updateById(order);
+		return R.data(order);
+	}
+
+	@Override
 	public MonthSales monthSales(OrderVO order) {
 		MonthSales monthSales = new MonthSales();
 		if (AuthUtil.getTenantId().equals("673511")) {

+ 20 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -138,6 +138,25 @@ public class StockGoodsClient implements IStockGoodsClient {
 	}
 
 	/**
+	 * 查询库存总账 是否存在
+	 *
+	 * @param corpId         客户id
+	 * @param storageId      仓库id
+	 * @param goodId         商品id
+	 * @param itemType       产品规格型号
+	 * @param lotNo          批次号
+	 * @param cntrNo         箱号
+	 * @param billNo         提单号
+	 * @param contractNumber 合同号
+	 * @return
+	 */
+	@Override
+	@GetMapping(SELECT_STOCK_PARTS)
+	public R<StockGoodsVO> selectStockParts(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType) {
+		return R.data(stockGoodsService.selectStockParts(corpId, storageId, goodId, itemType, lotNo, cntrNo, billNo, contractNumber, tradeType));
+	}
+
+	/**
 	 * 新增库存总账
 	 *
 	 * @param stockGoods
@@ -265,7 +284,7 @@ public class StockGoodsClient implements IStockGoodsClient {
 			.eq(StringUtils.isNotBlank(stockGoods.getBillNo()), StockGoods::getBillNo, stockGoods.getBillNo())
 			.eq(StringUtils.isNotBlank(stockGoods.getCntrNo()), StockGoods::getCntrNo, stockGoods.getCntrNo())
 			.eq(StockGoods::getIsDeleted, 0)
-			.eq(StockGoods::getTenantId, stockGoods.getTenantId());
+			.eq(StockGoods::getTenantId, AuthUtil.getTenantId());
 		List<StockGoods> goodsList = stockGoodsService.list(stockGoodsLambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(goodsList)) {
 			goodsList.forEach(e -> {

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

@@ -136,7 +136,7 @@
         t1.surplus_route_quantity AS balance,
         t1.lower_limit AS lowerLimit,
         t1.stock_price AS stockPrice,
-        t2.cname AS STORAGE,
+        t2.cname AS storage,
         t3.cname AS goods,
         t3.id AS goodsId,
         t3.brand_item AS brandItem,

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

@@ -63,6 +63,21 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	StockGoodsVO selectStock(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType);
 
 	/**
+	 * 查询库存总账 是否存在
+	 *
+	 * @param corpId         客户id
+	 * @param storageId      仓库id
+	 * @param goodId         商品id
+	 * @param itemType       产品规格型号
+	 * @param lotNo          批次号
+	 * @param cntrNo         箱号
+	 * @param billNo         提单号
+	 * @param contractNumber 合同号
+	 * @return
+	 */
+	StockGoodsVO selectStockParts(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType);
+
+	/**
 	 * 新增库存总账
 	 */
 	boolean saveStock(StockGoods stockGoods);

+ 32 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -99,7 +99,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Func.isNotEmpty(corpId), StockGoods::getCorpId, corpId);//客户id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(storageId), StockGoods::getStorageId, storageId);//仓库id
-//		lambdaQueryWrapper.isNull(Func.isNull(storageId), StockGoods::getStorageId);//仓库id
+		lambdaQueryWrapper.isNull(Func.isNull(storageId), StockGoods::getStorageId);//仓库id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(goodId), StockGoods::getGoodsId, goodId);//商品id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(itemType), StockGoods::getItemType, itemType);//产品型号
 		lambdaQueryWrapper.isNull(Func.isEmpty(itemType), StockGoods::getItemType);//产品型号
@@ -116,6 +116,37 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	}
 
 	/**
+	 * 查询库存总账 是否存在
+	 *
+	 * @param corpId         客户id
+	 * @param storageId      仓库id
+	 * @param goodId         商品id
+	 * @param itemType       产品规格型号
+	 * @param lotNo          批次号
+	 * @param cntrNo         箱号
+	 * @param billNo         提单号
+	 * @param contractNumber 合同号
+	 * @return
+	 */
+	@Override
+	public StockGoodsVO selectStockParts(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType) {
+		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Func.isNotEmpty(corpId), StockGoods::getCorpId, corpId);//客户id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(storageId), StockGoods::getStorageId, storageId);//仓库id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(goodId), StockGoods::getGoodsId, goodId);//商品id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(itemType), StockGoods::getItemType, itemType);//产品型号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(lotNo), StockGoods::getLotNo, lotNo);//批次号
+		lambdaQueryWrapper.eq(StockGoods::getTenantId, SecureUtil.getTenantId());//租户
+		lambdaQueryWrapper.eq(Func.isNotEmpty(tradeType), StockGoods::getTradeType, tradeType);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(cntrNo), StockGoods::getCntrNo, cntrNo);//收货单 箱号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(billNo), StockGoods::getBillNo, billNo);//收货单 提单号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(contractNumber), StockGoods::getContractNumber, contractNumber);//收货单 合同号
+
+		StockGoods stockGoods = baseMapper.selectOne(lambdaQueryWrapper);
+		return BeanUtil.copy(stockGoods, StockGoodsVO.class);
+	}
+
+	/**
 	 * 新增库存账接口
 	 *
 	 * @param stockGoods

+ 1 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -2343,6 +2343,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					model.setAccId(acc.getId());
 					model.setAccount(settlement.getAccount());
+					model.setOverPayment(settlement.getOverPayment());
 					baseMapper.insert(model);
 
 					Items items = new Items();

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

@@ -405,6 +405,7 @@
         boi.is_deleted = 0
         AND bo.is_deleted = 0
         and bo.trade_type = 'JTMC'
+        AND boi.bill_type = 'RK'
         <if test="Order.sysNo!=null and Order.sysNo != ''">
             and bo.sys_no=#{Order.sysNo}
         </if>