From 51bb4f3d869d17bcb0ad9f5e4179053fd4751407 Mon Sep 17 00:00:00 2001 From: PigBaoBei <2739175034@qq.com> Date: Wed, 24 Jul 2024 17:35:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=80=BC=E6=9C=8D=E5=8A=A1=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E3=80=81=E8=87=AA=E6=8F=90=E9=9B=B6=E6=8B=85=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/DistributionAddvalueMapper.xml | 8 +- .../service/IDistributionSignforService.java | 11 +- .../impl/DistributionAddvalueServiceImpl.java | 427 ++++++++++++------ .../impl/DistributionSignforServiceImpl.java | 50 ++ .../DistrilbutionBillLadingServiceImpl.java | 6 + 5 files changed, 353 insertions(+), 149 deletions(-) diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionAddvalueMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionAddvalueMapper.xml index 39794ca04..0f9484d56 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionAddvalueMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionAddvalueMapper.xml @@ -110,7 +110,13 @@ WHEN ldap.conditions =1 THEN '订制品' WHEN ldap.conditions =2 THEN '库存品' WHEN ldap.conditions =3 THEN '零担' - END AS packageType + END AS packageType, + ldap.client_id AS clientId, + ldap.client_name AS clientName, + ldap.brand_name AS brandName, + ldap.brand_id AS brandId, + ldap.unit_price AS unitPrice, + ldap.scan_user_name AS scanUserName FROM logpm_distribution_addvalue AS lda INNER JOIN logpm_distribution_addvalue_detail AS ldad ON ldad.addvalue_id = lda.id diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java index 60962172b..bfafa9103 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java @@ -18,10 +18,7 @@ package com.logpm.distribution.service; import com.logpm.distribution.bean.Resp; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.logpm.distribution.dto.DistributionAddvalueDTO; -import com.logpm.distribution.dto.DistributionSignforDTO; -import com.logpm.distribution.dto.DistributionSignforExcelDTO; -import com.logpm.distribution.dto.DistrilbutionAppsignforDTO; +import com.logpm.distribution.dto.*; import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO; import com.logpm.distribution.entity.DistributionReservationEntity; import com.logpm.distribution.entity.DistributionSignPrintEntity; @@ -365,4 +362,10 @@ public interface IDistributionSignforService extends BaseService checkAddValuePCPackageList(Long reservationId); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAddvalueServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAddvalueServiceImpl.java index f41084709..befdcde6c 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAddvalueServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAddvalueServiceImpl.java @@ -16,11 +16,9 @@ */ package com.logpm.distribution.service.impl; -import com.alibaba.fastjson.serializer.BigDecimalCodec; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.logpm.basicdata.entity.BasicdataClientEntity; import com.logpm.basicdata.entity.BasicdataFactoryCategoryEntity; -import com.logpm.basicdata.entity.BasicdataPriceEntity; import com.logpm.basicdata.feign.IBasicdataClientClient; import com.logpm.basicdata.feign.IBasicdataFactoryCategoryClient; import com.logpm.basicdata.feign.IBasicdataPriceClient; @@ -38,7 +36,6 @@ import com.logpm.distribution.service.*; import com.logpm.distribution.vo.DistributionAddvaluePackageVO; import com.logpm.distribution.vo.DistributionAddvalueVO; import com.logpm.distribution.vo.app.DistributionAppAddvalueVO; -import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.util.Strings; import org.springblade.common.constant.loading.LoadingStatusConstant; @@ -46,6 +43,8 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -53,10 +52,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -68,23 +64,37 @@ import java.util.stream.Collectors; * @since 2023-09-11 */ @Service -@AllArgsConstructor @Slf4j public class DistributionAddvalueServiceImpl extends BaseServiceImpl implements IDistributionAddvalueService { - private final DistributionAddvalueMapper distributionAddvalueMapper; - private final DistributionReservationMapper distributionReservationMapper; - private final IDistributionStockListService distributionStockListService; - private final DistributionDeliveryListMapper distributionDeliveryListMapper; - // private final IDistributionAddvalueService distributionAddvalueService; - private final IDistributionAddvaluePackageService distributionAddvaluePackageService; - private final IDistributionAddvalueDetailService distributionAddvalueDetailService; - private final DistributionAddvalueDetailMapper distributionAddvalueDetailMapper; - private final DistributionAddvaluePackageMapper distributionAddvaluePackageMapper; - private final IDistributionLoadscanService distributionLoadscanService; - private final IBasicdataPriceClient basicdataPriceClient; - private final IBasicdataClientClient basicdataClientClient; - private final IBasicdataFactoryCategoryClient basicdataFactoryCategoryClient; + @Autowired + private DistributionAddvalueMapper distributionAddvalueMapper; + @Autowired + private DistributionReservationMapper distributionReservationMapper; + @Autowired + private IDistributionStockListService distributionStockListService; + @Autowired + private DistributionDeliveryListMapper distributionDeliveryListMapper; + @Autowired + // private IDistributionAddvalueService distributionAddvalueService; + private IDistributionAddvaluePackageService distributionAddvaluePackageService; + @Autowired + private IDistributionAddvalueDetailService distributionAddvalueDetailService; + @Autowired + private DistributionAddvalueDetailMapper distributionAddvalueDetailMapper; + @Autowired + private DistributionAddvaluePackageMapper distributionAddvaluePackageMapper; + @Autowired + private IDistributionLoadscanService distributionLoadscanService; + @Autowired + private IBasicdataPriceClient basicdataPriceClient; + @Autowired + private IBasicdataClientClient basicdataClientClient; + @Autowired + private IBasicdataFactoryCategoryClient basicdataFactoryCategoryClient; + @Autowired + @Lazy + private IDistributionSignforService distributionSignforService; @Override @@ -388,10 +398,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl packageEntityList = distributionAppAddvalueDTO.getPackageEntityList(); - List packageDTOList = packageEntityList.stream().filter(p -> Func.isNotEmpty(p.getQuantity()) && p.getQuantity() > 0).collect(Collectors.toList()); - if (Func.isEmpty(packageDTOList)) { - return Resp.scanFail("操作失败", "无可用包件信息"); - } + //查询是否重复添加 DistributionAddvalueEntity addvalueEntity = distributionAddvalueMapper.selectOne(Wrappers.query().lambda() .eq(DistributionAddvalueEntity::getAddvalueId, distributionAppAddvalueDTO.getAddvalueType()) @@ -413,6 +420,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl addValueDTO = new HashMap<>(); + addValueDTO.put("reservationId",distributionAppAddvalueDTO.getReservationId().toString()); + //超区需要默认当前所有包件 + List superZoneList = distributionSignforService.checkAddValuePCPackageList(distributionAppAddvalueDTO.getReservationId()); + if (!Func.isEmpty(superZoneList)){ + packageEntityList = superZoneList; + //进行费用均摊 + BigDecimal fee = distributionAppAddvalueDTO.getFee(); + if (fee.equals(BigDecimal.ZERO)){ + currencyUnitPrice = BigDecimal.ZERO; + }else { + currencyUnitPrice = fee.divide(BigDecimal.valueOf(packageEntityList.size())); + } + } break; case "3": if (Func.isEmpty(distributionAppAddvalueDTO.getDistance())) { @@ -447,10 +469,28 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl specialCarList = distributionSignforService.checkAddValuePCPackageList(distributionAppAddvalueDTO.getReservationId()); + if (!Func.isEmpty(specialCarList)){ + packageEntityList = specialCarList; + //进行费用均摊 + BigDecimal fee = distributionAppAddvalueDTO.getFee(); + if (fee.equals(BigDecimal.ZERO)){ + currencyUnitPrice = BigDecimal.ZERO; + }else { + currencyUnitPrice = fee.divide(BigDecimal.valueOf(packageEntityList.size())); + } + + } break; } + if (packageEntityList.isEmpty()) { + return R.fail("无可用包件信息"); + } + List packageDTOList = packageEntityList.stream().filter(p -> Func.isNotEmpty(p.getQuantity()) && p.getQuantity() > 0).collect(Collectors.toList()); + if (Func.isEmpty(packageDTOList)) { + return Resp.scanFail("操作失败", "无可用包件信息"); + } int total = packageEntityList.stream().mapToInt(DistributionAddvaluePackageDTO::getQuantity).sum(); - if (total == 0) { return Resp.scanFail("添加失败", "包件数量错误"); } else { @@ -481,79 +521,83 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl packageEntities = distributionAddvalueMapper.selectAddvaluePackageListByAddvalueType(distributionAppAddvalueDTO.getReservationId(), distributionAppAddvalueDTO.getAddvalueType()); Map addvaluePackageEntityMap = packageEntities.stream().collect(Collectors.toMap(DistributionAddvaluePackageEntity::getPackageId, Function.identity(), (k1, k2) -> k2)); + BigDecimal finalCurrencyUnitPrice = currencyUnitPrice; packageDTOList.stream().forEach(p -> { + BigDecimal unitPrice = null; if (Func.isEmpty(addvaluePackageEntityMap.get(p.getPackageId()))) { - Integer conditions = p.getConditions(); - BigDecimal unitPrice = null; - //获取结算单价 - List priceDispatchAddClientVOS = basicdataPriceClient.dispatchAddPrice(BasicdatPriceApiVO.builder().clientId(p.getClientId().toString()).brandId(p.getBrandId().toString()).build()); - if (Func.isEmpty(priceDispatchAddClientVOS)) { - //此客户品牌下无单价信息 - unitPrice = new BigDecimal(BigInteger.ZERO); - } - switch (conditions) { - case 1: - //查询订制品结算品类 - BasicdataFactoryCategoryEntity entity1 = new BasicdataFactoryCategoryEntity(); - entity1.setFirsts(p.getFirsts()); - entity1.setSeconds(p.getSecond()); - entity1.setThirds(p.getThirdProduct()); - entity1.setMaterielName(p.getMaterialName()); - entity1.setBrandId(p.getBrandId()); - BasicdataFactoryCategoryEntity factoryCategoryEntity1 = basicdataFactoryCategoryClient.findEntityByThreeCategory(entity1); - if (Func.isEmpty(factoryCategoryEntity1)){ - unitPrice = new BigDecimal(BigInteger.ZERO); - } - if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity1)){ - //获取单价 - unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity1,distributionAppAddvalueDTO); - } - //判定该包件是否属于该客户 - List parcelListEntities = distributionReservationMapper.selectPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); + if (Func.isEmpty(distributionAppAddvalueDTO.getFee())){ + Integer conditions = p.getConditions(); + //获取结算单价 + List priceDispatchAddClientVOS = basicdataPriceClient.dispatchAddPrice(BasicdatPriceApiVO.builder().clientId(p.getClientId().toString()).brandId(p.getBrandId().toString()).build()); + if (Func.isEmpty(priceDispatchAddClientVOS)) { + //此客户品牌下无单价信息 + unitPrice = new BigDecimal(BigInteger.ZERO); + } + switch (conditions) { + case 1: + //查询订制品结算品类 + BasicdataFactoryCategoryEntity entity1 = new BasicdataFactoryCategoryEntity(); + entity1.setFirsts(p.getFirsts()); + entity1.setSeconds(p.getSecond()); + entity1.setThirds(p.getThirdProduct()); + entity1.setMaterielName(p.getMaterialName()); + entity1.setBrandId(p.getBrandId()); + BasicdataFactoryCategoryEntity factoryCategoryEntity1 = basicdataFactoryCategoryClient.findEntityByThreeCategory(entity1); + if (Func.isEmpty(factoryCategoryEntity1)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity1)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity1,distributionAppAddvalueDTO); + } + //判定该包件是否属于该客户 + List parcelListEntities = distributionReservationMapper.selectPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); // boolean packageFlag = parcelListEntities.stream().allMatch(pack -> !Func.equals(pack.getId(), p.getPackageId())); - boolean packageFlag = parcelListEntities.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList()).contains(p.getPackageId()); - if (!packageFlag) { - throw new RuntimeException("不属于该客户包件"); - } - break; - case 2: - BasicdataFactoryCategoryEntity entity2 = new BasicdataFactoryCategoryEntity(); - entity2.setMaterielName(p.getMaterialName()); - BasicdataFactoryCategoryEntity factoryCategoryEntity2 = basicdataFactoryCategoryClient.findEntityByMaterielName(entity2); - if (Func.isEmpty(factoryCategoryEntity2)){ - unitPrice = new BigDecimal(BigInteger.ZERO); - } - if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity2)){ - //获取单价 - unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity2,distributionAppAddvalueDTO); - } - List detailEntities = distributionReservationMapper.selectInventoryListByReservation(distributionAppAddvalueDTO.getReservationId()); + boolean packageFlag = parcelListEntities.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList()).contains(p.getPackageId()); + if (!packageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; + case 2: + BasicdataFactoryCategoryEntity entity2 = new BasicdataFactoryCategoryEntity(); + entity2.setMaterielName(p.getMaterialName()); + BasicdataFactoryCategoryEntity factoryCategoryEntity2 = basicdataFactoryCategoryClient.findEntityByMaterielName(entity2); + if (Func.isEmpty(factoryCategoryEntity2)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity2)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity2,distributionAppAddvalueDTO); + } + List detailEntities = distributionReservationMapper.selectInventoryListByReservation(distributionAppAddvalueDTO.getReservationId()); // boolean inventoryPackageFlag = detailEntities.stream().allMatch(pack -> !Func.equals(pack.getId(), p.getPackageId())); - boolean inventoryPackageFlag = detailEntities.stream().map(DisStockListDetailEntity::getId).collect(Collectors.toList()).contains(p.getPackageId()); - if (!inventoryPackageFlag) { - throw new RuntimeException("不属于该客户包件"); - } - break; - case 3: - BasicdataFactoryCategoryEntity entity3 = new BasicdataFactoryCategoryEntity(); - entity3.setMaterielName(p.getMaterialName()); - BasicdataFactoryCategoryEntity factoryCategoryEntity3 = basicdataFactoryCategoryClient.findEntityByCategoryName(entity3); - if (Func.isEmpty(factoryCategoryEntity3)){ - unitPrice = new BigDecimal(BigInteger.ZERO); - } - if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity3)){ - //获取单价 - unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity3,distributionAppAddvalueDTO); - } - List distributionParcelNumberDTOS = distributionReservationMapper.selectZeroPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); + boolean inventoryPackageFlag = detailEntities.stream().map(DisStockListDetailEntity::getId).collect(Collectors.toList()).contains(p.getPackageId()); + if (!inventoryPackageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; + case 3: + BasicdataFactoryCategoryEntity entity3 = new BasicdataFactoryCategoryEntity(); + entity3.setMaterielName(p.getMaterialName()); + BasicdataFactoryCategoryEntity factoryCategoryEntity3 = basicdataFactoryCategoryClient.findEntityByCategoryName(entity3); + if (Func.isEmpty(factoryCategoryEntity3)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity3)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity3,distributionAppAddvalueDTO); + } + List distributionParcelNumberDTOS = distributionReservationMapper.selectZeroPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); // boolean zeroPackageFlag = distributionParcelNumberDTOS.stream().allMatch(pack -> !Func.equals(pack.getId(), p.getPackageId())); - boolean zeroPackageFlag = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getId).collect(Collectors.toList()).contains(p.getPackageId()); - if (!zeroPackageFlag) { - throw new RuntimeException("不属于该客户包件"); - } - break; + boolean zeroPackageFlag = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getId).collect(Collectors.toList()).contains(p.getPackageId()); + if (!zeroPackageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; + } + }else { + unitPrice = finalCurrencyUnitPrice; } - p.setAddvalueDetailId(distributionAddvalueDetailEntity.getId()); DistributionAddvaluePackageEntity addvaluePackageEntity = Func.copy(p, DistributionAddvaluePackageEntity.class); if (Func.isNotEmpty(p.getZeroQuantity())) { @@ -563,6 +607,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl handleAddvaluePackageEntity(List records) { + List packageDTOList= new ArrayList<>(); + records.forEach(r->{ + DistributionAddvaluePackageDTO dto = Func.copy(r, DistributionAddvaluePackageDTO.class); + packageDTOList.add(dto); + + }); + return packageDTOList; + } + private BigDecimal getUnitPrice(List priceDispatchAddClientVOS, BasicdataFactoryCategoryEntity factoryCategoryEntity, DistributionAppAddvalueDTO distributionAppAddvalueDTO) { List collect = priceDispatchAddClientVOS.stream().filter(f -> f.getCategoryId().equals(factoryCategoryEntity.getId())).collect(Collectors.toList()); @@ -860,31 +915,65 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl packageEntityList = distributionAppAddvalueDTO.getPackageEntityList(); + List packageEntityList = new ArrayList<>(); + if (distributionAppAddvalueDTO.getAddvalueType().equals("2") || distributionAppAddvalueDTO.getAddvalueType().equals("6")){ + //专车和超区进行全部包件查询 + Map addValueDTO = new HashMap<>(); + addValueDTO.put("reservationId",distributionAppAddvalueDTO.getReservationId().toString()); + //超区需要默认当前所有包件 + List superZoneList = distributionSignforService.checkAddValuePCPackageList(distributionAppAddvalueDTO.getReservationId()); + if (!superZoneList.isEmpty()) { + packageEntityList = superZoneList; + } + }else { + packageEntityList = distributionAppAddvalueDTO.getPackageEntityList(); + } if (Func.isEmpty(packageEntityList)) { - log.error("################在干什么?参数都不会传"); - return R.fail("在干什么?参数都不会传"); + return R.fail("无包件信息进行移除"); + } + //查询增值服务详情 + DistributionAddvalueDetailEntity distributionAddvalueDetailEntity = distributionAddvalueDetailMapper.selectById(distributionAppAddvalueDTO.getAddvalueDetailId()); + if (Func.isEmpty(distributionAddvalueDetailEntity)){ + log.error("################查询增值服务详情错误id:{}",distributionAppAddvalueDTO.getAddvalueDetailId()); } + DistributionAddvalueEntity addvalueEntity = this.getById(distributionAddvalueDetailEntity.getAddvalueId()); + if (Func.isEmpty(addvalueEntity)){ + log.error("################查询增值服务错误id:{}",distributionAddvalueDetailEntity.getAddvalueId()); + } + AtomicReference newFee = new AtomicReference<>(BigDecimal.ZERO); List packageIds = packageEntityList.stream().map(DistributionAddvaluePackageDTO::getPackageId).collect(Collectors.toList()); + packageEntityList.forEach(p->{ + newFee.set(distributionAddvalueDetailEntity.getFee().subtract(p.getUnitPrice())); + + }); List addvaluePackageEntities = distributionAddvaluePackageMapper.selectList(Wrappers.query().lambda() .eq(DistributionAddvaluePackageEntity::getReservationId, distributionAppAddvalueDTO.getReservationId()) .eq(DistributionAddvaluePackageEntity::getAddvalueDetailId, distributionAppAddvalueDTO.getAddvalueDetailId()) ); - //查看取消增值服务的保健是否存在该项增值服务中,存在才能继续执行 - boolean isExistence = packageIds.stream().allMatch(id -> addvaluePackageEntities.stream().map(DistributionAddvaluePackageEntity::getPackageId).collect(Collectors.toList()).contains(id)); - if (isExistence) { - if (packageIds.size() == addvaluePackageEntities.size()) { - //这里就需要对整个增值服务项进行删除 - distributionAddvalueDetailMapper.deleteAddvalueDetailById(distributionAppAddvalueDTO.getAddvalueDetailId()); - distributionAddvalueMapper.deleteAddvalue(distributionAppAddvalueDTO.getReservationId(), distributionAppAddvalueDTO.getAddvalueType()); - } - packageIds.forEach(id -> { - distributionAddvaluePackageMapper.deleteAddvaluePackageByDetailId(distributionAppAddvalueDTO.getReservationId(), id, distributionAppAddvalueDTO.getAddvalueDetailId()); - }); - } else { - log.error("###########该包件不存在增值服务项包件列表中"); - return R.fail("取消包件失败,该包件不存在增值服务项列表中"); + if (Objects.equals(packageIds.size(),addvaluePackageEntities.size())){ + //此增值服务项进行全部取消 + //这里就需要对整个增值服务项进行删除 + distributionAddvalueDetailMapper.deleteAddvalueDetailById(distributionAppAddvalueDTO.getAddvalueDetailId()); + distributionAddvalueMapper.deleteAddvalue(distributionAppAddvalueDTO.getReservationId(), distributionAppAddvalueDTO.getAddvalueType()); + }else { + int sum = packageEntityList.stream().mapToInt(DistributionAddvaluePackageEntity::getQuantity).sum(); + //维护详情的件数和金额 + distributionAddvalueDetailEntity.setFee(newFee.get()); + distributionAddvalueDetailEntity.setNum(distributionAddvalueDetailEntity.getNum() - sum); + distributionAddvalueDetailMapper.updateById(distributionAddvalueDetailEntity); } + //查看取消增值服务的保健是否存在该项增值服务中,存在才能继续执行 + boolean isExistence = packageIds.stream().allMatch(id -> addvaluePackageEntities.stream().map(DistributionAddvaluePackageEntity::getPackageId).collect(Collectors.toList()).contains(id)); + if (isExistence) { + packageIds.forEach(id -> { + distributionAddvaluePackageMapper.deleteAddvaluePackageByDetailId(distributionAppAddvalueDTO.getReservationId(), id, distributionAppAddvalueDTO.getAddvalueDetailId()); + }); + } else { + log.error("###########该包件不存在增值服务项包件列表中"); + return R.fail("取消包件失败,该包件不存在增值服务项列表中"); + } + + return R.success("操作成功"); } @@ -895,10 +984,13 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl packageDTOMap = packageEntityList.stream().collect(Collectors.toMap(DistributionAddvaluePackageDTO::getPackageId, Function.identity(), (k1, k2) -> k2)); List zeroPackageIds = packageEntityList.stream().filter(p -> p.getConditions() == 3).collect(Collectors.toList()).stream().map(DistributionAddvaluePackageDTO::getPackageId).collect(Collectors.toList()); //这里需要查询出原来的增值服务项详情 DistributionAddvalueDetailEntity detailEntity = distributionAddvalueDetailMapper.selectById(distributionAppAddvalueDTO.getAddvalueDetailId()); + totalFee[0] = totalFee[0].add(detailEntity.getFee()); //查询出对应所有增值服务项的包件信息 List addvaluePackageEntities = distributionAddvaluePackageMapper.selectList(Wrappers.query().lambda() .eq(DistributionAddvaluePackageEntity::getReservationId, distributionAppAddvalueDTO.getReservationId()) @@ -927,9 +1019,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl>>>>>>>>:{}", string); } - if (increasePackage.size() > 0) { - //统计该项增值服务包件数量 int num = detailEntity.getNum() + increasePackage.size(); detailEntity.setNum(num); @@ -941,13 +1031,6 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl { - - if (Func.isNotEmpty(packageDTOMap.get(ip))) { //新增包件 + BigDecimal unitPrice = null; + //计算包件单价 DistributionAddvaluePackageDTO distributionAddvaluePackageDTO = packageDTOMap.get(ip); List priceDispatchAddClientVOS = basicdataPriceClient.dispatchAddPrice(BasicdatPriceApiVO.builder().clientId(distributionAddvaluePackageDTO.getClientId().toString()).brandId(distributionAddvaluePackageDTO.getClientId().toString()).build()); + //查询价格模板 if (Func.isEmpty(priceDispatchAddClientVOS)){ - //TODO 结算品类 + unitPrice = BigDecimal.ZERO; + } + DistributionAddvaluePackageDTO dto = packageDTOMap.get(ip); + switch (dto.getConditions()) { + case 1: + //查询订制品结算品类 + BasicdataFactoryCategoryEntity entity1 = new BasicdataFactoryCategoryEntity(); + entity1.setFirsts(dto.getFirsts()); + entity1.setSeconds(dto.getSecond()); + entity1.setThirds(dto.getThirdProduct()); + entity1.setMaterielName(dto.getMaterialName()); + entity1.setBrandId(dto.getBrandId()); + BasicdataFactoryCategoryEntity factoryCategoryEntity1 = basicdataFactoryCategoryClient.findEntityByThreeCategory(entity1); + if (Func.isEmpty(factoryCategoryEntity1)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity1)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity1,distributionAppAddvalueDTO); + } + //判定该包件是否属于该客户 + List parcelListEntities = distributionReservationMapper.selectPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); +// boolean packageFlag = parcelListEntities.stream().allMatch(pack -> !Func.equals(pack.getId(), p.getPackageId())); + boolean packageFlag = parcelListEntities.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList()).contains(dto.getPackageId()); + if (!packageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; + case 2: + BasicdataFactoryCategoryEntity entity2 = new BasicdataFactoryCategoryEntity(); + entity2.setMaterielName(dto.getMaterialName()); + BasicdataFactoryCategoryEntity factoryCategoryEntity2 = basicdataFactoryCategoryClient.findEntityByMaterielName(entity2); + if (Func.isEmpty(factoryCategoryEntity2)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity2)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity2,distributionAppAddvalueDTO); + } + List detailEntities = distributionReservationMapper.selectInventoryListByReservation(distributionAppAddvalueDTO.getReservationId()); + boolean inventoryPackageFlag = detailEntities.stream().map(DisStockListDetailEntity::getId).collect(Collectors.toList()).contains(dto.getPackageId()); + if (!inventoryPackageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; + case 3: + BasicdataFactoryCategoryEntity entity3 = new BasicdataFactoryCategoryEntity(); + entity3.setMaterielName(dto.getMaterialName()); + BasicdataFactoryCategoryEntity factoryCategoryEntity3 = basicdataFactoryCategoryClient.findEntityByCategoryName(entity3); + if (Func.isEmpty(factoryCategoryEntity3)){ + unitPrice = new BigDecimal(BigInteger.ZERO); + } + if (!Func.isEmpty(priceDispatchAddClientVOS)&&Func.isNotEmpty(factoryCategoryEntity3)){ + //获取单价 + unitPrice = getUnitPrice(priceDispatchAddClientVOS,factoryCategoryEntity3,distributionAppAddvalueDTO); + } + List distributionParcelNumberDTOS = distributionReservationMapper.selectZeroPackageListByReservationId(distributionAppAddvalueDTO.getReservationId()); +// boolean zeroPackageFlag = distributionParcelNumberDTOS.stream().allMatch(pack -> !Func.equals(pack.getId(), p.getPackageId())); + boolean zeroPackageFlag = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getId).collect(Collectors.toList()).contains(dto.getPackageId()); + if (!zeroPackageFlag) { + throw new RuntimeException("不属于该客户包件"); + } + break; } + //查询价格模板 DistributionAddvaluePackageEntity distributionAddvaluePackageEntity = distributionAddvaluePackageMapper.selectOne(Wrappers.query().lambda() .eq(DistributionAddvaluePackageEntity::getReservationId, distributionAddvaluePackageDTO.getReservationId()) @@ -1021,7 +1148,6 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl checkAddValuePCPackageList(Long reservationId) { + if (Func.isEmpty(reservationId)) { + log.error("##################无reservationId"); + return null; + } + List reservationStockarticleEntityList = distributionReservationMapper.selectStockArticleByReservationId(reservationId); + List addvaluePackageVOS = new ArrayList<>(); + Map addValueDTO = new HashMap<>(); + if (Func.isNotEmpty(reservationStockarticleEntityList)) { + List orderIds = reservationStockarticleEntityList.stream().map(DistributionReservationStockarticleEntity::getStockArticleId).collect(Collectors.toList()); + LambdaQueryWrapper orderQW = Wrappers.query().lambda().in(DistributionStockArticleEntity::getId, orderIds); + List orderList = distributionStockArticleService.list(orderQW); + orderList.forEach(rs -> { + if (rs.getIsZero().equals(IsOrNoConstant.no.getValue())) { + List addvaluepackageVO = distributionAddvalueMapper.selectAddvaluePackageVO(reservationId, rs.getId(), addValueDTO); + if (Func.isNotEmpty(addvaluepackageVO)) { + addvaluePackageVOS.addAll(addvaluepackageVO); + } + } else { + List addvalueZeroPackageVO = distributionAddvalueMapper.selectAddvalueZeroPackageVO(reservationId, rs.getId(), addValueDTO); + if (Func.isNotEmpty(addvalueZeroPackageVO)) { + addvaluePackageVOS.addAll(addvalueZeroPackageVO); + } + } + }); + } + List distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(reservationId); + if (Func.isNotEmpty(distributionReservationStocklistEntities)) { + List inventoryIds = distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList()); + LambdaQueryWrapper inventoryQW = Wrappers.query().lambda().in(DistributionStockListEntity::getId, inventoryIds); + List stockListEntityList = distributionStockListService.list(inventoryQW); + stockListEntityList.forEach(inven -> { + List addvalueinventoryPackageVO = distributionAddvalueMapper.selectAddvalueInventoryPackageVO(reservationId, inven.getId(), addValueDTO); + if (Func.isNotEmpty(addvalueinventoryPackageVO)) { + addvaluePackageVOS.addAll(addvalueinventoryPackageVO); + } + }); + } + List list = new ArrayList<>(); + if (!addvaluePackageVOS.isEmpty()) { + addvaluePackageVOS.forEach(a->{ + DistributionAddvaluePackageDTO dto = Func.copy(a, DistributionAddvaluePackageDTO.class); + list.add(dto); + }); + } + + return list; + } + private void buildNameAndPhone(List pushOldPackageSigning) { for (SignPushDataUnitDTO signPushDataUnitDTO : pushOldPackageSigning) { User user = bladeRedis.get(RedisKeyConstant.USER_NAME_PHONE_KEY + signPushDataUnitDTO.getAdministratorsId()); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java index 1e38aac1d..ddb2189c2 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java @@ -2065,6 +2065,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl zeroPackageList = new ArrayList<>(); parcelNumberEntityList.forEach(zp -> { //查询包件 DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(zp.getParcelListId()); @@ -2077,12 +2078,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>>>>>>>>>>>零担品类增加计划数量getHandQuantity:{}getDeliveryQuantity:{}(zp.getHandQuantity() - zp.getDeliveryQuantity()):{}", zp.getHandQuantity(), zp.getDeliveryQuantity(), (zp.getHandQuantity() - zp.getDeliveryQuantity())); distributionParcelNumberService.updateBillNum(zp.getParcelListId(), (zp.getHandQuantity() - zp.getDeliveryQuantity()), 1); + zeroPackageList.add(distributionReservationZeroPackageEntity); }); List collect = parcelNumberEntityList.stream().map(DistributionParcelNumberEntity::getParcelListId).collect(Collectors.toList()); distributionParcelListService.update(Wrappers.update() .in("id", collect) .set("order_package_reservation_status", OrderPackageReservationStatusConstant.daiyuyue.getValue()) ); + if (!zeroPackageList.isEmpty()) { + distributionZeroPackageService.saveBatch(zeroPackageList); + } + } } if (!packageEntityList.isEmpty()) {