diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java index 13a93d091..6a8fd2dd7 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java @@ -29,7 +29,7 @@ import java.util.Map; @SpringBootTest(classes = ThirdPartyApp.class) public class PayTest { - // private final String baseUrl = "http://123.156.230.15:8089/api"; + // private final String baseUrl = "http://59.202.170.152:81/api"; // private final String baseUrl = "http://127.0.0.1:9999"; private final String baseUrl = "https://stgl.pj.gov.cn/api"; @@ -67,7 +67,7 @@ public class PayTest { Map paramsMap = new HashMap<>(); paramsMap.put("signPhone", LbRetailSignUtils.sm4Encrypt("17683843144", appM4KeyProd)); // paramsMap.put("signPhone", "8KKubCKESDN5TlUl3i0HaQ=="); - paramsMap.put("userId", 1875049673022279681L); + // paramsMap.put("userId", 1875049673022279681L); String body = JSONUtil.toJsonStr(paramsMap); // 发送请求 String res = HttpRequest.post(baseUrl + walletInfoUrl).contentType("application/json").header(apiCountersignProd(body)).body(body).execute().body(); diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java index 6fdfe731b..907ac832d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletBizRechargeEnum.java @@ -10,7 +10,7 @@ import java.util.List; @Getter @AllArgsConstructor public enum WalletBizRechargeEnum { - ADD("1", "添加"), + ADD("1", "充值"), REDUCTION("2", "记账扣款"), RETURN_CANTEEN("3", "退还各自食堂"), ; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeBindInvoiceDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeBindInvoiceDto.java new file mode 100644 index 000000000..e7903a352 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeBindInvoiceDto.java @@ -0,0 +1,17 @@ +package com.bsd.pjcloud.wallet.api.dto.recharge; + +import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeInvoiceEntityVo; +import lombok.Data; + +/** + * 充值记录绑定发票 + */ +@Data +public class WalletRechargeBindInvoiceDto extends WalletRechargeInvoiceEntityVo { + + /** + * 充值/扣款申请id + */ + private Long applyId; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java index 74718a078..b42e97e22 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeApplyEntity.java @@ -40,6 +40,12 @@ public class WalletRechargeApplyEntity extends Model @Schema(description = "流程id") private String processId; + /** + * 绑定发票id + */ + @Schema(description = "绑定发票id") + private Long invoiceId; + /** * 流程状态 */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeInvoiceEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeInvoiceEntity.java index 40550790c..fd5a7404c 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeInvoiceEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/recharge/WalletRechargeInvoiceEntity.java @@ -88,9 +88,9 @@ public class WalletRechargeInvoiceEntity extends Model { @@ -15,4 +17,9 @@ public interface WalletRechargeInvoiceService extends IService().eq(WalletRechargeApplyEntity::getUserId, walletId).eq(WalletRechargeApplyEntity::getProcessStatus, NodeStatusEnum.JXZ.getCode())); - return count >= 3; + return count >= 10; } /** diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java index 9a09413b8..2a374da7d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeInvoiceServiceImpl.java @@ -1,15 +1,19 @@ package com.bsd.pjcloud.wallet.service.impl.recharge; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; +import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletRechargeInvoiceStatusEnum; +import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeBindInvoiceDto; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeInvoiceEntity; @@ -17,6 +21,7 @@ import com.bsd.pjcloud.wallet.api.feign.RemoteWalletSettingService; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeInvoiceEntityItemVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeInvoiceEntityVo; +import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeApplyMapper; import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeImportMapper; import com.bsd.pjcloud.wallet.mapper.recharge.WalletRechargeInvoiceMapper; import com.bsd.pjcloud.wallet.service.WalletRechargeApplyService; @@ -24,8 +29,10 @@ import com.bsd.pjcloud.wallet.service.WalletRechargeInvoiceService; import com.bsd.pjcloud.wallet.utils.ConvertCnPriceUtil; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; /** @@ -36,6 +43,7 @@ import java.util.List; public class WalletRechargeInvoiceServiceImpl extends ServiceImpl implements WalletRechargeInvoiceService { private final WalletRechargeImportMapper importMapper; + private final WalletRechargeApplyMapper applyMapper; private final WalletRechargeApplyService applyService; @@ -49,8 +57,9 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl() + .eq(WalletRechargeInvoiceEntity::getApplyId, id) + .eq(WalletRechargeInvoiceEntity::getStatus, WalletRechargeInvoiceStatusEnum.DEFAULT.getCode()) + ); + if (ObjectUtil.isNotEmpty(InvoiceEntity)) { + result = BeanUtil.copyProperties(InvoiceEntity, WalletRechargeInvoiceEntityVo.class); + Double price = BigDecimal.valueOf(result.getTotalPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).doubleValue(); + result.setTotalPriceCnStr(ConvertCnPriceUtil.convert(String.valueOf(price))); + return result; + } + // 获取配置 WalletSettingVo walletSetting = remoteWalletSettingService.get().getData(); // 查询申请人 @@ -79,13 +102,13 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl importList = importMapper.selectList(new LambdaQueryWrapper().eq(WalletRechargeImportEntity::getApplyId, id)); Integer totalPrice = importList.stream().map(WalletRechargeImportEntity::getPrice).reduce(Integer::sum).orElse(0); // 转换为元 - double price = BigDecimal.valueOf(totalPrice).divide(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + Double price = BigDecimal.valueOf(totalPrice).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).doubleValue(); // 生成款项 WalletRechargeInvoiceEntityItemVo item = new WalletRechargeInvoiceEntityItemVo(); - item.setName(LocalDateTimeUtil.format(applyDetail.getImportTime(), DatePattern.NORM_MONTH_PATTERN)); + String itemName = LocalDateTimeUtil.format(applyDetail.getImportTime(), DatePattern.NORM_DATE_PATTERN) + "," + bizEnum.getDesc() + price + "元"; + item.setName(itemName); item.setPrice(price); - WalletRechargeInvoiceEntityVo result = new WalletRechargeInvoiceEntityVo(); result.setApplyId(applyDetail.getId()); result.setCode(getInvoiceCode()); result.setTime(applyDetail.getApplyTime()); @@ -95,9 +118,9 @@ public class WalletRechargeInvoiceServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper() + .set(WalletRechargeApplyEntity::getInvoiceId, entity.getId()) + .eq(WalletRechargeApplyEntity::getId, entity.getApplyId()); + applyMapper.update(updateWrapper); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/ConvertCnPriceUtil.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/ConvertCnPriceUtil.java index 50e58ada3..83bdfcc7a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/ConvertCnPriceUtil.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/ConvertCnPriceUtil.java @@ -24,6 +24,13 @@ public class ConvertCnPriceUtil { // 去掉分隔符 amount = amount.replace(",", ""); + String[] split = amount.split("\\."); + if (split.length > 1) { + if (split[1].length() == 1) { + amount = amount + "0"; + } + } + // 验证金额正确性 if (amount.equals("0.00")) { throw new IllegalArgumentException("金额不能为零."); @@ -89,4 +96,8 @@ public class ConvertCnPriceUtil { } return buffer.reverse().toString(); } + + public static void main(String[] args) { + System.out.println(convert("55.00")); + } }