Browse Source

2023年11月21日13:39:29

纪新园 1 year ago
parent
commit
51b04dd641
14 changed files with 88 additions and 36 deletions
  1. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShoppingCart.java
  3. 1 1
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjShipStockDetails.java
  4. 26 11
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java
  5. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  6. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  7. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayService.java
  8. 6 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayServiceImpl.java
  9. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java
  10. 4 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipMapper.xml
  11. 3 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  12. 6 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java
  13. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java
  14. 18 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -410,6 +410,18 @@ public class PjOrder implements Serializable {
 	@ApiModelProperty(value = "是否异地")
 	private Integer billType;
 
+	/**
+	 * 交易类型
+	 */
+	@ApiModelProperty(value = "交易类型")
+	private String payType;
+
+	/**
+	 * 二维码交易地址
+	 */
+	@ApiModelProperty(value = "二维码交易地址")
+	private String payUrl;
+
 	//小程序检索
 	@TableField(exist = false)
 	private String retrieval;

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShoppingCart.java

@@ -289,4 +289,10 @@ public class PjShoppingCart implements Serializable {
 	@TableField(exist = false)
 	private String ids;
 
+	/**
+	 * 付款方式
+	 */
+	@TableField(exist = false)
+	private String payType;
+
 }

+ 1 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjShipStockDetails.java

@@ -110,7 +110,7 @@ public class PjShipStockDetails implements Serializable {
 	/**
 	 * 仓库id
 	 */
-	private Long storageId;
+	private Long stockId;
 
 	/**
 	 * 调入仓库id

+ 26 - 11
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java

@@ -90,10 +90,18 @@ public class PaymentClient implements IPaymentClient {
 				print(map);
 
 				Map<String, String> mapType = null;
+				String url = null;
 				if (map != null) {
 					for (Object key : map.keySet()) {
 						if (key.equals("payinfo")) {
-							mapType = JSON.parseObject((String) map.get(key), Map.class);
+							if ("W01".equals(paymentDTO.getPaytype()) ||
+								"A01".equals(paymentDTO.getPaytype()) ||
+								"U01".equals(paymentDTO.getPaytype()) ||
+								"S01".equals(paymentDTO.getPaytype())) {
+								url = (String) map.get(key);
+							} else {
+								mapType = JSON.parseObject((String) map.get(key), Map.class);
+							}
 						}
 					}
 				}
@@ -108,15 +116,22 @@ public class PaymentClient implements IPaymentClient {
 				} else if (return_code.equalsIgnoreCase("SUCCESS")) {
 					// 返回数据
 					// 先生成paySign 参考https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
-					resultObj.put("appId", AnalysisMapUtils.getString("appId", mapType));
-					resultObj.put("timeStamp", AnalysisMapUtils.getString("timeStamp", mapType));
-					resultObj.put("nonceStr", AnalysisMapUtils.getString("nonceStr", mapType));
-					resultObj.put("package", AnalysisMapUtils.getString("package", mapType));
-					resultObj.put("signType", AnalysisMapUtils.getString("signType", mapType));
-					resultObj.put("partnerid", AnalysisMapUtils.getString("cusid", map));
-					resultObj.put("prepayId", AnalysisMapUtils.getString("reqsn", map));
-					String paySign = AnalysisMapUtils.getString("paySign", mapType);
-					resultObj.put("paySign", paySign);
+					if ("W01".equals(paymentDTO.getPaytype()) ||
+						"A01".equals(paymentDTO.getPaytype()) ||
+						"U01".equals(paymentDTO.getPaytype()) ||
+						"S01".equals(paymentDTO.getPaytype())) {
+						resultObj.put("url", url);
+					}else{
+						resultObj.put("appId", AnalysisMapUtils.getString("appId", mapType));
+						resultObj.put("timeStamp", AnalysisMapUtils.getString("timeStamp", mapType));
+						resultObj.put("nonceStr", AnalysisMapUtils.getString("nonceStr", mapType));
+						resultObj.put("package", AnalysisMapUtils.getString("package", mapType));
+						resultObj.put("signType", AnalysisMapUtils.getString("signType", mapType));
+						resultObj.put("partnerid", AnalysisMapUtils.getString("cusid", map));
+						resultObj.put("prepayId", AnalysisMapUtils.getString("reqsn", map));
+						String paySign = AnalysisMapUtils.getString("paySign", mapType);
+						resultObj.put("paySign", paySign);
+					}
 					resultObj.put("trxid", AnalysisMapUtils.getString("trxid", map));
 					return R.data(resultObj);
 				}
@@ -157,7 +172,7 @@ public class PaymentClient implements IPaymentClient {
 			if ("1".equals(status)) {
 				map = service.refundNew(paymentDTO.getTrxamt(), paymentDTO.getReqsn(), paymentDTO.getOldtrxid(), paymentDTO.getOldreqsn(), paymentDTO.getCusId(),
 					paymentDTO.getAppId(), paymentDTO.getOrgid(), paymentDTO.getTransactionType(), paymentDTO.getSybMdAppkey(), paymentDTO.getSybRsacusprikey(), paymentDTO.getSybRsatlpubkey(),
-					paymentDTO.getSybSmpprivatekey(), paymentDTO.getSybSmtlpubkey(), SybConstants.SYB_APIURL_TRANX,paymentDTO.getSybRsaPublickey());
+					paymentDTO.getSybSmpprivatekey(), paymentDTO.getSybSmtlpubkey(), SybConstants.SYB_APIURL_TRANX, paymentDTO.getSybRsaPublickey());
 			} else {
 				map = service.refund(paymentDTO.getTrxamt(), paymentDTO.getReqsn(), paymentDTO.getOldtrxid(), paymentDTO.getOldreqsn(), paymentDTO.getCusId(),
 					paymentDTO.getAppId(), paymentDTO.getOrgid(), paymentDTO.getTransactionType(), paymentDTO.getSybMdAppkey(), paymentDTO.getSybRsacusprikey(), paymentDTO.getSybRsatlpubkey(),

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -499,6 +499,7 @@ public class GoodsDescController extends BladeController {
 	public R<IPage<PjGoodsDesc>> goodsPageDB(PjGoodsDesc goods, Query query) {
 		LambdaQueryWrapper<PjStockDesc> queryWrapper = new LambdaQueryWrapper<PjStockDesc>()
 			.eq(PjStockDesc::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(goods.getStock()),PjStockDesc::getStorageId, goods.getStock())
 			.ne(PjStockDesc::getBalanceQuantity, 0);
 		queryWrapper.apply("find_in_set(sales_company_id,'" + AuthUtil.getDeptId() + "')");
 		List<PjStockDesc> pjProductLaunchList = stockDescService.list(queryWrapper);

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -1342,7 +1342,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		BigDecimal amount = orderList.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 		List<PjOrderItems> pjOrderItems = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, ids));
 		String goodsNames = pjOrderItems.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining());
-		return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames);
+		return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames,null);
 	}
 
 	/**

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayService.java

@@ -21,7 +21,7 @@ public interface PayService {
 	 * @param goodsNames   商品名称(多个用逗号拼接)
 	 * @return 支付信息
 	 */
-	R<Map<Object, Object>> payPrepay(String id, BigDecimal amount, String serialNumber, int status, String goodsNames);
+	R<Map<Object, Object>> payPrepay(String id, BigDecimal amount, String serialNumber, int status, String goodsNames,String payType);
 
 	/**
 	 * 退款

+ 6 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayServiceImpl.java

@@ -60,7 +60,7 @@ public class PayServiceImpl implements PayService {
 	private IUserClient userClient;
 
 	@Override
-	public R<Map<Object, Object>> payPrepay(String id, BigDecimal amount, String serialNumber, int status, String goodsNames) {
+	public R<Map<Object, Object>> payPrepay(String id, BigDecimal amount, String serialNumber, int status, String goodsNames,String payType) {
 		if (ObjectUtils.isNull(id)) {
 			throw new RuntimeException("未找到订单信息,订单已取消");
 		}
@@ -86,7 +86,11 @@ public class PayServiceImpl implements PayService {
 			PaymentDTO paymentDTO = new PaymentDTO();
 			paymentDTO.setTrxamt(amount.multiply(new BigDecimal(100)).intValue());
 			paymentDTO.setReqsn(serialNumber);
-			paymentDTO.setPaytype(parameters.getPayType());
+			if (ObjectUtils.isNotNull(payType)){
+				paymentDTO.setPaytype(payType);
+			}else{
+				paymentDTO.setPaytype(parameters.getPayType());
+			}
 			paymentDTO.setBody("商品-" + goodsNames);
 			paymentDTO.setRemark("备注");
 			paymentDTO.setAcct(r.getData().getOpenId());

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -385,11 +385,11 @@ public class ShipController extends BladeController {
 		List<PjShipStockDetails> pages = shipService.stockDataDetails(pjShipStockDetails);
 		for (PjShipStockDetails item : pages) {
 			if ("调拨".equals(item.getBizTypeName())) {
-				if (item.getStorageId().equals(pjShipStockDetails.getStorageId())) {
+				if (item.getStockId().equals(pjShipStockDetails.getStockId())) {
 					item.setBizTypeName("调出");
 					item.setSubSendTotalNum(item.getTransferAllocateNum());
 				}
-				if (item.getCallInStorageId().equals(pjShipStockDetails.getStorageId())) {
+				if (item.getCallInStorageId().equals(pjShipStockDetails.getStockId())) {
 					item.setBizTypeName("调入");
 					item.setAddSendTotalNum(item.getTransferAllocateNum());
 				}

+ 4 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/mapper/ShipMapper.xml

@@ -47,7 +47,7 @@
     <select id="stockDataDetails" resultType="org.springblade.salesPart.excel.PjShipStockDetails">
         SELECT
         ps.id as id,
-        ps.storage_id as storageId,
+        ps.storage_id as stockId,
         ps.call_in_storage_id as callInStorageId,
         ps.billno AS billno,
         ps.customer_name AS corpName,
@@ -78,7 +78,7 @@
         ps.biz_type_name
         WHEN 'DBGD' THEN
         IF
-        ( SUM( psi.send_num ), SUM( psi.send_num ), 0 ) ELSE 0
+        ( SUM( psi.goods_num ), SUM( psi.goods_num ), 0 ) ELSE 0
         END AS transferAllocateNum,
         CASE
         ps.biz_type_name
@@ -105,8 +105,8 @@
         <if test="order.dot == null or order.dot ==''">
             and psi.dot is null
         </if>
-        <if test="order.storageId!=null">
-            and (ps.storage_id = #{order.storageId} or ps.call_in_storage_id = #{order.storageId})
+        <if test="order.stockId!=null">
+            and (ps.storage_id = #{order.stockId} or ps.call_in_storage_id = #{order.stockId})
         </if>
         <if test="order.goodsId!=null">
             and psi.goods_id = #{order.goodsId}

+ 3 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -1613,7 +1613,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOneR.setBalanceQuantity(stockOneR.getBalanceQuantity().add(orderItems.getGoodsNum()));
 					stockOneR.setStoreInventory(stockOneR.getBalanceQuantity());
 					stockOneR.setInventoryAmount(stockOneR.getInventoryAmount().add(orderItems.getGoodsNum()
-						.multiply(stockOneR.getInventoryCostPrice())));
+						.multiply(stockOneC.getInventoryCostPrice())));
 					stockOneR.setInventoryCostPrice(stockOneR.getInventoryAmount().divide(stockOneR.getBalanceQuantity(), 2, RoundingMode.HALF_UP));
 					stockOneR.setVersion(stockOneR.getVersion());
 					pjStockDescArrayList.add(stockOneR);
@@ -1633,8 +1633,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setGoodsTypeName(goodsDesc.getGoodsTypeName());
 					stockDesc.setBalanceQuantity(orderItems.getGoodsNum());
 					stockDesc.setStoreInventory(orderItems.getGoodsNum());
-					stockDesc.setInventoryAmount(orderItems.getSubTotalMoney());
-					stockDesc.setInventoryCostPrice(orderItems.getPrice());
+					stockDesc.setInventoryAmount(orderItems.getGoodsNum().multiply(stockOneC.getInventoryCostPrice()));
+					stockDesc.setInventoryCostPrice(stockOneC.getInventoryCostPrice());
 					stockDesc.setSalesCompanyId(detail.getSalesCompanyId());
 					stockDesc.setSalesCompanyName(detail.getSalesCompanyName());
 					stockDesc.setDot(orderItems.getDot());

+ 6 - 6
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java

@@ -24,6 +24,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
 import javax.validation.Valid;
 
 import oracle.jdbc.proxy.annotation.Post;
@@ -47,7 +48,6 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- *
  * 配件批发购物车控制器
  *
  * @author BladeX
@@ -88,12 +88,12 @@ public class ShoppingCartController extends BladeController {
 		List<PjShoppingCart> list = shoppingCartService.list(lambdaQueryWrapper);
 
 		//按照所属公司分组
-		Map<String, List<PjShoppingCart>> map = list.stream().filter(item-> StringUtils.isNotBlank(item.getSharedCompanyName()))
+		Map<String, List<PjShoppingCart>> map = list.stream().filter(item -> StringUtils.isNotBlank(item.getSharedCompanyName()))
 			.collect(Collectors.groupingBy(PjShoppingCart::getSharedCompanyName));
 
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		map.forEach((k, v) -> {
-			if (ObjectUtil.isNotEmpty(v)){
+			if (ObjectUtil.isNotEmpty(v)) {
 				v.forEach(e -> {
 					e.setFilesList(productLaunchFilesService.list(new QueryWrapper<PjProductLaunchFiles>().eq("pid", e.getProductLaunchId()).eq("is_deleted", 0)));
 				});
@@ -134,7 +134,7 @@ public class ShoppingCartController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入shoppingCart")
 	public R update(@RequestBody PjShoppingCart pjShoppingCart) {
-		if (ObjectUtil.isEmpty(pjShoppingCart.getIds())){
+		if (ObjectUtil.isEmpty(pjShoppingCart.getIds())) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		List<String> idList = Arrays.asList(pjShoppingCart.getIds().split(","));
@@ -174,8 +174,8 @@ public class ShoppingCartController extends BladeController {
 	@PostMapping("/generateOrder")
 	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "购物车生成销售单", notes = "传入shoppingCart")
-	public R generateOrder(@RequestBody PjShoppingCart pjShoppingCart){
-		return shoppingCartService.generateOrder(pjShoppingCart.getAddress(), pjShoppingCart.getList());
+	public R generateOrder(@RequestBody PjShoppingCart pjShoppingCart) {
+		return shoppingCartService.generateOrder(pjShoppingCart.getAddress(), pjShoppingCart.getList(), pjShoppingCart.getPayType());
 	}
 
 

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java

@@ -59,6 +59,6 @@ public interface IShoppingCartService extends IService<PjShoppingCart> {
 	 * @param address 	地址
 	 * @param list		按所属公司分类的商品集合
 	 */
-	R generateOrder(String address, List<Map<String, Object>> list);
+	R generateOrder(String address, List<Map<String, Object>> list,String payType);
 
 }

+ 18 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -35,6 +35,7 @@ import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
 import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.mapper.OrderMapper;
+import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.payMethod.PayService;
 import org.springblade.salesPart.productLaunch.mapper.ProductLaunchMapper;
 import org.springblade.salesPart.shoppingCart.mapper.ShoppingCartMapper;
@@ -70,6 +71,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 	private final ICorpsAttnService corpsAttnService;//客户联系人
 	private final ICorpsDescService corpsDescService;//客户
 	private final OrderMapper orderMapper;
+	private final IOrderService orderService;
 	private final OrderItemsMapper orderItemsMapper;
 	private final ProductLaunchMapper productLaunchMapper;
 	private final ISysClient sysClient;
@@ -124,7 +126,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public R generateOrder(String address, List<Map<String, Object>> list) {
+	public R generateOrder(String address, List<Map<String, Object>> list, String payType) {
 
 		StringBuilder ids = new StringBuilder();
 		StringBuilder goodsName = new StringBuilder();
@@ -162,6 +164,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 				throw new RuntimeException("生成系统编号失败");
 			}
+			List<PjOrder> pjOrderList = new ArrayList<>();
 			for (Map<String, Object> map : list) {
 				String k = (String) map.get("name");
 				if (StringUtil.isNotBlank(k)) {
@@ -225,7 +228,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					order.setBsType(OrderTypeEnum.SALES.getType());
 					order.setBusinessSource(OrderTypeEnum.XCX.getType());
 					order.setReceivableType("网络支付");
-					orderMapper.insert(order);
+					orderService.save(order);
 					ids.append(order.getId()).append(",");
 					//保存销售明细信息
 					if (ObjectUtil.isNotEmpty(shoppingCartList)) {
@@ -296,11 +299,22 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					if (shortcutJoin.length() > 0) {
 						order.setShortcutJoin(shortcutJoin.substring(0, shortcutJoin.length() - 1));
 					}
-					orderMapper.updateById(order);
+					order.setPayType(payType);
+					pjOrderList.add(order);
 				}
 				i++;
 			}
-			return payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo.getData().toString(), 0, goodsName.substring(0, goodsName.length() - 1));
+			R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo.getData().toString(), 0, goodsName.substring(0, goodsName.length() - 1), payType);
+			if ("W01".equals(payType) ||
+				"A01".equals(payType) ||
+				"U01".equals(payType) ||
+				"S01".equals(payType)) {
+				for (PjOrder item : pjOrderList) {
+					item.setPayUrl(r.getData().get("url").toString());
+				}
+			}
+			orderService.updateBatchById(pjOrderList);
+			return r;
 		} else {
 			throw new RuntimeException("请选择需要结算的商品");
 		}