فهرست منبع

2023年2月23日17:09:03

纪新园 2 سال پیش
والد
کامیت
5a8271243f
27فایلهای تغییر یافته به همراه1112 افزوده شده و 68 حذف شده
  1. 6 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsAddr.java
  2. 34 0
      blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/dto/WechatMarkDTO.java
  3. 119 0
      blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/WechatMark.java
  4. 36 0
      blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/vo/WechatMarkVO.java
  5. 34 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamServiceDTO.java
  6. 104 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ParamService.java
  7. 11 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  8. 5 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  9. 36 0
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamServiceVO.java
  10. 20 5
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java
  11. 36 11
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  12. 141 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/WechatMarkController.java
  13. 26 2
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java
  14. 42 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/mapper/WechatMarkMapper.java
  15. 25 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/mapper/WechatMarkMapper.xml
  16. 41 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/IWechatMarkService.java
  17. 41 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/WechatMarkServiceImpl.java
  18. 8 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/utils/SybPayService.java
  19. 11 8
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  20. 4 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java
  21. 37 42
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  22. 126 0
      blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamServiceController.java
  23. 7 0
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  24. 42 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java
  25. 26 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml
  26. 43 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java
  27. 51 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java

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

@@ -169,5 +169,11 @@ public class CorpsAddr implements Serializable {
 	@ApiModelProperty(value = "经度")
 	private String longitude;
 
+	/**
+	 * 别名
+	 */
+	@ApiModelProperty(value = "别名")
+	private String alias;
+
 
 }

+ 34 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/dto/WechatMarkDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.dto;
+
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 微信支付异常表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WechatMarkDTO extends WechatMark {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -0,0 +1,119 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 微信支付异常表实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@TableName("blade_weChat_mark")
+@ApiModel(value = "WechatMark对象", description = "微信支付异常表")
+public class WechatMark implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remark;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+
+	/**
+	 * 创建时间
+	 */
+	@TableField(exist = false)
+	private List<String> createTimeList;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 状态
+	 */
+	@ApiModelProperty(value = "状态")
+	private Integer status;
+	/**
+	 * 是否已删除
+	 */
+	@ApiModelProperty(value = "是否已删除")
+	private Integer isDeleted;
+	/**
+	 * 业务来源单号
+	 */
+	@ApiModelProperty(value = "业务来源单号")
+	private String srcBillNo;
+	/**
+	 * 流水号
+	 */
+	@ApiModelProperty(value = "流水号")
+	private String serialNumber;
+	/**
+	 * 原因
+	 */
+	@ApiModelProperty(value = "原因")
+	private String cause;
+
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
+	/**
+	 * 金额
+	 */
+	@ApiModelProperty(value = "金额")
+	private BigDecimal amount;
+	/**
+	 * 类型
+	 */
+	@ApiModelProperty(value = "类型")
+	private String type;
+
+
+}

+ 36 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/vo/WechatMarkVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.vo;
+
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 微信支付异常表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WechatMarkVO对象", description = "微信支付异常表")
+public class WechatMarkVO extends WechatMark {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamServiceDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.dto;
+
+import org.springblade.system.entity.ParamService;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 业务参数配置表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ParamServiceDTO extends ParamService {
+	private static final long serialVersionUID = 1L;
+
+}

+ 104 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ParamService.java

@@ -0,0 +1,104 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 业务参数配置表实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@TableName("blade_param_service")
+@ApiModel(value = "ParamService对象", description = "业务参数配置表")
+public class ParamService implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 参数名
+	 */
+	@ApiModelProperty(value = "参数名")
+	private String paramName;
+	/**
+	 * 参数键
+	 */
+	@ApiModelProperty(value = "参数键")
+	private String paramKey;
+	/**
+	 * 参数值
+	 */
+	@ApiModelProperty(value = "参数值")
+	private String paramValue;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remark;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private Long createDept;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 状态
+	 */
+	@ApiModelProperty(value = "状态")
+	private Integer status;
+	/**
+	 * 是否已删除
+	 */
+	@ApiModelProperty(value = "是否已删除")
+	private Integer isDeleted;
+
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
+
+}

