From b7fb9d306b2014d0009edd92e44f88683751439c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B8=85?= Date: Mon, 3 Nov 2025 17:04:53 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=93=B6=E8=81=94=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-prod.yml | 6 ++--- .../ErpSettlementMaintainServiceImpl.java | 25 +++++++++++++++++-- .../common/core/domain/entity/SysDept.java | 4 +++ .../maintain/common/pay/YinLianPayApi.java | 5 ++-- maintain-ui/src/views/system/dept/index.vue | 8 +++++- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/maintain-admin/src/main/resources/application-prod.yml b/maintain-admin/src/main/resources/application-prod.yml index 4244908..d877bc1 100644 --- a/maintain-admin/src/main/resources/application-prod.yml +++ b/maintain-admin/src/main/resources/application-prod.yml @@ -184,9 +184,9 @@ sms: #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置 territory: ap-guangzhou pay: - appid: 10037e6f72b586db0172b6ea24ec0000 - appkey: 6f7a00170935445fbe25e67a5ce1be48 - url: https://test-api-open.chinaums.com/v6/poslink/transaction/pay + appid: 8a81c1bd96cf23aa0199cc0a8dcb187c + appkey: 02c4bc73faaf46c89e0c620345a11aec + url: https://api-mop.chinaums.com/v6/poslink/transaction/pay merchantCode: 123456789111115 terminalCode: gxrb0001 deviceType: 11 diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpSettlementMaintainServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpSettlementMaintainServiceImpl.java index 3172de7..a4b7789 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpSettlementMaintainServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpSettlementMaintainServiceImpl.java @@ -19,6 +19,7 @@ import com.maintain.business.mapper.ErpSettlementMaintainMapper; import com.maintain.business.mapper.ErpSettlementMaintainRepairFormMapper; import com.maintain.business.service.IErpSettlementMaintainService; import com.maintain.common.core.domain.PageQuery; +import com.maintain.common.core.domain.entity.SysDept; import com.maintain.common.core.page.TableDataInfo; import com.maintain.common.enums.RepairFormSettlementState; import com.maintain.common.enums.SettlementState; @@ -28,6 +29,7 @@ import com.maintain.common.pay.PayResponse; import com.maintain.common.pay.YinLianPayApi; import com.maintain.common.utils.StringUtils; import com.maintain.common.utils.redis.RedisUtils; +import com.maintain.system.mapper.SysDeptMapper; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -54,6 +56,7 @@ public class ErpSettlementMaintainServiceImpl implements IErpSettlementMaintainS private final ErpRepairFormMapper repairFormMapper; private final ErpClientMapper clientMapper; private final YinLianPayApi yinLianPayApi; + private final SysDeptMapper sysDeptMapper; @Value("${pay.merchantCode}") private String merchantCode; @@ -222,7 +225,25 @@ public class ErpSettlementMaintainServiceImpl implements IErpSettlementMaintainS @Override public Boolean pay(ErpSettlementMaintainPayBo bo) { ErpSettlementMaintain maintain = baseMapper.selectById(bo.getId()); - + List maintainRepairForms = settlementMaintainRepairFormMapper.selectList( + new LambdaQueryWrapper() + .eq(ErpSettlementMaintainRepairForm::getSettlementMaintainId, maintain.getId()) + ); + if (ObjectUtil.isEmpty(maintainRepairForms)) { + throw new ServiceException("当前结算单未绑定维修单,请检查后重试!"); + } + ErpSettlementMaintainRepairForm settlementMaintainRepairForm = maintainRepairForms.get(0); + ErpRepairForm repairForm = repairFormMapper.selectById(settlementMaintainRepairForm.getRepairFormId()); + if (ObjectUtil.isEmpty(repairForm)) { + throw new ServiceException("报修单不存在,请联系管理员!"); + } + SysDept sysDept = sysDeptMapper.selectById(repairForm.getRepairerDeptId()); + if (ObjectUtil.isEmpty(sysDept)) { + throw new ServiceException("维修车间不存在,请联系管理员!"); + } + if (ObjectUtil.isEmpty(sysDept.getTerminalCode())) { + throw new ServiceException("当前车间未填写终端号,请联系管理员添加!"); + } if (ObjectUtil.isEmpty(maintain)) { throw new ServiceException("当前支付订单不存在,请刷新后重试!"); } @@ -232,7 +253,7 @@ public class ErpSettlementMaintainServiceImpl implements IErpSettlementMaintainS // 生成一个时间戳单号 String orderNo = String.valueOf(System.currentTimeMillis()); int money = maintain.getPracticalMoney().movePointRight(2).intValue(); - PayResponse response = yinLianPayApi.pay(orderNo, money, bo.getPaymentAccount()); + PayResponse response = yinLianPayApi.pay(orderNo, money, bo.getPaymentAccount(), sysDept.getTerminalCode()); if (!response.getErrCode().equals("00")) { throw new ServiceException("结算单支付失败:"+ response.getErrInfo()); } diff --git a/maintain-common/src/main/java/com/maintain/common/core/domain/entity/SysDept.java b/maintain-common/src/main/java/com/maintain/common/core/domain/entity/SysDept.java index 287bc28..a64529d 100644 --- a/maintain-common/src/main/java/com/maintain/common/core/domain/entity/SysDept.java +++ b/maintain-common/src/main/java/com/maintain/common/core/domain/entity/SysDept.java @@ -85,5 +85,9 @@ public class SysDept extends TreeEntity { * 类型(1总公司 2分公司 3车队 4车间 5总公司管理部门 6分公司管理部门 7维修点) */ private String type; + /** + * 终端号 + */ + private String terminalCode; } diff --git a/maintain-common/src/main/java/com/maintain/common/pay/YinLianPayApi.java b/maintain-common/src/main/java/com/maintain/common/pay/YinLianPayApi.java index d74af4c..b458e65 100644 --- a/maintain-common/src/main/java/com/maintain/common/pay/YinLianPayApi.java +++ b/maintain-common/src/main/java/com/maintain/common/pay/YinLianPayApi.java @@ -29,8 +29,6 @@ public class YinLianPayApi { private String url; @Value("${pay.merchantCode}") private String merchantCode; - @Value("${pay.terminalCode}") - private String terminalCode; @Value("${pay.deviceType}") private String deviceType; @Value("${pay.payMode}") @@ -70,9 +68,10 @@ public class YinLianPayApi { * @param merchantOrderId 订单号 * @param transactionAmount 交易金额 * @param payCode 支付码 + * @param terminalCode 终端号 * @return 支付结果 */ - public PayResponse pay(String merchantOrderId,int transactionAmount, String payCode) { + public PayResponse pay(String merchantOrderId,int transactionAmount, String payCode, String terminalCode) { // 组建请求报文 PayBody reqBody = new PayBody(); reqBody.merchantCode = merchantCode; diff --git a/maintain-ui/src/views/system/dept/index.vue b/maintain-ui/src/views/system/dept/index.vue index 7e07e03..13f9d00 100644 --- a/maintain-ui/src/views/system/dept/index.vue +++ b/maintain-ui/src/views/system/dept/index.vue @@ -172,6 +172,11 @@ + + + + +