纪新园 2 лет назад
Родитель
Сommit
0909349497

+ 6 - 0
blade-auth/pom.xml

@@ -85,6 +85,12 @@
             <groupId>com.github.whvcse</groupId>
             <artifactId>easy-captcha</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-payment-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
         <!-- 链路追踪、服务监控 -->
         <!--<dependency>
             <groupId>org.springblade</groupId>

+ 9 - 1
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -26,6 +26,8 @@ import org.springblade.common.cache.CacheNames;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
+import org.springblade.pay.tonglianPayment.entity.Parameters;
+import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
@@ -61,6 +63,8 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 	private final BladeRedis bladeRedis;
 	private final IWxUnionIdOpenIdClient wxUnionIdOpenIdClient;
 
+	private final IPaymentClient paymentClient;
+
 	@Override
 	@SneakyThrows
 	public BladeUserDetails loadUserByUsername(String username) {
@@ -84,7 +88,11 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 			//判断是否是小程序登录
 			if (ObjectUtils.isNotNull(appletsId)) {
 				//通过小程序appId查到租户信息
-				tenant = sysClient.getTenantByAppId(appletsId);
+				R<Parameters> parametersR = paymentClient.getByAppId(appletsId);
+				if (!parametersR.isSuccess()) {
+					throw new UsernameNotFoundException("未查到租户信息");
+				}
+				tenant = sysClient.getTenant(parametersR.getData().getTenantId());
 				if (ObjectUtils.isNull(tenant) || ObjectUtils.isNull(tenant.getData())) {
 					throw new UsernameNotFoundException("未查到租户信息");
 				}

+ 7 - 0
blade-common/pom.xml

@@ -84,6 +84,13 @@
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.apigwclient</groupId>
+            <artifactId>apigwclient-sdk</artifactId>
+            <version>2.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/apigwclient-0.1.2.jar</systemPath>
+        </dependency>
     </dependencies>
 
     <build>

+ 18 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/Parameters.java

@@ -202,4 +202,22 @@ public class Parameters implements Serializable {
 	@ApiModelProperty(value = "通联平台sm2公钥")
 	private String sybSmtlpubkey;
 
+	/**
+	 * 共享公司
+	 */
+	@ApiModelProperty(value = "共享公司")
+	private String sharedCompany;
+
+	/**
+	 * 所属公司id
+	 */
+	@ApiModelProperty(value = "所属公司id")
+	private Long salesCompanyId;
+
+	/**
+	 * 所属公司名称
+	 */
+	@ApiModelProperty(value = "所属公司名称")
+	private String salesCompanyName;
+
 }

+ 6 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/fegin/IPaymentClient.java

@@ -3,11 +3,13 @@ package org.springblade.pay.tonglianPayment.fegin;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
+import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springblade.purchase.sales.entity.Order;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Map;
 
@@ -20,6 +22,7 @@ public interface IPaymentClient {
 	String GET_BY_ID = APP_PREFIX + "/WeChatPayment";
 	String PAY_PREPAY = APP_PREFIX + "/payPrepay";
 	String REFUND = APP_PREFIX + "/refund";
+	String GET_BY_APP_ID = APP_PREFIX + "/getByAppId";
 
 	@PostMapping(GET_BY_ID)
 	R getWeChatPayment(@RequestBody Order order);
@@ -30,5 +33,8 @@ public interface IPaymentClient {
 	@PostMapping(REFUND)
 	R<Map<String, String>> refund(@RequestBody PaymentDTO paymentDTO);
 
+	@GetMapping(GET_BY_APP_ID)
+	R<Parameters> getByAppId(@RequestParam("appId") String appId);
+
 
 }

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

@@ -39,6 +39,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
@@ -98,7 +99,10 @@ public class TongLianPaymentController extends BladeController {
 	@ApiIgnore
 	@RequestMapping(value = "/notify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
 	public void notify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
-		try {
+
+		paymentService.notifyMethod(request,response);
+
+		/*try {
 			request.setCharacterEncoding("UTF-8");//通知传输的编码为GBK
 			response.setCharacterEncoding("UTF-8");
 			TreeMap<String, String> params = NotifyServlet.getParams(request);
@@ -118,10 +122,8 @@ public class TongLianPaymentController extends BladeController {
 			if ("RSA".equals(params.get("signtype"))) {
 				appKey = parametersDetails.getSybRsacusprikey();
 			}else if ("SM2".equals(params.get("signtype"))) {
-				//appKey = SybConstants.SYB_SM2TLPUBKEY;
 				appKey = parametersDetails.getSybSmtlpubkey();
 			}else{
-				//appKey = SybConstants.SYB_MD5_APPKEY;
 				appKey = parametersDetails.getSybMdAppkey();
 			}
 			boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));// 接受到推送通知,首先验签
@@ -131,8 +133,13 @@ public class TongLianPaymentController extends BladeController {
 			wechatMark.setType("支付");
 			if (isSign) {
 				String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
+				OutputStream out = response.getOutputStream();
+				if (Objects.equals(trxstatus, "0000")) {
+					response.getWriter().write(AnalysisMapUtils.setXML("SUCCESS", "OK"));
+				} else {
+					response.getWriter().write(AnalysisMapUtils.setXML("error", "OK"));
+				}
 				if (Objects.equals(trxstatus, "0000")) {
-
 					wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
 					wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
 					wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
@@ -157,13 +164,6 @@ public class TongLianPaymentController extends BladeController {
 						selectOrder.setConfirmStatus(2);
 						selectOrder.setActualPaymentStatus(2);
 						selectOrder.setPaymentAmountTl(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
-						/*if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount())) {
-							selectOrder.setSettlmentAmount(selectOrder.getSettlmentAmount().add(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
-							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(selectOrder.getSettlmentAmount()));
-						} else {
-							selectOrder.setSettlmentAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
-							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
-						}*/
 						if (ObjectUtils.isNotNull(selectOrder) && ObjectUtils.isNotNull(selectOrder.getDebitAmount())) {
 							System.out.println("第二步");
 							List<Settlement> settlementList = new ArrayList<>();
@@ -388,7 +388,7 @@ public class TongLianPaymentController extends BladeController {
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
-		}
+		}*/
 	}
 
 

+ 9 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java

@@ -6,8 +6,10 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
+import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.entity.WechatMark;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
+import org.springblade.pay.tonglianPayment.service.IParametersService;
 import org.springblade.pay.tonglianPayment.service.IPaymentService;
 import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
 import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
@@ -30,6 +32,7 @@ public class PaymentClient implements IPaymentClient {
 	private final IPaymentService paymentService;//支付
 	private final IWechatMarkService wechatMarkService;//支付
 	private final IOrderDescClient orderDescClient;
+	private final IParametersService parametersService;
 
 	@Override
 	public R getWeChatPayment(Order order) {
@@ -136,6 +139,12 @@ public class PaymentClient implements IPaymentClient {
 		return R.fail("退款失败");
 	}
 
+
+	@Override
+	public R<Parameters> getByAppId(String appId) {
+		return parametersService.selectByOne(appId);
+	}
+
 	public static void print(Map<String, String> map) {
 		System.out.println("返回数据如下:");
 		if (map != null) {

+ 3 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/IParametersService.java

@@ -18,6 +18,7 @@ package org.springblade.pay.tonglianPayment.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.tool.api.R;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.vo.ParametersVO;
 
@@ -39,4 +40,6 @@ public interface IParametersService extends IService<Parameters> {
 	IPage<ParametersVO> selectParametersPage(IPage<ParametersVO> page, ParametersVO parameters);
 
     Parameters getDetails(Parameters parameters);
+
+	R<Parameters> selectByOne(String appId);
 }

+ 5 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/IPaymentService.java

@@ -5,6 +5,9 @@ import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.BidingAgent;
 import org.springblade.purchase.sales.entity.Order;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 标书代理信息 服务类
  *
@@ -15,4 +18,6 @@ import org.springblade.purchase.sales.entity.Order;
 public interface IPaymentService {
 
 	R getWeChatPayment(Order order);
+
+	void notifyMethod(HttpServletRequest request, HttpServletResponse response);
 }

+ 9 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/ParametersServiceImpl.java

@@ -16,9 +16,11 @@
  */
 package org.springblade.pay.tonglianPayment.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.core.tenant.annotation.TenantIgnore;
+import org.springblade.core.tool.api.R;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.mapper.ParametersMapper;
 import org.springblade.pay.tonglianPayment.service.IParametersService;
@@ -45,4 +47,11 @@ public class ParametersServiceImpl extends ServiceImpl<ParametersMapper, Paramet
 		return baseMapper.getDetails(parameters);
 	}
 
+	@Override
+	@TenantIgnore
+	public R<Parameters> selectByOne(String appId) {
+		return R.data(baseMapper.selectOne(new LambdaQueryWrapper<Parameters>()
+			.eq(Parameters::getSubAppid, appId).last("limit 1")));
+	}
+
 }

+ 353 - 5
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -3,27 +3,47 @@ package org.springblade.pay.tonglianPayment.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
+import org.jetbrains.annotations.NotNull;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.entity.GoodsDesc;
+import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.finance.dto.ApplyDTO;
+import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Settlement;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
 import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
+import org.springblade.pay.tonglianPayment.method.NotifyServlet;
+import org.springblade.pay.tonglianPayment.service.IPaymentService;
+import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
 import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
 import org.springblade.pay.tonglianPayment.utils.SybPayService;
-import org.springblade.pay.tonglianPayment.service.IPaymentService;
+import org.springblade.pay.tonglianPayment.utils.SybUtil;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 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.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
+import java.math.MathContext;
+import java.math.RoundingMode;
+import java.util.*;
 
 /**
  * 标书代理信息表 服务实现类
@@ -50,6 +70,21 @@ public class PaymentServiceImpl implements IPaymentService {
 
 	private IGoodsDescClient goodsDescClient;
 
+	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;
+
 
 	@Override
 	public R getWeChatPayment(Order order) {
@@ -88,7 +123,7 @@ public class PaymentServiceImpl implements IPaymentService {
 					for (OrderItems goodsVo : res.getData()) {
 						GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(goodsVo.getItemId());
 						if (ObjectUtils.isNotNull(goodsDesc)) {
-							if(!"1".equals(goodsDesc.getUpperFrame())){
+							if (!"1".equals(goodsDesc.getUpperFrame())) {
 								throw new RuntimeException(goodsDesc.getCname() + "-该产品以下架,付款失败");
 							}
 							body = body + goodsDesc.getCname() + "、";
@@ -177,6 +212,319 @@ public class PaymentServiceImpl implements IPaymentService {
 		return R.data("下单失败");
 	}
 
+	@Override
+	public void notifyMethod(HttpServletRequest request, HttpServletResponse response) {
+		try {
+			//通知传输的编码为GBK
+			request.setCharacterEncoding("UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		response.setCharacterEncoding("UTF-8");
+		TreeMap<String, String> params = NotifyServlet.getParams(request);
+
+		String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
+		logicMethod(request, response);
+		if (Objects.equals(trxstatus, "0000")) {
+			returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
+		} else {
+			returnMethod(response, AnalysisMapUtils.setXML("error", "OK"));
+		}
+	}
+
+	private void logicMethod(HttpServletRequest request, HttpServletResponse response) {
+		try {
+			//通知传输的编码为GBK
+			request.setCharacterEncoding("UTF-8");
+			response.setCharacterEncoding("UTF-8");
+			TreeMap<String, String> params = NotifyServlet.getParams(request);
+			System.out.println("回调函数数据======》" + params.toString());
+			String appKey;
+
+			WechatMark wechatMark = new WechatMark();
+
+			Parameters parameters = new Parameters();
+			parameters.setAppId(AnalysisMapUtils.getString("appid", params));
+			parameters.setCusId(AnalysisMapUtils.getString("cusid", params));
+			Parameters parametersDetails = tongLianPaymentClient.getParametersDetails(parameters);
+			if (ObjectUtils.isNull(parametersDetails)) {
+				wechatMark.setRemark("未找到租户,异常支付");
+			}
+
+			if ("RSA".equals(params.get("signtype"))) {
+				appKey = parametersDetails.getSybRsacusprikey();
+			} else if ("SM2".equals(params.get("signtype"))) {
+				appKey = parametersDetails.getSybSmtlpubkey();
+			} else {
+				appKey = parametersDetails.getSybMdAppkey();
+			}
+			// 接受到推送通知,首先验签
+			boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));
+			System.out.println("验签结果:" + isSign);
+
+			wechatMark.setCreateTime(new Date());
+			wechatMark.setType("支付");
+			if (isSign) {
+				String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
+				if (Objects.equals(trxstatus, "0000")) {
+					wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
+					wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
+					wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+
+					//支付成功业务处理
+					Order order = new Order();
+					order.setSysNo(AnalysisMapUtils.getString("cusorderid", params));
+
+					if (ObjectUtils.isNotNull(parametersDetails)) {
+						wechatMark.setTenantId(parametersDetails.getTenantId());
+						order.setTenantId(parametersDetails.getTenantId());
+					} else {
+						wechatMark.setTenantId("000000");
+						order.setTenantId("000000");
+						wechatMark.setRemark("未找到租户,异常支付");
+					}
+
+					Order selectOrder = orderDescClient.getByOrder(order);
+					if (ObjectUtils.isNotNull(selectOrder)) {
+						System.out.println("第一步");
+						selectOrder.setStatus(3);
+						selectOrder.setConfirmStatus(2);
+						selectOrder.setActualPaymentStatus(2);
+						selectOrder.setPaymentAmountTl(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+						if (ObjectUtils.isNotNull(selectOrder) && ObjectUtils.isNotNull(selectOrder.getDebitAmount())) {
+							System.out.println("第二步");
+							List<Settlement> settlementList = new ArrayList<>();
+							Settlement settlement = new Settlement();
+							if ("XS".equals(selectOrder.getBillType())) {
+								settlement.setDc("d");
+								settlement.setBillType("收费");
+							} else {
+								settlement.setDc("c");
+								settlement.setBillType("付费");
+							}
+							settlement.setSettlementDate(new Date());
+							settlement.setAccount("微信支付");
+							settlement.setAmount(selectOrder.getPaymentAmountTl());
+							settlement.setOverPayment(new BigDecimal("0.00"));
+							settlementList.add(settlement);
+							selectOrder.setCurrentAmount(selectOrder.getPaymentAmountTl());
+							if ("2".equals(selectOrder.getOrderSource())) {
+								System.out.println("第三步");
+								R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(), order.getTenantId());
+								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+									System.out.println("第三步明细" + res.getData());
+									for (OrderItems orderItems : res.getData()) {
+										System.out.println("第三步明细数据" + orderItems.toString());
+										if ("XS".equals(selectOrder.getBillType())) {
+											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+										} else {
+											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), 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.selectStockPartsYCP(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null, order.getTenantId());
+										if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+											System.out.println("第三步库存" + res.getData());
+											if ("XS".equals(selectOrder.getBillType())) {
+												System.out.println("第三步原库存" + r.getData().getSurplusRouteQuantity());
+												System.out.println("第三步明细数量" + orderItems.getStorageInQuantity());
+												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+												System.out.println("第三步新库存" + surplusRouteQuantity);
+												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()));
+												r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getPrice().multiply(orderItems.getStorageInQuantity())));
+											} 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).setScale(2, RoundingMode.HALF_UP));
+
+												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);
+											r.getData().setTenantId(order.getTenantId());
+											boolean a = stockGoodsClient.updateStockYCP(r.getData());
+											System.out.println("第三步库存" + a);
+										} else {
+											StockGoods stockGoods = new StockGoods();
+											if ("CG".equals(selectOrder.getBillType())) {
+												stockGoods.setGoodsId(orderItems.getItemId());
+												stockGoods.setStorageId(orderItems.getStorageId());
+												stockGoods.setPurchasePrice(orderItems.getPrice());
+												stockGoods.setStockPrice(orderItems.getPrice());
+												stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
+												stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
+												stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
+												stockGoods.setTenantId(order.getTenantId());
+												stockGoodsClient.saveStockYCP(stockGoods);
+											} else {
+												stockGoods.setGoodsId(orderItems.getItemId());
+												stockGoods.setStorageId(orderItems.getStorageId());
+												stockGoods.setPurchasePrice(orderItems.getPrice());
+												stockGoods.setStockPrice(orderItems.getPrice());
+												stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+												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);
+											}
+										}
+									}
+								} else {
+									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
+									wechatMark.setStatus(2);
+								}
+							}
+							//账单支付处理
+							//获取所属公司中文名
+							if (selectOrder.getBelongToCorpId() != null) {
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getBelongToCorpId(), order.getTenantId());
+								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+									selectOrder.setBelongToCorpName(corpMessage.getData().getCname());
+								}
+							}
+							//获取客户中文名
+							if (selectOrder.getCorpId() != null) {
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getCorpId(), order.getTenantId());
+								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+									selectOrder.setCorpsName(corpMessage.getData().getCname());
+								}
+							}
+							BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+							BigDecimal quantity = BigDecimal.ZERO;//对账数量 数量为 就是轮胎条数的和
+							BigDecimal price = BigDecimal.ZERO;//对账单价
+							ApplyDTO applyDTO = new ApplyDTO();
+							applyDTO.setCompanyid(selectOrder.getBelongToCorpId());
+							applyDTO.setTradeType(selectOrder.getTradeType());
+							applyDTO.setBelongCompany(selectOrder.getBelongToCorpName());
+							applyDTO.setAccDate(selectOrder.getBusinesDate());
+							applyDTO.setPaymentStatus("已支付");
+							applyDTO.setPaymentType("1");
+							if ("CG".equals(selectOrder.getBillType())) {
+								applyDTO.setDc("C");
+								applyDTO.setBillType("付费");
+							} else if ("XS".equals(selectOrder.getBillType())) {
+								applyDTO.setDc("D");
+								applyDTO.setBillType("收费");
+							}
+							applyDTO.setSettlementList(settlementList);
+
+							amount = amount.add(selectOrder.getOrderAmount());
+							quantity = quantity.add(new BigDecimal(1));
+							price = price.add(amount);
+
+							applyDTO.setSrcParentId(selectOrder.getId());
+							applyDTO.setSrcSysno(selectOrder.getSysNo());
+							applyDTO.setItemType(selectOrder.getTradeType());
+							applyDTO.setCorpId(selectOrder.getCorpId());
+							applyDTO.setSrcId(selectOrder.getId());
+							applyDTO.setSrcFeesId(selectOrder.getId());
+							applyDTO.setCurrency("CNY");
+							applyDTO.setExchangeRate(selectOrder.getExchangeRate());
+							applyDTO.setTaxRate(BigDecimal.ZERO);
+							applyDTO.setSrcType(4);
+							applyDTO.setTradeType(selectOrder.getTradeType());
+							applyDTO.setChargeMember(selectOrder.getChargeMember());
+							applyDTO.setUnit("条");
+							applyDTO.setRemarks(selectOrder.getOrderRemark());
+							//获取费用id
+							R<FeesDesc> fees = feesDescClient.getFeesByNameYCP("货款", order.getTenantId());
+							if (fees.isSuccess() && fees.getData() != null) {
+								applyDTO.setCostType(fees.getData().getId().toString());
+							}
+							applyDTO.setSettlementAmount(selectOrder.getSettlmentAmount().add(selectOrder.getPaymentAmountTl()));
+							applyDTO.setQuantity(new BigDecimal(1));
+							applyDTO.setSrcDate(selectOrder.getBusinesDate());
+							applyDTO.setSrcBillNo(selectOrder.getOrderNo());
+							applyDTO.setAccSysNo(selectOrder.getSysNo());
+							applyDTO.setSrcRefno(selectOrder.getSysNo());
+							applyDTO.setRetrieval(selectOrder.getAdvanceCollectionDate());
+							applyDTO.setCorpName(selectOrder.getCorpsName());
+							applyDTO.setAmount(amount);
+							applyDTO.setPrice(price);
+							applyDTO.setQuantity(quantity);
+							applyDTO.setTenantId(order.getTenantId());
+							BigDecimal receivedAmount = selectOrder.getPaymentAmountTl();
+							receivedAmount = receivedAmount.add(selectOrder.getSettlmentAmount());
+							amount = selectOrder.getDebitAmount().subtract(receivedAmount);
+							selectOrder.setSettlmentAmount(receivedAmount);
+							selectOrder.setBalanceAmount(amount);
+							orderDescClient.updateOrderYCP(selectOrder);
+							//生成账单
+							R paymentApply = financeClient.paymentApplyParts(applyDTO);
+							if (!paymentApply.isSuccess()) {
+								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
+								wechatMark.setStatus(2);
+							} else {
+								wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
+								wechatMark.setStatus(1);
+							}
+						} else {
+							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
+							wechatMark.setStatus(2);
+							System.out.println("第二步报错");
+						}
+					} else {
+						wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
+						wechatMark.setStatus(2);
+						System.out.println("第一部步失败");
+					}
+					wechatMarkService.save(wechatMark);
+				} else {
+					//订单编号
+					wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败!" + "原因:" + AnalysisMapUtils.getString("errmsg", params));
+					wechatMark.setStatus(2);
+					wechatMarkService.save(wechatMark);
+				}
+			} else {
+				wechatMark.setCause("签名验证失败");
+				wechatMark.setStatus(2);
+				wechatMarkService.save(wechatMark);
+				throw new RuntimeException("签名验证失败");
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	private void returnMethod(HttpServletResponse response, String setXML) {
+		try {
+			response.getWriter().write(setXML);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
 	public static void print(Map<String, String> map) {
 		System.out.println("返回数据如下:");
 		if (map != null) {

+ 0 - 7
blade-service/trade-purchase/pom.xml

@@ -109,13 +109,6 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>com.apigwclient</groupId>
-            <artifactId>apigwclient-sdk</artifactId>
-            <version>2.0</version>
-            <scope>system</scope>
-            <systemPath>${project.basedir}/src/main/resources/lib/apigwclient-0.1.2.jar</systemPath>
-        </dependency>
     </dependencies>