+ 11 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -64,6 +64,8 @@ public interface ISysClient {
 	String GET_ROLE_ID_BY_ALIAS=API_PREFIX+"/getRoleByAlias";
 	String DEPT_BY_IDS = API_PREFIX + "/selectByDeptIds";
 	String TENANT_ID_BY_APP_ID = API_PREFIX + "/tenantIdByAppId";
+	String GET_PARAM_SERVICE = API_PREFIX + "/getParamService";
+
 
 	/**
 	 * 通过租户id获取全部租户别名
@@ -307,4 +309,13 @@ public interface ISysClient {
 	 */
 	@GetMapping(TENANT_ID_BY_APP_ID)
 	R<Tenant> getTenantByAppId(@RequestParam("appId") String appId);
+
+	/**
+	 * 获取业务参数配置
+	 *
+	 * @param paramKey 参数key
+	 * @return String
+	 */
+	@GetMapping(GET_PARAM_SERVICE)
+	String getParamService(@RequestParam("paramKey") String paramKey);
 }

+ 5 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -165,4 +165,9 @@ public class ISysClientFallback implements ISysClient {
 		return R.fail("获取数据失败");
 	}
 
+	@Override
+	public String getParamService(String paramKey) {
+		return "获取数据失败";
+	}
+
 }

+ 36 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamServiceVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.vo;
+
+import org.springblade.system.entity.ParamService;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 业务参数配置表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ParamServiceVO对象", description = "业务参数配置表")
+public class ParamServiceVO extends ParamService {
+	private static final long serialVersionUID = 1L;
+
+}

+ 20 - 5
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java

@@ -905,7 +905,8 @@ public class CorpsDescController extends BladeController {
 	@GetMapping("/selectCorpsDetails")
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "查询船公司", notes = "传入corpsDesc")
-	public R<CorpsDesc> selectCorpsDetails() {
+	public R<List<Map<String, String>>> selectCorpsDetails() {
+		List<Map<String, String>> mapList = new ArrayList<>();
 		if (AuthUtil.getUserRole().equals("客户")) {
 			CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>()
 				.eq(CorpsAttn::getUserId, AuthUtil.getUserId())
@@ -919,14 +920,28 @@ public class CorpsDescController extends BladeController {
 				if (ObjectUtils.isNull(detsils)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
-					detsils.setCorpsAddrList(corpsAddrService.list(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
+					List<CorpsAddr> corpsAddrList = corpsAddrService.list(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
 						.eq(CorpsAddr::getTenantId, AuthUtil.getTenantId())
-						.eq(CorpsAddr::getPid, detsils.getId())));
-					return R.data(detsils);
+						.eq(CorpsAddr::getPid, detsils.getId())
+						.eq(CorpsAddr::getAbbreviation, "送货地址"));
+					for (CorpsAddr corpsAddr : corpsAddrList) {
+						Map<String, String> map = new HashMap<>();
+						map.put("attn", corpsAddr.getAttn());
+						map.put("tel", corpsAddr.getTel());
+						map.put("alias", corpsAddr.getAlias());
+						if (ObjectUtils.isNotNull(corpsAddr.getAddr())){
+							List<String> list = Arrays.asList(corpsAddr.getAddr().split(","));
+							String addr = list.stream().distinct().collect(Collectors.joining());
+							addr = addr.replace(",", "");
+							map.put("addr", addr + corpsAddr.getDetailedAddress());
+						}
+						mapList.add(map);
+					}
+					return R.data(mapList);
 				}
 			}
 		}
-		return R.data(new CorpsDesc());
+		return R.data(mapList);
 	}
 
 }

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

@@ -17,8 +17,10 @@ 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;
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
 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.SybConstants;
 import org.springblade.pay.tonglianPayment.utils.SybUtil;
@@ -58,6 +60,9 @@ 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;//费用
@@ -87,7 +92,6 @@ public class TongLianPaymentController extends BladeController {
 
 	/**
 	 * 微信订单回调接口
-	 *
 	 */
 	@ApiIgnore
 	@RequestMapping(value = "/notify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
@@ -106,9 +110,15 @@ public class TongLianPaymentController extends BladeController {
 //			}
 			boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));// 接受到推送通知,首先验签
 			System.out.println("验签结果:" + isSign);
+			WechatMark wechatMark = new WechatMark();
+			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))));
 					//支付成功业务处理
 					Order order = new Order();
 					order.setSysNo(AnalysisMapUtils.getString("cusorderid", params));
