From f41b11c958ef7d0416d194278d1fe7cd1a1e8219 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期三, 24 九月 2025 18:43:19 +0800 Subject: [PATCH] 拉卡拉支付 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java | 69 +++++++++++++++++++++++++++++++--- 1 files changed, 63 insertions(+), 6 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java index 99a65ec..8a0c1b0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.BaseModel; @@ -12,6 +13,7 @@ import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpProcurementQuery; import com.ruoyi.system.service.TErpGoodsService; +import com.ruoyi.system.service.TErpProcurementGoodsService; import com.ruoyi.system.service.TErpProcurementService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.*; @@ -26,7 +28,10 @@ import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.net.ssl.SSLContext; @@ -36,6 +41,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.ArrayList; @@ -77,6 +83,9 @@ @Resource private TErpGoodsUnitMapper erpGoodsUnitMapper; + + @Autowired + private TErpProcurementGoodsService erpProcurementGoodsService; @@ -238,18 +247,22 @@ @Override public List<TErpGoodsVO> inventoryNotEnoughList(SysUser user) { List<TErpGoodsVO> list = this.baseMapper.inventoryNotEnoughList(user); - - return null; + return list; } @Override - public String addProcurement(String clinicSupplierId, SysUser user, List<AddProcurementDto> dtos) { + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) + public void addProcurement(String clinicSupplierId, SysUser user, List<AddProcurementDto> dtos) { List<String> goodsIds = dtos.stream().map(AddProcurementDto::getGoodsId).collect(Collectors.toList()); List<TErpGoods> tErpGoods = erpGoodsMapper.selectBatchIds(goodsIds); for (AddProcurementDto dto : dtos) { TErpGoods tErpGoodsVO = tErpGoods.stream().filter(t -> t.getId().equals(dto.getGoodsId())).findFirst().get(); + dto.setPlatformCommissionPrice(tErpGoodsVO.getPlatformCommissionPrice()); dto.setSupplierId(tErpGoodsVO.getSupplierClinicId()); - dto.setGoodsSalesAmount(tErpGoodsVO.getSalesAmount()); + dto.setGoodsSalesAmount(tErpGoodsVO.getClinicPurchasePrice()); + if(dto.getSalesAmount()==null){ + dto.setSalesAmount(tErpGoodsVO.getClinicPurchasePrice()); + } } // 供应商分组 Map<String, List<AddProcurementDto>> supplierClinicIdListMap = dtos.stream().collect(Collectors.groupingBy(AddProcurementDto::getSupplierId)); @@ -271,7 +284,10 @@ }else { tErpProcurement.setStatus(2); } - this.save(tErpProcurement); + ArrayList<TErpProcurementGoods> tErpProcurementGoods1 = new ArrayList<>(); + + BigDecimal add =BigDecimal.ZERO; + for (AddProcurementDto dto : value) { TErpProcurementGoods tErpProcurementGoods = new TErpProcurementGoods(); tErpProcurementGoods.setProcurementId(tErpProcurement.getId()); @@ -285,15 +301,56 @@ tErpProcurementGoods.setUnitName(tErpGoodsUnit.getUnitName()); tErpProcurementGoods.setPurchasePrice(dto.getGoodsSalesAmount()); tErpProcurementGoods.setSalesAmount(dto.getSalesAmount()); + tErpProcurementGoods.setTotalPrice(dto.getSalesAmount().multiply(new BigDecimal(dto.getPurchaseCount()))); tErpProcurementGoods.setPurchaseCount(dto.getPurchaseCount()); tErpProcurementGoods.setSupplierId(supplierClinicId); tErpProcurementGoods.setRecvMerchantNo(supplier.getRecvMerchantNo()); + tErpProcurementGoods.setSupplierMoney(dto.getSalesAmount().subtract(dto.getPlatformCommissionPrice())); + if(tErpProcurementGoods.getSupplierMoney().doubleValue()<0){ + throw new RuntimeException("平台抽成不能大于售卖价格"); + } + add = add.add(dto.getPlatformCommissionPrice()); + tErpProcurementGoods1.add(tErpProcurementGoods); } + BigDecimal bigDecimal = tErpProcurement.getPayMoney().multiply(BigDecimal.valueOf(0.0038)).setScale(2, RoundingMode.HALF_UP); + tErpProcurement.setMoney(add.subtract(bigDecimal)); + if(tErpProcurement.getMoney().doubleValue()<0){ + throw new RuntimeException("金额设置错误,请联系平台管理员"); + } + this.save(tErpProcurement); + tErpProcurementGoods1.forEach(e->e.setProcurementId(tErpProcurement.getId())); + erpProcurementGoodsService.saveBatch(tErpProcurementGoods1); } - return ""; + } + + @Override + public DetailProcurementVO detailProcurement(String clinicSupplierId, SysUser user, String id) { + DetailProcurementVO detailProcurementVO = new DetailProcurementVO(); + TErpProcurement tErpProcurement = this.getById(id); + detailProcurementVO.setStatus(tErpProcurement.getStatus()); + detailProcurementVO.setCreateTime(tErpProcurement.getCreateTime()); + detailProcurementVO.setSendTime(tErpProcurement.getSendTime()); + TCrmSupplier supplier = crmSupplierMapper.selectById(tErpProcurement.getSupplierId()); + detailProcurementVO.setSupplierName(supplier.getSupplierName()); + detailProcurementVO.setUserName(sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getCreateId())).getUserName()); + List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new QueryWrapper<TErpProcurementGoods>().eq("procurement_id", id)); + ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>(); + for (TErpProcurementGoods tErpProcurementGoods : list) { + DetailProcurementNextVO detailProcurementNextVO = new DetailProcurementNextVO(); + detailProcurementNextVO.setGoodsName(tErpProcurementGoods.getGoodsName()); + detailProcurementNextVO.setQuasiNumber(tErpProcurementGoods.getQuasiNumber()); + detailProcurementNextVO.setPackingUnitName(tErpProcurementGoods.getUnitName()); + detailProcurementNextVO.setSalesAmount(tErpProcurementGoods.getSalesAmount()); + detailProcurementNextVO.setNum(tErpProcurementGoods.getPurchaseCount()); + detailProcurementNextVO.setTotalPrice(tErpProcurement.getPayMoney()); + detailProcurementNextVO.setId(tErpProcurementGoods.getId()); + detailProcurementNextVOS.add(detailProcurementNextVO); + } + detailProcurementVO.setList(detailProcurementNextVOS); + return detailProcurementVO; } } -- Gitblit v1.7.1