From 77ad4788416a7e7a15dc15d0d2a01d304519262b Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期六, 11 十月 2025 10:36:34 +0800 Subject: [PATCH] 采购相关问题 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java | 178 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 137 insertions(+), 41 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 8a0c1b0..8ef66b0 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 @@ -67,10 +67,10 @@ private TSysCommissionMapper sysCommissionMapper; @Resource - private TCrmClinicMapper crmClinicMapper; + private TCrmClinicMapper crmClinicMapper; @Resource - private TCrmSupplierMapper crmSupplierMapper; + private TCrmSupplierMapper crmSupplierMapper; @Resource private SysUserMapper sysUserMapper; @@ -88,45 +88,44 @@ private TErpProcurementGoodsService erpProcurementGoodsService; - @Override public PageInfo<TErpProcurementVo> pageList(TErpProcurementQuery query, SysUser user) { Integer roleType = user.getRoleType(); String supplierClinicId = null; - if(roleType == 4){ + if (roleType == 4) { // 供应商 TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class) .eq(TCrmSupplier::getUserId, user.getUserId()) .last("LIMIT 1")); - supplierClinicId =crmSupplier.getId(); + supplierClinicId = crmSupplier.getId(); } - if(roleType == 5){ + if (roleType == 5) { // 诊所 TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); - supplierClinicId =crmClinic.getId(); + supplierClinicId = crmClinic.getId(); } - String sTime=null; - String eTime =null; - if(query.getTime()!=null && !query.getTime().isEmpty()){ + String sTime = null; + String eTime = null; + if (query.getTime() != null && !query.getTime().isEmpty()) { String[] split = query.getTime().split(" - "); sTime = split[0] + " 00:00:00"; eTime = split[1] + " 23:59:59"; } PageInfo<TErpProcurementVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); - List<TErpProcurementVo> list = this.baseMapper.pageList(query,pageInfo,user,sTime,eTime,supplierClinicId); - if(list.isEmpty()){ + List<TErpProcurementVo> list = this.baseMapper.pageList(query, pageInfo, user, sTime, eTime, supplierClinicId); + if (list.isEmpty()) { return pageInfo; } List<String> ids = list.stream().map(TErpProcurementVo::getId).collect(Collectors.toList()); List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList - (new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids).eq(TErpProcurementGoods::getSupplierId, supplierClinicId)); - List<TSysCommission> tSysCommissions =new ArrayList<>(); - if(!tErpProcurementGoods.isEmpty()){ + (new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids)); + List<TSysCommission> tSysCommissions = new ArrayList<>(); + if (!tErpProcurementGoods.isEmpty()) { List<String> collect = tErpProcurementGoods.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList()); tSysCommissions = sysCommissionMapper.selectList(new LambdaQueryWrapper<TSysCommission>().in(TSysCommission::getTErpProcurementGoodsId, collect)); } @@ -136,11 +135,11 @@ tErpProcurementVo.setTypeNum(size); BigDecimal reduce = collect.stream().map(TErpProcurementGoods::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add); tErpProcurementVo.setTotalPrice(reduce); - if(!collect.isEmpty()){ + if (!collect.isEmpty()) { List<String> collect1 = collect.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList()); List<TSysCommission> collect2 = tSysCommissions.stream().filter(e -> collect1.contains(e.getTErpProcurementGoodsId())).collect(Collectors.toList()); - BigDecimal reduce1 = collect2.stream().filter(e->e.getType()==1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal reduce2 = collect2.stream().filter(e->e.getType()==2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce1 = collect2.stream().filter(e -> e.getType() == 1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce2 = collect2.stream().filter(e -> e.getType() == 2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); tErpProcurementVo.setPlatformMoney(reduce1); tErpProcurementVo.setSupplierMoney(reduce2); } @@ -153,23 +152,81 @@ } @Override - public TErpProcurementDetailVo detail(String id, SysUser user, String goodsName) { + public PageInfo<TErpProcurementVo> pageListWarehouse(TErpProcurementQuery query, SysUser user) { + Integer roleType = user.getRoleType(); String supplierClinicId = null; - if(roleType == 4){ + if (roleType == 6) { // 供应商 TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class) .eq(TCrmSupplier::getUserId, user.getUserId()) .last("LIMIT 1")); - supplierClinicId =crmSupplier.getId(); + supplierClinicId = crmSupplier.getId(); + + + String sTime = null; + String eTime = null; + if (query.getTime() != null && !query.getTime().isEmpty()) { + String[] split = query.getTime().split(" - "); + sTime = split[0] + " 00:00:00"; + eTime = split[1] + " 23:59:59"; + } + PageInfo<TErpProcurementVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TErpProcurementVo> list = this.baseMapper.pageListWarehouse(query, pageInfo, user, sTime, eTime, supplierClinicId); +// if (list.isEmpty()) { +// return pageInfo; +// } +// List<String> ids = list.stream().map(TErpProcurementVo::getId).collect(Collectors.toList()); +// List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList +// (new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids)); +// List<TSysCommission> tSysCommissions = new ArrayList<>(); +// if (!tErpProcurementGoods.isEmpty()) { +// List<String> collect = tErpProcurementGoods.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList()); +// tSysCommissions = sysCommissionMapper.selectList(new LambdaQueryWrapper<TSysCommission>().in(TSysCommission::getTErpProcurementGoodsId, collect)); +// } +// for (TErpProcurementVo tErpProcurementVo : list) { +// List<TErpProcurementGoods> collect = tErpProcurementGoods.stream().filter(e -> e.getProcurementId().equals(tErpProcurementVo.getId())).collect(Collectors.toList()); +// int size = collect.stream().map(TErpProcurementGoods::getGoodsId).collect(Collectors.toSet()).size(); +// tErpProcurementVo.setTypeNum(size); +// BigDecimal reduce = collect.stream().map(TErpProcurementGoods::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// tErpProcurementVo.setTotalPrice(reduce); +// if (!collect.isEmpty()) { +// List<String> collect1 = collect.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList()); +// List<TSysCommission> collect2 = tSysCommissions.stream().filter(e -> collect1.contains(e.getTErpProcurementGoodsId())).collect(Collectors.toList()); +// BigDecimal reduce1 = collect2.stream().filter(e -> e.getType() == 1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal reduce2 = collect2.stream().filter(e -> e.getType() == 2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); +// tErpProcurementVo.setPlatformMoney(reduce1); +// tErpProcurementVo.setSupplierMoney(reduce2); +// } +// +// } + + + pageInfo.setRecords(list); + return pageInfo; } - if(roleType == 5){ + return null; + } + + @Override + public TErpProcurementDetailVo detail(String id, SysUser user, String goodsName) { + + Integer roleType = user.getRoleType(); + String supplierClinicId = null; + if (roleType == 4) { + // 供应商 + TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class) + .eq(TCrmSupplier::getUserId, user.getUserId()) + .last("LIMIT 1")); + supplierClinicId = crmSupplier.getId(); + } + if (roleType == 5) { // 诊所 TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); - supplierClinicId =crmClinic.getId(); + supplierClinicId = crmClinic.getId(); } TErpProcurementDetailVo tErpProcurementVo = new TErpProcurementDetailVo(); @@ -187,18 +244,21 @@ tErpProcurementVo.setUserName(sysUser.getNickName()); tErpProcurementVo.setCreateTime(tErpProcurement.getCreateTime()); tErpProcurementVo.setUpdateTime(tErpProcurement.getUpdateTime()); - if(tErpProcurement.getWarehousingUserId()!=null){ + if (tErpProcurement.getWarehousingUserId() != null) { SysUser sysUser1 = sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getWarehousingUserId())); tErpProcurementVo.setOperName(sysUser1.getNickName()); } tErpProcurementVo.setStatus(tErpProcurement.getStatus()); tErpProcurementVo.setSendTime(tErpProcurement.getSendTime()); + tErpProcurementVo.setMoney(tErpProcurement.getMoney()); + tErpProcurementVo.setTotalPrice(tErpProcurement.getPayMoney()); + List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList (new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, id) .like(goodsName != null && !goodsName.isEmpty(), TErpProcurementGoods::getGoodsName, goodsName) .eq(TErpProcurementGoods::getSupplierId, supplierClinicId)); - if(tErpProcurementGoods.isEmpty()){ + if (tErpProcurementGoods.isEmpty()) { return tErpProcurementVo; } @@ -210,10 +270,11 @@ tErpProcurementDetailNextVo.setNum(tErpProcurementGood.getPurchaseCount()); tErpProcurementDetailNextVo.setTotalPrice(tErpProcurementGood.getTotalPrice()); tErpProcurementDetailNextVo.setQuasiNumber(tErpProcurementGood.getQuasiNumber()); + tErpProcurementDetailNextVo.setPurchasePrice(tErpProcurementGood.getSalesAmount()); List<TSysCommission> tSysCommissions = sysCommissionMapper.selectList(new LambdaQueryWrapper<TSysCommission>().eq(TSysCommission::getTErpProcurementGoodsId, tErpProcurementGood.getId())); - if(!tSysCommissions.isEmpty()){ + if (!tSysCommissions.isEmpty()) { BigDecimal reduce = tSysCommissions.stream().filter(e -> e.getType() == 1).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); tErpProcurementDetailNextVo.setPlatformMoney(reduce); BigDecimal reduce1 = tSysCommissions.stream().filter(e -> e.getType() == 2).map(TSysCommission::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); @@ -229,24 +290,46 @@ @Override public PageInfo<TErpGoods> pageGoodsPageList(TErpGoodsQuery query, SysUser user) { PageInfo<TErpGoods> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); - PageInfo<TErpGoods> p =erpGoodsMapper.selectPage(pageInfo,new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource,1).isNotNull(TErpGoods::getClinicPurchasePrice).orderByDesc(BaseModel::getCreateTime)); + PageInfo<TErpGoods> p = erpGoodsMapper.selectPage(pageInfo, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).isNotNull(TErpGoods::getClinicPurchasePrice).orderByDesc(BaseModel::getCreateTime)); List<TErpGoods> list = p.getRecords(); List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); - if(!typeIds.isEmpty()){ + if (!typeIds.isEmpty()) { List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoods tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } - pageInfo.setRecords( list); + List<String> supplierClinicId = list.stream().filter(e -> e.getGoodsSource() == 1).map(TErpGoods::getSupplierClinicId).collect(Collectors.toList()); + if (!supplierClinicId.isEmpty()) { + List<TCrmSupplier> crmClinics = crmSupplierMapper.selectBatchIds(supplierClinicId); + for (TErpGoods tErpGoodsVO : list) { + crmClinics.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName())); + } + } + pageInfo.setRecords(list); return pageInfo; } @Override public List<TErpGoodsVO> inventoryNotEnoughList(SysUser user) { - List<TErpGoodsVO> list = this.baseMapper.inventoryNotEnoughList(user); + List<TErpGoodsVO> list = this.baseMapper.inventoryNotEnoughList(user); + List<String> typeIds = list.stream().map(TErpGoodsVO::getTypeId).collect(Collectors.toList()); + if (!typeIds.isEmpty()) { + List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); + for (TErpGoodsVO tErpGoodsVO : list) { + typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); + } + } + List<String> supplierClinicId = list.stream().filter(e -> e.getGoodsSource() == 1).map(TErpGoodsVO::getSupplierClinicId).collect(Collectors.toList()); + if (!supplierClinicId.isEmpty()) { + List<TCrmSupplier> crmSuppliers = crmSupplierMapper.selectBatchIds(supplierClinicId); + for (TErpGoodsVO tErpGoodsVO : list) { + crmSuppliers.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName())); + } + } + return list; } @@ -260,7 +343,7 @@ dto.setPlatformCommissionPrice(tErpGoodsVO.getPlatformCommissionPrice()); dto.setSupplierId(tErpGoodsVO.getSupplierClinicId()); dto.setGoodsSalesAmount(tErpGoodsVO.getClinicPurchasePrice()); - if(dto.getSalesAmount()==null){ + if (dto.getSalesAmount() == null) { dto.setSalesAmount(tErpGoodsVO.getClinicPurchasePrice()); } } @@ -272,21 +355,29 @@ List<AddProcurementDto> value = entry.getValue(); TErpProcurement tErpProcurement = new TErpProcurement(); tErpProcurement.setClinicId(clinicSupplierId); - tErpProcurement.setProcurementCode("C"+DateUtils.dateTimeNow()); + tErpProcurement.setProcurementCode("C" + DateUtils.dateTimeNow()); tErpProcurement.setSupplierId(supplierClinicId); tErpProcurement.setTermNo(supplier.getTermNo()); tErpProcurement.setMerchantNo(supplier.getRecvMerchantNo()); - tErpProcurement.setPayMoney(value.stream().map(AddProcurementDto::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + tErpProcurement.setCreateId(user.getUserId().toString()); + + BigDecimal all = BigDecimal.ZERO; + + for (AddProcurementDto addProcurementDto : value) { + BigDecimal multiply = addProcurementDto.getSalesAmount().multiply(BigDecimal.valueOf(addProcurementDto.getPurchaseCount())); + all = all.add(multiply); + } + tErpProcurement.setPayMoney(all); AddProcurementDto addProcurementDto = value.get(0); - if(addProcurementDto.getState()!=null && addProcurementDto.getState()==1){ + if (addProcurementDto.getState() != null && addProcurementDto.getState() == 1) { tErpProcurement.setStatus(1); - }else { + } else { tErpProcurement.setStatus(2); } ArrayList<TErpProcurementGoods> tErpProcurementGoods1 = new ArrayList<>(); - BigDecimal add =BigDecimal.ZERO; + BigDecimal add = BigDecimal.ZERO; for (AddProcurementDto dto : value) { TErpProcurementGoods tErpProcurementGoods = new TErpProcurementGoods(); @@ -301,26 +392,26 @@ tErpProcurementGoods.setUnitName(tErpGoodsUnit.getUnitName()); tErpProcurementGoods.setPurchasePrice(dto.getGoodsSalesAmount()); tErpProcurementGoods.setSalesAmount(dto.getSalesAmount()); - tErpProcurementGoods.setTotalPrice(dto.getSalesAmount().multiply(new BigDecimal(dto.getPurchaseCount()))); + tErpProcurementGoods.setTotalPrice(dto.getGoodsSalesAmount().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){ + if (tErpProcurementGoods.getSupplierMoney().doubleValue() < 0) { throw new RuntimeException("平台抽成不能大于售卖价格"); } - add = add.add(dto.getPlatformCommissionPrice()); + add = add.add(dto.getPlatformCommissionPrice().multiply(BigDecimal.valueOf(dto.getPurchaseCount()))); 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){ + if (tErpProcurement.getMoney().doubleValue() < 0) { throw new RuntimeException("金额设置错误,请联系平台管理员"); } this.save(tErpProcurement); - tErpProcurementGoods1.forEach(e->e.setProcurementId(tErpProcurement.getId())); + tErpProcurementGoods1.forEach(e -> e.setProcurementId(tErpProcurement.getId())); erpProcurementGoodsService.saveBatch(tErpProcurementGoods1); } @@ -336,6 +427,10 @@ TCrmSupplier supplier = crmSupplierMapper.selectById(tErpProcurement.getSupplierId()); detailProcurementVO.setSupplierName(supplier.getSupplierName()); detailProcurementVO.setUserName(sysUserMapper.selectUserById(Long.valueOf(tErpProcurement.getCreateId())).getUserName()); + TCrmClinic tCrmClinic = crmClinicMapper.selectById(tErpProcurement.getClinicId()); + detailProcurementVO.setClinicName(tCrmClinic.getClinicName()); + detailProcurementVO.setClinicAddress(tCrmClinic.getClinicAddress()); + detailProcurementVO.setLogisticsNumber(tErpProcurement.getLogisticsNumber()); List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new QueryWrapper<TErpProcurementGoods>().eq("procurement_id", id)); ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>(); for (TErpProcurementGoods tErpProcurementGoods : list) { @@ -347,6 +442,7 @@ detailProcurementNextVO.setNum(tErpProcurementGoods.getPurchaseCount()); detailProcurementNextVO.setTotalPrice(tErpProcurement.getPayMoney()); detailProcurementNextVO.setId(tErpProcurementGoods.getId()); + detailProcurementNextVO.setPurchasePrice(tErpProcurementGoods.getPurchasePrice()); detailProcurementNextVOS.add(detailProcurementNextVO); } detailProcurementVO.setList(detailProcurementNextVOS); -- Gitblit v1.7.1