@@ -214,15 +224,18 @@ public class TongLianPaymentController extends BladeController {
 								selectOrder.setBalanceAmount(amount);
 								orderDescClient.updateOrder(selectOrder);
 							} else {
-								System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,修改单据已收账款失败");
+								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,修改单据已收账款失败");
+								wechatMark.setStatus(2);
 							}
 							//生成账单
 							R paymentApply = financeClient.paymentApplyParts(applyDTO);
 							if (!paymentApply.isSuccess()) {
-								System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
+								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
+								wechatMark.setStatus(2);
 							}
 						} else {
-							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
+							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
+							wechatMark.setStatus(2);
 						}
 
 						R<List<OrderItems>> res = orderItemsClient.selectList(selectOrder.getId());
@@ -251,13 +264,15 @@ public class TongLianPaymentController extends BladeController {
 						R billNo = serialClient.getBillNo(orderNew.getBillType(), orderNew.getTradeType(), orderNew.getBillType());
 						if (billNo.getCode() != 200) {
 							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败1");
+							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败1");
+							wechatMark.setStatus(2);
 						}
 						orderNew.setSysNo((String) billNo.getData());
 						R clientBillNo = serialClient.getBillNo(orderNew.getBillType(), orderNew.getTradeType(), orderNew.getBillType());
 						if (!clientBillNo.isSuccess()) {
 							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败2");
+							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败2");
+							wechatMark.setStatus(2);
 						}
 						if (ObjectUtils.isNotNull(orderNew.getCorpId())) {
 							CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderNew.getCorpId());
@@ -303,7 +318,8 @@ public class TongLianPaymentController extends BladeController {
 									r.getData().setStockPrice(stockPrice);
 									stockGoodsClient.updateStock(r.getData());
 								} else {
-									System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到库存信息,修改库存数据失败");
+									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到库存信息,修改库存数据失败");
+									wechatMark.setStatus(2);
 								}
 								orderItems.setId(null);
 								orderItems.setPid(orderNew.getId());
@@ -315,19 +331,28 @@ public class TongLianPaymentController extends BladeController {
 								orderItemsClient.submit(orderItems);
 							}
 						} else {
-							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据明细信息");
+							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据明细信息");
+							wechatMark.setStatus(2);
 						}
 					} else {
-						System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
+						wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
+						wechatMark.setStatus(2);
 					}
