Procházet zdrojové kódy

通联支付回调方法修改 新项目库存参数 2023年5月19日08:33:28

纪新园 před 2 roky
rodič
revize
96f6986d53

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

@@ -21,9 +21,11 @@ public interface IStockGoodsClient {
 	String SELECT_STOKE = API_PREFIX + "/select-stock";
 	String SAVE_STOCK = API_PREFIX + "/save-stock";
 	String SAVE_STOCK_YCP = API_PREFIX + "/save-stockYCP";
+	String SAVE_STOCK_LIST_YCP = API_PREFIX + "/save-stockListYCP";
 	String GET_STOCK = API_PREFIX + "/get_stock";
 	String UPDATE_STOCK = API_PREFIX + "/updateStock";
 	String UPDATE_STOCK_YCP = API_PREFIX + "/updateStockYCP";
+	String UPDATE_STOCK_LIST_YCP = API_PREFIX + "/updateStockListYCP";
 	String GET_STOCK_BY_ID = API_PREFIX + "/getStockByID";
 	String GET_ONE = API_PREFIX + "/getOne";
 	String GET_STOCK_BY_CONDITIONS = API_PREFIX + "/getStockByCondition";
@@ -134,6 +136,15 @@ public interface IStockGoodsClient {
 	R saveStockYCP(@RequestBody StockGoods stockGoods);
 
 	/**
+	 * 新增库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@PostMapping(SAVE_STOCK_LIST_YCP)
+	R saveStockListYCP(@RequestBody List<StockGoods> stockGoods);
+
+	/**
 	 * 订单明细查询库存总账
 	 *
 	 * @param stockGoods
@@ -163,6 +174,15 @@ public interface IStockGoodsClient {
 	@PostMapping(UPDATE_STOCK_YCP)
 	boolean updateStockYCP(@RequestBody StockGoods stockGoods);
 
+	/**
+	 * 修改库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@PostMapping(UPDATE_STOCK_LIST_YCP)
+	boolean updateStockListYCP(@RequestBody List<StockGoods> stockGoods);
+
 	@PostMapping(UPDATE_STOCK_GOODS)
 	int updateStockGoods(@RequestBody StockGoods stockGoods);
 

+ 0 - 23
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -62,29 +62,6 @@ public class TongLianPaymentController extends BladeController {
 	private final @NotNull IPaymentService paymentService;
 
 
-	private final @NotNull IWechatMarkService wechatMarkService;
-
-	private final @NotNull ICorpsDescClient corpsDescClient;
-
-	//费用
-	private final @NotNull IFeesDescClient feesDescClient;
-
-	//财务
-	private final @NotNull IFinanceClient financeClient;
-
-	/**
-	 * 生成系统编号
-	 */
-	private final @NotNull ISerialClient serialClient;
-
-	private final @NotNull IStockGoodsClient stockGoodsClient;
-
-
-	private final @NotNull IOrderItemsClient orderItemsClient;
-
-	private final @NotNull ITongLianPaymentClient tongLianPaymentClient;
-
-
 	/**
 	 * 获取支付的请求参数
 	 */

+ 60 - 23
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -12,6 +12,7 @@ import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Settlement;
@@ -45,6 +46,8 @@ import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * 标书代理信息表 服务实现类
@@ -231,12 +234,30 @@ public class PaymentServiceImpl implements IPaymentService {
 		TreeMap<String, String> params = NotifyServlet.getParams(request);
 
 		String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
-		logicMethod(request, response);
+		// 创建线程池
+		ExecutorService executor = Executors.newSingleThreadExecutor();
+		// 启动任务并提交给线程池
+		executor.submit(() -> {
+			try {
+				logicMethod(request, response);
+			} catch (Exception e) {
+				System.out.println("支付成功,业务处理异常,时间:" + new Date());
+				System.out.println(e.getMessage());
+				// 关闭线程池
+				executor.shutdown();
+			} finally {
+				// 关闭线程池
+				executor.shutdown();
+			}
+		});
+		// 关闭线程池
+		executor.shutdown();
 		if (Objects.equals(trxstatus, "0000")) {
 			returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
 		} else {
 			returnMethod(response, AnalysisMapUtils.setXML("error", "OK"));
 		}
+
 	}
 
 	/**
@@ -254,7 +275,24 @@ public class PaymentServiceImpl implements IPaymentService {
 		TreeMap<String, String> params = NotifyServlet.getParams(request);
 
 		String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
-		logicMethodNew(request, response);
+		// 创建线程池
+		ExecutorService executor = Executors.newSingleThreadExecutor();
+		// 启动任务并提交给线程池
+		executor.submit(() -> {
+			try {
+				logicMethodNew(request, response);
+			} catch (Exception e) {
+				System.out.println("支付成功,业务处理异常,时间:" + new Date());
+				System.out.println(e.getMessage());
+				// 关闭线程池
+				executor.shutdown();
+			} finally {
+				// 关闭线程池
+				executor.shutdown();
+			}
+		});
+		// 关闭线程池
+		executor.shutdown();
 		if (Objects.equals(trxstatus, "0000")) {
 			returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
 		} else {
@@ -435,6 +473,8 @@ public class PaymentServiceImpl implements IPaymentService {
 								R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(), order.getTenantId());
 								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 									System.out.println("第三步明细" + res.getData());
+									List<StockGoodsVO> list = new ArrayList<>();
+									List<StockGoods> stockGoodsList = new ArrayList<>();
 									for (OrderItems orderItems : res.getData()) {
 										System.out.println("第三步明细数据" + orderItems.toString());
 										if ("XS".equals(selectOrder.getBillType())) {
@@ -459,23 +499,9 @@ public class PaymentServiceImpl implements IPaymentService {
 												if (new BigDecimal("0.00").compareTo(balanceQuantity) <= 0) {
 													balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
 													System.out.println("第三步新库存金额-01" + balanceAmount);
-													/*if (!new BigDecimal("0.00").equals(balanceAmount) && !new BigDecimal("0.00").equals(balanceQuantity)) {
-														stockPrice = stockPrice.add(balanceAmount.divide(orderItems.getStorageInQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-														System.out.println("第三步新库存价-01" + stockPrice + "数量:" + orderItems.getStorageInQuantity());
-													} else {
-														stockPrice = stockPrice.add(balanceAmount);
-														System.out.println("第三步新库存价-02" + stockPrice);
-													}*/
 												} else {
 													balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
 													System.out.println("第三步新库存金额-02" + balanceAmount);
-													/*if (!new BigDecimal("0.00").equals(balanceAmount) && !new BigDecimal("0.00").equals(balanceQuantity)) {
-														stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-														System.out.println("第三步新库存价-01" + stockPrice + "数量:" + balanceQuantity);
-													} else {
-														stockPrice = stockPrice.add(balanceAmount);
-														System.out.println("第三步新库存价-02" + stockPrice);
-													}*/
 												}
 												System.out.println("第三步新库存价" + stockPrice);
 												r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
@@ -494,8 +520,9 @@ public class PaymentServiceImpl implements IPaymentService {
 											r.getData().setBalanceAmount(balanceAmount);
 											r.getData().setStockPrice(stockPrice);
 											r.getData().setTenantId(order.getTenantId());
-											boolean a = stockGoodsClient.updateStockYCP(r.getData());
-											System.out.println("第三步库存" + a);
+											list.add(r.getData());
+											/*boolean a = stockGoodsClient.updateStockYCP(r.getData());
+											System.out.println("第三步库存" + a);*/
 										} else {
 											StockGoods stockGoods = new StockGoods();
 											if ("CG".equals(selectOrder.getBillType())) {
@@ -507,7 +534,7 @@ public class PaymentServiceImpl implements IPaymentService {
 												stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
 												stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
 												stockGoods.setTenantId(order.getTenantId());
-												stockGoodsClient.saveStockYCP(stockGoods);
+//												stockGoodsClient.saveStockYCP(stockGoods);
 											} else {
 												stockGoods.setGoodsId(orderItems.getItemId());
 												stockGoods.setStorageId(orderItems.getStorageId());
@@ -517,10 +544,17 @@ public class PaymentServiceImpl implements IPaymentService {
 												stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
 												stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
 												stockGoods.setTenantId(order.getTenantId());
-												stockGoodsClient.saveStockYCP(stockGoods);
+//												stockGoodsClient.saveStockYCP(stockGoods);
 											}
+											stockGoodsList.add(stockGoods);
 										}
 									}
+									if (list.size() > 0) {
+										stockGoodsClient.updateStockListYCP(BeanUtil.copy(list, StockGoods.class));
+									}
+									if (stockGoodsList.size() > 0) {
+										stockGoodsClient.saveStockListYCP(stockGoodsList);
+									}
 								} else {
 									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
 									wechatMark.setStatus(2);
@@ -541,9 +575,12 @@ public class PaymentServiceImpl implements IPaymentService {
 									selectOrder.setCorpsName(corpMessage.getData().getCname());
 								}
 							}
-							BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
-							BigDecimal quantity = BigDecimal.ZERO;//对账数量 数量为 就是轮胎条数的和
-							BigDecimal price = BigDecimal.ZERO;//对账单价
+							//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+							BigDecimal amount = BigDecimal.ZERO;
+							//对账数量 数量为 就是轮胎条数的和
+							BigDecimal quantity = BigDecimal.ZERO;
+							//对账单价
+							BigDecimal price = BigDecimal.ZERO;
 							ApplyDTO applyDTO = new ApplyDTO();
 							applyDTO.setCompanyid(selectOrder.getBelongToCorpId());
 							applyDTO.setTradeType(selectOrder.getTradeType());

+ 17 - 6
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -44,15 +44,15 @@ import java.util.List;
 @AllArgsConstructor
 public class StockGoodsClient implements IStockGoodsClient {
 
-	private IStockGoodsService stockGoodsService;//库存
+	//库存
+	private IStockGoodsService stockGoodsService;
 
 	private IStorageClient iStorageClient;
 
-	private ICorpsDescClient corpsDescClient;//获取客户信息
-	private IGoodsDescClient goodsDescClient;//商品信息
-	private IUserClient userClient;//用户信息
-	private final IRedisClient redisClient;//redis缓存处理
-	private final RedisTemplate<String, Object> redisTemplate;
+	//商品信息
+	private IGoodsDescClient goodsDescClient;
+	//redis缓存处理
+	private final IRedisClient redisClient;
 
 	@Override
 	@GetMapping("stockgoods/stocklist")
@@ -194,6 +194,11 @@ public class StockGoodsClient implements IStockGoodsClient {
 		return R.status(stockGoodsService.saveStock(stockGoods));
 	}
 
+	@Override
+	public R saveStockListYCP(List<StockGoods> stockGoods) {
+		return R.status(stockGoodsService.saveBatch(stockGoods));
+	}
+
 	/**
 	 * 订单商品明细获取库存
 	 *
@@ -250,6 +255,12 @@ public class StockGoodsClient implements IStockGoodsClient {
 	public boolean updateStockYCP(StockGoods stockGoods) {
 		return stockGoodsService.updateById(stockGoods);
 	}
+
+	@Override
+	public boolean updateStockListYCP(List<StockGoods> stockGoods) {
+		return stockGoodsService.updateBatchById(stockGoods);
+	}
+
 	@Override
 	@PostMapping(UPDATE_STOCK_GOODS)
 	public int updateStockGoods(StockGoods stockGoods) {