-					System.out.println("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
+					wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
+					wechatMark.setStatus(1);
+					wechatMarkService.save(wechatMark);
 					response.getWriter().write(AnalysisMapUtils.setXML("SUCCESS", "OK"));
 				} else {
 					//订单编号
-					System.out.println("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败");
+					wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败!"+"原因:"+AnalysisMapUtils.getString("errmsg", params));
+					wechatMark.setStatus(2);
+					wechatMarkService.save(wechatMark);
 					response.getWriter().write(AnalysisMapUtils.setXML("error", "OK"));
 				}
 			} else {
+				wechatMark.setCause("签名验证失败");
+				wechatMark.setStatus(2);
+				wechatMarkService.save(wechatMark);
 				throw new RuntimeException("签名验证失败");
 			}
 		} catch (Exception e) {

+ 141 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/WechatMarkController.java

@@ -0,0 +1,141 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
+import org.springblade.pay.tonglianPayment.vo.WechatMarkVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 微信支付异常表 控制器
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/wechatmark")
+@Api(value = "微信支付异常表", tags = "微信支付异常表接口")
+public class WechatMarkController extends BladeController {
+
+	private final IWechatMarkService wechatMarkService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入wechatMark")
+	public R<WechatMark> detail(WechatMark wechatMark) {
+		WechatMark detail = wechatMarkService.getOne(Condition.getQueryWrapper(wechatMark));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 微信支付异常表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入wechatMark")
+	public R<IPage<WechatMark>> list(WechatMark wechatMark, Query query) {
+		LambdaQueryWrapper<WechatMark> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(WechatMark::getIsDeleted, 0)
+			.eq(WechatMark::getTenantId, AuthUtil.getTenantId())
+			.eq(ObjectUtils.isNotNull(wechatMark.getType()), WechatMark::getType, wechatMark.getType())
+			.like(ObjectUtils.isNotNull(wechatMark.getSerialNumber()), WechatMark::getSerialNumber, wechatMark.getSerialNumber())
+			.like(ObjectUtils.isNotNull(wechatMark.getSrcBillNo()), WechatMark::getSrcBillNo, wechatMark.getSrcBillNo())
+			.eq(ObjectUtils.isNotNull(wechatMark.getStatus()), WechatMark::getStatus, wechatMark.getStatus());
+		if (ObjectUtils.isNotNull(wechatMark.getCreateTimeList()) && wechatMark.getCreateTimeList().size() > 0) {
+			lambdaQueryWrapper.ge(WechatMark::getCreateTime, wechatMark.getCreateTimeList().get(0));
+			lambdaQueryWrapper.le(WechatMark::getCreateTime, wechatMark.getCreateTimeList().get(1));
+		}
+		lambdaQueryWrapper.orderByDesc(WechatMark::getCreateTime);
+		IPage<WechatMark> pages = wechatMarkService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 微信支付异常表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入wechatMark")
+	public R<IPage<WechatMarkVO>> page(WechatMarkVO wechatMark, Query query) {
+		IPage<WechatMarkVO> pages = wechatMarkService.selectWechatMarkPage(Condition.getPage(query), wechatMark);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 微信支付异常表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入wechatMark")
+	public R save(@Valid @RequestBody WechatMark wechatMark) {
+		return R.status(wechatMarkService.save(wechatMark));
+	}
+
+	/**
+	 * 修改 微信支付异常表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入wechatMark")
+	public R update(@Valid @RequestBody WechatMark wechatMark) {
+		return R.status(wechatMarkService.updateById(wechatMark));
+	}
+
+	/**
+	 * 新增或修改 微信支付异常表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入wechatMark")
+	public R submit(@Valid @RequestBody WechatMark wechatMark) {
+		return R.status(wechatMarkService.saveOrUpdate(wechatMark));
+	}
+
+
+	/**
+	 * 删除 微信支付异常表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(wechatMarkService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}

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

@@ -6,15 +6,18 @@ 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.WechatMark;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
 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.purchase.sales.entity.Order;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -24,6 +27,7 @@ import java.util.TreeMap;
 @AllArgsConstructor
 public class PaymentClient implements IPaymentClient {
 	private final IPaymentService paymentService;//支付
+	private final IWechatMarkService wechatMarkService;//支付
 
 	@Override
 	public R getWeChatPayment(Order order) {
@@ -86,7 +90,13 @@ public class PaymentClient implements IPaymentClient {
 	public R<Map<String, String>> refund(PaymentDTO paymentDTO) {
 		SybPayService service = new SybPayService();
 		try {
-			Map<String, String> map = service.refund(paymentDTO.getTrxamt(), paymentDTO.getReqsn(),paymentDTO.getOldtrxid(),paymentDTO.getOldreqsn());
+			WechatMark wechatMark = new WechatMark();
+			wechatMark.setCreateTime(new Date());
+			wechatMark.setType("退款");
+			wechatMark.setSrcBillNo(paymentDTO.getOldreqsn());
+			wechatMark.setSerialNumber(paymentDTO.getOldtrxid());
+			wechatMark.setAmount(new BigDecimal(paymentDTO.getTrxamt()));
+			Map<String, String> map = service.refund(paymentDTO.getTrxamt(), paymentDTO.getReqsn(), paymentDTO.getOldtrxid(), paymentDTO.getOldreqsn());
 			print(map);
 			if (map == null) {
 				throw new Exception("返回数据错误");
@@ -94,8 +104,22 @@ public class PaymentClient implements IPaymentClient {
 			String return_code = AnalysisMapUtils.getString("retcode", map);
 			String return_msg = AnalysisMapUtils.getString("retmsg", map);
 			if (return_code.equalsIgnoreCase("FAIL")) {
+				if ("3008".equals(map.get("trxstatus"))) {
+					wechatMark.setCause("订单" + paymentDTO.getOldreqsn() + "退款失败!原因:账户余额不足");
+					wechatMark.setStatus(4);
+				} else if ("3999".equals(map.get("trxstatus"))) {
+					wechatMark.setCause("订单" + paymentDTO.getOldreqsn() + "退款失败!原因:金额错误,当前可退货金额为:0.00");
+					wechatMark.setStatus(4);
+				} else {
+					wechatMark.setCause("订单" + paymentDTO.getOldreqsn() + "退款失败!原因:"+return_msg);
+					wechatMark.setStatus(4);
+					wechatMarkService.save(wechatMark);
+				}
 				throw new RuntimeException("退款失败," + return_msg);
 			} else if (return_code.equalsIgnoreCase("SUCCESS")) {
+				wechatMark.setCause("订单" + paymentDTO.getOldreqsn() + "退款成功");
+				wechatMark.setStatus(3);
+				wechatMarkService.save(wechatMark);
 				return R.data(map);
 			}
 		} catch (Exception e) {

+ 42 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/mapper/WechatMarkMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.mapper;
+
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import org.springblade.pay.tonglianPayment.vo.WechatMarkVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 微信支付异常表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+public interface WechatMarkMapper extends BaseMapper<WechatMark> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param wechatMark
+	 * @return
+	 */
+	List<WechatMarkVO> selectWechatMarkPage(IPage page, WechatMarkVO wechatMark);
+
+}

+ 25 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/mapper/WechatMarkMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.pay.tonglianPayment.mapper.WechatMarkMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="wechatMarkResultMap" type="org.springblade.pay.tonglianPayment.entity.WechatMark">
+        <id column="id" property="id"/>
+        <result column="remark" property="remark"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="src_id" property="srcId"/>
+        <result column="serial_number" property="serialNumber"/>
+        <result column="cause" property="cause"/>
+    </resultMap>
+
+
+    <select id="selectWechatMarkPage" resultMap="wechatMarkResultMap">
+        select * from blade_weChat_mark where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/IWechatMarkService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.service;
+
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import org.springblade.pay.tonglianPayment.vo.WechatMarkVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 微信支付异常表 服务类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+public interface IWechatMarkService extends IService<WechatMark> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param wechatMark
+	 * @return
+	 */
+	IPage<WechatMarkVO> selectWechatMarkPage(IPage<WechatMarkVO> page, WechatMarkVO wechatMark);
+
+}

+ 41 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/WechatMarkServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.pay.tonglianPayment.service.impl;
+
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import org.springblade.pay.tonglianPayment.vo.WechatMarkVO;
+import org.springblade.pay.tonglianPayment.mapper.WechatMarkMapper;
+import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 微信支付异常表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Service
+public class WechatMarkServiceImpl extends ServiceImpl<WechatMarkMapper, WechatMark> implements IWechatMarkService {
+
+	@Override
+	public IPage<WechatMarkVO> selectWechatMarkPage(IPage<WechatMarkVO> page, WechatMarkVO wechatMark) {
+		return page.setRecords(baseMapper.selectWechatMarkPage(page, wechatMark));
+	}
+
+}

+ 8 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/utils/SybPayService.java

@@ -1,13 +1,21 @@
 package org.springblade.pay.tonglianPayment.utils;
 
+import lombok.AllArgsConstructor;
+import org.jetbrains.annotations.NotNull;
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
+import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
 import org.springblade.system.cache.ParamCache;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.Map;
 import java.util.TreeMap;
 
 import static org.springblade.common.constant.TenantConstant.PAYMENT_PARAMETER;
 
+
 public class SybPayService {
+
 	/**
 	 * @param trxamt
 	 * @param reqsn

+ 11 - 8
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -383,14 +383,17 @@ public class OrderDescClient implements IOrderDescClient {
 			}
 
 		}
-		//微信退款
-		PaymentDTO paymentDTO = new PaymentDTO();
-		paymentDTO.setTrxamt(order.getDebitAmount().multiply(new BigDecimal(100)).intValue());
-		paymentDTO.setReqsn(selectOrder.getSysNo());
-		paymentDTO.setOldreqsn(order.getSysNo());
-		paymentDTO.setOldtrxid(order.getOldTrxId());
-		return paymentClient.refund(paymentDTO);
-
+		if ("234557".equals(AuthUtil.getTenantId())) {
+			return R.data(new HashMap<>());
+		} else {
+			//微信退款
+			PaymentDTO paymentDTO = new PaymentDTO();
+			paymentDTO.setTrxamt(order.getDebitAmount().multiply(new BigDecimal(100)).intValue());
+			paymentDTO.setReqsn(selectOrder.getSysNo());
+			paymentDTO.setOldreqsn(order.getSysNo());
+			paymentDTO.setOldtrxid(order.getOldTrxId());
+			return paymentClient.refund(paymentDTO);
+		}
 	}
 
 	@Override

+ 4 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -156,6 +156,8 @@ public class AppPartsController extends BladeController {
 				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByAsc(Order::getConfirmStatus);
+			}else {
+				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			}
 		} else if ("1".equals(order.getSort())) {
 			if ("1".equals(order.getTypeSort())) {
@@ -168,6 +170,8 @@ public class AppPartsController extends BladeController {
 				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByDesc(Order::getConfirmStatus);
+			}else {
+				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			}
 		} else {
 			if ("234557".equals(AuthUtil.getTenantId())) {

+ 37 - 42
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -2941,11 +2941,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					//修箱审批流程
 					if ("XSJH".equals(order.getBillType())) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(1003, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(1003, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 
-						auditProecessDTO.setProcessType("销售订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.XSJH"));
 						auditProecessDTO.setCheckType("YPJ-XSJH");
 						auditProecessDTO.setUrl("/salesOrderTwo/index");
 						auditProecessDTO.setPageLabel("销售计划单");
@@ -3403,8 +3403,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						}
 					}
 				}
-				R<String> r = dictBizClient.getOneByValue("to_examine", "是否启用", AuthUtil.getTenantId());
-				if (r.isSuccess() && "1".equals(r.getData())) {
+				if ("1".equals(sysClient.getParamService("approval.process"))) {
 					//审批数据
 					AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
 					//获取审批级次
@@ -3412,24 +3411,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 					AuditPathsActs pathsActs;
 					//修箱审批流程
-					if ("XS".equals(order.getBillType())) {
+					if ("XS".equals(order.getBillType()) && "1".equals(sysClient.getParamService("approval.process.XS"))) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(112, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XS")), sysClient.getParamService("approval.field.XS"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(112, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XS")), sysClient.getParamService("approval.field.XS"));
 
-						auditProecessDTO.setProcessType("销售订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.XS"));
 						/* 洗箱审批流程  */
-					} else if ("CG".equals(order.getBillType())) {
+					} else if ("CG".equals(order.getBillType()) && "1".equals(sysClient.getParamService("approval.process.CG"))) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(111, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.CG")), sysClient.getParamService("approval.field.CG"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(111, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.CG")), sysClient.getParamService("approval.field.CG"));
 
-						auditProecessDTO.setProcessType("采购订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.CG"));
 
 					} else {
-						throw new SecurityException("请核失败:请核标识设置不正确");
+						throw new SecurityException("请核未开启");
 					}
 
 					// 审批流程
@@ -3598,11 +3597,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					//修箱审批流程
 					if ("XSJH".equals(order.getBillType())) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(1003, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(1003, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 
-						auditProecessDTO.setProcessType("销售订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.XSJH"));
 						auditProecessDTO.setCheckType("YPJ-XSJH");
 						auditProecessDTO.setUrl("/salesOrderTwo/index");
 						auditProecessDTO.setPageLabel("销售计划单");
@@ -3852,8 +3851,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					}
 				}
 			} else {
-				R<String> dictKey = dictBizClient.getOneByValue("to_examine", "是否启用", AuthUtil.getTenantId());
-				if (dictKey.isSuccess() && "1".equals(dictKey.getData())) {
+				if ("1".equals(sysClient.getParamService("approval.process"))) {
 					// 订单时间
 					order.setStatus(9);
 					order.setBusinesDate(new Date());
@@ -4009,24 +4007,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 					AuditPathsActs pathsActs;
 					//修箱审批流程
-					if ("XS".equals(order.getBillType())) {
+					if ("XS".equals(order.getBillType()) && "1".equals(sysClient.getParamService("approval.process.XS"))) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(112, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XS")), sysClient.getParamService("approval.field.XS"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(112, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XS")), sysClient.getParamService("approval.field.XS"));
 
-						auditProecessDTO.setProcessType("销售订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.XS"));
 						/* 洗箱审批流程  */
-					} else if ("CG".equals(order.getBillType())) {
+					} else if ("CG".equals(order.getBillType()) && "1".equals(sysClient.getParamService("approval.process.CG"))) {
 						//是否开启流程
-						pathsActs = iCheckClient.getActsByActId(111, "status");
+						pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.CG")), sysClient.getParamService("approval.field.CG"));
 						//获取审批信息
-						auditPathsLevels = iCheckClient.listLevelsByActId(111, "status");
+						auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.CG")), sysClient.getParamService("approval.field.CG"));
 
-						auditProecessDTO.setProcessType("采购订单审批");
+						auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.CG"));
 
 					} else {
-						throw new SecurityException("请核失败:请核标识设置不正确");
+						throw new SecurityException("请核未开启");
 					}
 
 					// 没开启审批流直接走 通过流程
@@ -4357,20 +4355,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if ("XSTH".equals(newOrder.getBillType())) {
 			//是否开启流程
 
-			pathsActs = iCheckClient.getActsByActId(1105, "status");
+			pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("return.approval.id.XS")), sysClient.getParamService("return.approval.field"));
 			//获取审批信息
-			auditPathsLevels = iCheckClient.listLevelsByActId(1105, "status");
-
-			auditProecessDTO.setProcessType("财务退款审批");
+			auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("return.approval.id.XS")), sysClient.getParamService("return.approval.field"));
+			auditProecessDTO.setProcessType(sysClient.getParamService("return.approval.name.XS"));
 			/* 洗箱审批流程  */
 		} else if ("CGTH".equals(newOrder.getBillType())) {
 			//是否开启流程
-			pathsActs = iCheckClient.getActsByActId(Integer.parseInt(ParamCache.getValue(RETURN_APPROVAL_ID_CG)), ParamCache.getValue(RETURN_APPROVAL_FIELD));
+			pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("return.approval.id.XS")), sysClient.getParamService("return.approval.field"));
 			//获取审批信息
-			auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(ParamCache.getValue(RETURN_APPROVAL_ID_CG)), ParamCache.getValue(RETURN_APPROVAL_FIELD));
-
-			auditProecessDTO.setProcessType(ParamCache.getValue(RETURN_APPROVAL_NAME_CG));
-
+			auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("return.approval.id.XS")), sysClient.getParamService("return.approval.field"));
+			auditProecessDTO.setProcessType(sysClient.getParamService("return.approval.name.CG"));
 		} else {
 			throw new SecurityException("请核失败:请核标识设置不正确");
 		}
@@ -5338,7 +5333,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					int cgxj = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
 						.eq(Order::getTenantId, AuthUtil.getTenantId())
 						.eq(Order::getCreateUser, userId)
-						.eq(Order::getBillType, "CGXJ"));
+						.eq(Order::getBillType, "BJ"));
 					if (cgxj != 0) {
 						Map<String, Object> map = new HashMap<>();
 						map.put("name", res.getData().getRealName());
@@ -5525,11 +5520,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				//修箱审批流程
 				if ("XSJH".equals(order.getBillType())) {
 					//是否开启流程
-					pathsActs = iCheckClient.getActsByActId(1003, "status");
+					pathsActs = iCheckClient.getActsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 					//获取审批信息
-					auditPathsLevels = iCheckClient.listLevelsByActId(1003, "status");
+					auditPathsLevels = iCheckClient.listLevelsByActId(Integer.parseInt(sysClient.getParamService("approval.id.XSJH")), sysClient.getParamService("approval.field.XSJH"));
 
-					auditProecessDTO.setProcessType("销售订单审批");
+					auditProecessDTO.setProcessType(sysClient.getParamService("approval.name.XSJH"));
 					auditProecessDTO.setCheckType("YPJ-XSJH");
 					auditProecessDTO.setUrl("/salesOrderTwo/index");
 					auditProecessDTO.setPageLabel("销售计划单");
@@ -5636,7 +5631,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					List<LandOrder> landOrderList = res.getData();
 					BigDecimal freightPay = landOrderList.stream().map(LandOrder::getFreightPay).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					BigDecimal freight = landOrderList.stream().map(LandOrder::getFreight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-					if ((order.getDebitAmount().multiply(new BigDecimal(OFFSET_RATIO))).compareTo((freightPay.add(freight))) > 0) {
+					if ((order.getDebitAmount().multiply(new BigDecimal(sysClient.getParamService("offset.ratio")))).compareTo((freightPay.add(freight))) > 0) {
 						throw new SecurityException("订单单号:" + order.getSysNo() + "订单金额大于运费抵消金额");
 					}
 				}

+ 126 - 0
blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamServiceController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.controller;
+
+import io.swagger.annotations.Api;
+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 org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.entity.ParamService;
+import org.springblade.system.vo.ParamServiceVO;
+import org.springblade.system.service.IParamServiceService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 业务参数配置表 控制器
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/paramservice")
+@Api(value = "业务参数配置表", tags = "业务参数配置表接口")
+public class ParamServiceController extends BladeController {
+
+	private final IParamServiceService paramServiceService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入paramService")
+	public R<ParamService> detail(ParamService paramService) {
+		ParamService detail = paramServiceService.getOne(Condition.getQueryWrapper(paramService));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 业务参数配置表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入paramService")
+	public R<IPage<ParamService>> list(ParamService paramService, Query query) {
+		IPage<ParamService> pages = paramServiceService.page(Condition.getPage(query), Condition.getQueryWrapper(paramService));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 业务参数配置表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入paramService")
+	public R<IPage<ParamServiceVO>> page(ParamServiceVO paramService, Query query) {
+		IPage<ParamServiceVO> pages = paramServiceService.selectParamServicePage(Condition.getPage(query), paramService);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 业务参数配置表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入paramService")
+	public R save(@Valid @RequestBody ParamService paramService) {
+		return R.status(paramServiceService.save(paramService));
+	}
+
+	/**
+	 * 修改 业务参数配置表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入paramService")
+	public R update(@Valid @RequestBody ParamService paramService) {
+		return R.status(paramServiceService.updateById(paramService));
+	}
+
+	/**
+	 * 新增或修改 业务参数配置表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入paramService")
+	public R submit(@Valid @RequestBody ParamService paramService) {
+		return R.status(paramServiceService.saveOrUpdate(paramService));
+	}
+
+	
+	/**
+	 * 删除 业务参数配置表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(paramServiceService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 7 - 0
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -54,6 +54,8 @@ public class SysClient implements ISysClient {
 
 	private final IRegionService regionService;
 
+	private final IParamServiceService paramServiceService;
+
 	@Override
 	@GetMapping(LIST_ROLE_ALIAS)
 	public R<List<Role>> listRoleAlias()
@@ -208,6 +210,11 @@ public class SysClient implements ISysClient {
 	}
 
 	@Override
+	public String getParamService(String paramKey) {
+		return paramServiceService.getValue(paramKey);
+	}
+
+	@Override
 	@GetMapping(TENANT_ID)
 	public R<Tenant> getTenant(String tenantId) {
 		return R.data(tenantService.getByTenantId(tenantId));

+ 42 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.mapper;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.ParamService;
+import org.springblade.system.vo.ParamServiceVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 业务参数配置表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+public interface ParamServiceMapper extends BaseMapper<ParamService> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param paramService
+	 * @return
+	 */
+	List<ParamServiceVO> selectParamServicePage(IPage page, ParamServiceVO paramService);
+}

+ 26 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.system.mapper.ParamServiceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="paramServiceResultMap" type="org.springblade.system.entity.ParamService">
+        <id column="id" property="id"/>
+        <result column="param_name" property="paramName"/>
+        <result column="param_key" property="paramKey"/>
+        <result column="param_value" property="paramValue"/>
+        <result column="remark" property="remark"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+
+    <select id="selectParamServicePage" resultMap="paramServiceResultMap">
+        select * from blade_param_service where is_deleted = 0
+    </select>
+
+</mapper>

+ 43 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java

@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.ParamService;
+import org.springblade.system.vo.ParamServiceVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务参数配置表 服务类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+public interface IParamServiceService extends IService<ParamService> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param paramService
+	 * @return
+	 */
+	IPage<ParamServiceVO> selectParamServicePage(IPage<ParamServiceVO> page, ParamServiceVO paramService);
+
+	String getValue(String paramKey);
+}

+ 51 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java

@@ -0,0 +1,51 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.Param;
+import org.springblade.system.entity.ParamService;
+import org.springblade.system.vo.ParamServiceVO;
+import org.springblade.system.mapper.ParamServiceMapper;
+import org.springblade.system.service.IParamServiceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务参数配置表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-02-23
+ */
+@Service
+public class ParamServiceServiceImpl extends ServiceImpl<ParamServiceMapper, ParamService> implements IParamServiceService {
+
+	@Override
+	public IPage<ParamServiceVO> selectParamServicePage(IPage<ParamServiceVO> page, ParamServiceVO paramService) {
+		return page.setRecords(baseMapper.selectParamServicePage(page, paramService));
+	}
+
+	@Override
+	public String getValue(String paramKey) {
+		ParamService param = this.getOne(Wrappers.<ParamService>query().lambda().eq(ParamService::getParamKey, paramKey).eq(ParamService::getTenantId, AuthUtil.getTenantId()));
+		return param.getParamValue();
+	}
+
+}