Browse Source

增值服务调整、自提零担调整

dist.1.3.0
汤建军 9 months ago
parent
commit
51bb4f3d86
  1. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionAddvalueMapper.xml
  2. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java
  3. 427
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAddvalueServiceImpl.java
  4. 50
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  5. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

8
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

11
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<DistributionSig
*/
R loadingAbnormalPackageListTurnDown(String ids,boolean yesOrNo);
/**
* 查询客户下所有可添加增值服务包件
* @param reservationId
* @return
*/
List<DistributionAddvaluePackageDTO> checkAddValuePCPackageList(Long reservationId);
}

427
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<DistributionAddvalueMapper, DistributionAddvalueEntity> 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<Distributio
@Transactional
public R savePCAddvalueInfo(DistributionAppAddvalueDTO distributionAppAddvalueDTO) {
List<DistributionAddvaluePackageDTO> packageEntityList = distributionAppAddvalueDTO.getPackageEntityList();
List<DistributionAddvaluePackageDTO> 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.<DistributionAddvalueEntity>query().lambda()
.eq(DistributionAddvalueEntity::getAddvalueId, distributionAppAddvalueDTO.getAddvalueType())
@ -413,6 +420,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
}
// 上楼 超区 平移 搬运 分拣 专车
BigDecimal totalFee = new BigDecimal(BigInteger.ZERO);
BigDecimal currencyUnitPrice = new BigDecimal(BigInteger.ZERO);
switch (distributionAppAddvalueDTO.getAddvalueType()) {
case "1":
if (Func.isEmpty(distributionAppAddvalueDTO.getFloolNum())) {
@ -433,6 +441,20 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
}else {
totalFee.add(distributionAppAddvalueDTO.getFee());
}
Map<String, Object> addValueDTO = new HashMap<>();
addValueDTO.put("reservationId",distributionAppAddvalueDTO.getReservationId().toString());
//超区需要默认当前所有包件
List<DistributionAddvaluePackageDTO> 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<Distributio
}else {
totalFee.add(distributionAppAddvalueDTO.getFee());
}
List<DistributionAddvaluePackageDTO> 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<DistributionAddvaluePackageDTO> 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<Distributio
//查询客户下此类的增值服务
List<DistributionAddvaluePackageEntity> packageEntities = distributionAddvalueMapper.selectAddvaluePackageListByAddvalueType(distributionAppAddvalueDTO.getReservationId(), distributionAppAddvalueDTO.getAddvalueType());
Map<Long, DistributionAddvaluePackageEntity> 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<PriceDispatchAddClientVO> 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<DistributionParcelListEntity> parcelListEntities = distributionReservationMapper.selectPackageListByReservationId(distributionAppAddvalueDTO.getReservationId());
if (Func.isEmpty(distributionAppAddvalueDTO.getFee())){
Integer conditions = p.getConditions();
//获取结算单价
List<PriceDispatchAddClientVO> 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<DistributionParcelListEntity> 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<DisStockListDetailEntity> 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<DisStockListDetailEntity> 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<DistributionParcelNumberDTO> 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<DistributionParcelNumberDTO> 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<Distributio
addvaluePackageEntity.setUnitPrice(unitPrice);
addvaluePackageEntity.setFee(unitPrice.multiply(new BigDecimal(p.getQuantity())));
addvaluePackageEntity.setScanUserName(AuthUtil.getNickName());
addvaluePackageEntity.setRecordType("1");
addvaluePackageEntities.add(addvaluePackageEntity);
}
});
@ -580,6 +625,16 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
}
private List<DistributionAddvaluePackageDTO> handleAddvaluePackageEntity(List<DistributionAddvaluePackageVO> records) {
List<DistributionAddvaluePackageDTO> packageDTOList= new ArrayList<>();
records.forEach(r->{
DistributionAddvaluePackageDTO dto = Func.copy(r, DistributionAddvaluePackageDTO.class);
packageDTOList.add(dto);
});
return packageDTOList;
}
private BigDecimal getUnitPrice(List<PriceDispatchAddClientVO> priceDispatchAddClientVOS, BasicdataFactoryCategoryEntity factoryCategoryEntity, DistributionAppAddvalueDTO distributionAppAddvalueDTO) {
List<PriceDispatchAddClientVO> collect = priceDispatchAddClientVOS.stream().filter(f -> f.getCategoryId().equals(factoryCategoryEntity.getId())).collect(Collectors.toList());
@ -860,31 +915,65 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
@Override
@Transactional
public R cancelSignAddValuePackage(DistributionAppAddvalueDTO distributionAppAddvalueDTO) {
List<DistributionAddvaluePackageDTO> packageEntityList = distributionAppAddvalueDTO.getPackageEntityList();
List<DistributionAddvaluePackageDTO> packageEntityList = new ArrayList<>();
if (distributionAppAddvalueDTO.getAddvalueType().equals("2") || distributionAppAddvalueDTO.getAddvalueType().equals("6")){
//专车和超区进行全部包件查询
Map<String, Object> addValueDTO = new HashMap<>();
addValueDTO.put("reservationId",distributionAppAddvalueDTO.getReservationId().toString());
//超区需要默认当前所有包件
List<DistributionAddvaluePackageDTO> 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<BigDecimal> newFee = new AtomicReference<>(BigDecimal.ZERO);
List<Long> packageIds = packageEntityList.stream().map(DistributionAddvaluePackageDTO::getPackageId).collect(Collectors.toList());
packageEntityList.forEach(p->{
newFee.set(distributionAddvalueDetailEntity.getFee().subtract(p.getUnitPrice()));
});
List<DistributionAddvaluePackageEntity> addvaluePackageEntities = distributionAddvaluePackageMapper.selectList(Wrappers.<DistributionAddvaluePackageEntity>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<Distributio
if (Func.isEmpty(packageEntityList)) {
return R.fail("无包件信息");
}
final BigDecimal[] totalFee = {BigDecimal.ZERO};
Map<Long, DistributionAddvaluePackageDTO> packageDTOMap = packageEntityList.stream().collect(Collectors.toMap(DistributionAddvaluePackageDTO::getPackageId, Function.identity(), (k1, k2) -> k2));
List<Long> 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<DistributionAddvaluePackageEntity> addvaluePackageEntities = distributionAddvaluePackageMapper.selectList(Wrappers.<DistributionAddvaluePackageEntity>query().lambda()
.eq(DistributionAddvaluePackageEntity::getReservationId, distributionAppAddvalueDTO.getReservationId())
@ -927,9 +1019,7 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
if (Strings.isBlank(string)) {
log.info("计算成本失败>>>>>>>>>:{}", string);
}
if (increasePackage.size() > 0) {
//统计该项增值服务包件数量
int num = detailEntity.getNum() + increasePackage.size();
detailEntity.setNum(num);
@ -941,13 +1031,6 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
detailEntity.setFloolNum(distributionAppAddvalueDTO.getFloolNum());
}
break;
case "2":
if (Func.isEmpty(distributionAppAddvalueDTO.getDistance())) {
return Resp.scanFail("添加失败", "请输入超区公里数");
} else {
detailEntity.setDistance(distributionAppAddvalueDTO.getDistance());
}
break;
case "3":
if (Func.isEmpty(distributionAppAddvalueDTO.getDistance())) {
return Resp.scanFail("添加失败", "请输入平移距离");
@ -955,44 +1038,88 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
detailEntity.setDistance(distributionAppAddvalueDTO.getDistance());
}
break;
// case "4":
// case "5":
// if (Func.isEmpty(distributionAppAddvalueDTO.getNum())) {
// return Resp.scanFail("添加失败", "请输入件数");
// } else {
// detailEntity.setNum(num);
// }
// break;
// case "6":
// if (Func.isEmpty(distributionAppAddvalueDTO.getFee())) {
// return Resp.scanFail("添加失败", "错误的包件数量");
// } else {
// detailEntity.setFee(distributionAppAddvalueDTO.getFee());
// }
// break;
default:
return Resp.scanFail("添加失败", "服务器正忙");
}
detailEntity.setFee(distributionAppAddvalueDTO.getFee());
detailEntity.setNum(num);
distributionAddvalueDetailMapper.updateById(detailEntity);
//查询价格模板
//basicdataPriceClient.dispatchAddPrice();
//添加新的包件信息
increasePackage.forEach(ip -> {
if (Func.isNotEmpty(packageDTOMap.get(ip))) {
//新增包件
BigDecimal unitPrice = null;
//计算包件单价
DistributionAddvaluePackageDTO distributionAddvaluePackageDTO = packageDTOMap.get(ip);
List<PriceDispatchAddClientVO> 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<DistributionParcelListEntity> 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<DisStockListDetailEntity> 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<DistributionParcelNumberDTO> 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.<DistributionAddvaluePackageEntity>query().lambda()
.eq(DistributionAddvaluePackageEntity::getReservationId, distributionAddvaluePackageDTO.getReservationId())
@ -1021,7 +1148,6 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
}
}
} else {
DistributionAddvaluePackageEntity addvaluePackageEntity = new DistributionAddvaluePackageEntity();
addvaluePackageEntity.setAddvalueDetailId(distributionAddvaluePackageDTO.getAddvalueDetailId());
addvaluePackageEntity.setStockArticleId(distributionAddvaluePackageDTO.getStockArticleId());
@ -1031,6 +1157,10 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
addvaluePackageEntity.setPackageId(distributionAddvaluePackageDTO.getPackageId());
addvaluePackageEntity.setReservationId(distributionAddvaluePackageDTO.getReservationId());
addvaluePackageEntity.setQuantity(distributionAddvaluePackageDTO.getQuantity());
addvaluePackageEntity.setClientId(distributionAddvaluePackageDTO.getClientId());
addvaluePackageEntity.setClientName(distributionAddvaluePackageDTO.getClientName());
addvaluePackageEntity.setBrandId(distributionAddvaluePackageDTO.getBrandId());
addvaluePackageEntity.setBrandName(distributionAddvaluePackageDTO.getBrandName());
if (distributionAddvaluePackageDTO.getConditions() == 1) {
//新增订制品
addvaluePackageEntity.setOrderPackageCode(distributionAddvaluePackageDTO.getOrderPackageCode());
@ -1043,11 +1173,20 @@ public class DistributionAddvalueServiceImpl extends BaseServiceImpl<Distributio
addvaluePackageEntity.setRecordType("3");
addvaluePackageEntity.setConditions(2);
}
addvaluePackageEntity.setRecordType("1");
addvaluePackageEntity.setScanUserName(AuthUtil.getNickName());
addvaluePackageEntity.setUnitPrice(unitPrice);
totalFee[0] = totalFee[0].add(unitPrice.multiply(BigDecimal.valueOf(addvaluePackageEntity.getQuantity())));
addvaluePackageEntity.setFee(unitPrice.multiply(BigDecimal.valueOf(addvaluePackageEntity.getQuantity())));
distributionAddvaluePackageService.save(addvaluePackageEntity);
}
}
});
//进行详情维护
detailEntity.setFee(totalFee[0]);
detailEntity.setNum(num);
distributionAddvalueDetailMapper.updateById(detailEntity);
}
return R.status(true);
}

50
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -6683,6 +6683,56 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return R.success("异常驳回成功");
}
@Override
public List<DistributionAddvaluePackageDTO> checkAddValuePCPackageList(Long reservationId) {
if (Func.isEmpty(reservationId)) {
log.error("##################无reservationId");
return null;
}
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = distributionReservationMapper.selectStockArticleByReservationId(reservationId);
List<DistributionAddvaluePackageVO> addvaluePackageVOS = new ArrayList<>();
Map<String, Object> addValueDTO = new HashMap<>();
if (Func.isNotEmpty(reservationStockarticleEntityList)) {
List<Long> orderIds = reservationStockarticleEntityList.stream().map(DistributionReservationStockarticleEntity::getStockArticleId).collect(Collectors.toList());
LambdaQueryWrapper<DistributionStockArticleEntity> orderQW = Wrappers.<DistributionStockArticleEntity>query().lambda().in(DistributionStockArticleEntity::getId, orderIds);
List<DistributionStockArticleEntity> orderList = distributionStockArticleService.list(orderQW);
orderList.forEach(rs -> {
if (rs.getIsZero().equals(IsOrNoConstant.no.getValue())) {
List<DistributionAddvaluePackageVO> addvaluepackageVO = distributionAddvalueMapper.selectAddvaluePackageVO(reservationId, rs.getId(), addValueDTO);
if (Func.isNotEmpty(addvaluepackageVO)) {
addvaluePackageVOS.addAll(addvaluepackageVO);
}
} else {
List<DistributionAddvaluePackageVO> addvalueZeroPackageVO = distributionAddvalueMapper.selectAddvalueZeroPackageVO(reservationId, rs.getId(), addValueDTO);
if (Func.isNotEmpty(addvalueZeroPackageVO)) {
addvaluePackageVOS.addAll(addvalueZeroPackageVO);
}
}
});
}
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(reservationId);
if (Func.isNotEmpty(distributionReservationStocklistEntities)) {
List<Long> inventoryIds = distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList());
LambdaQueryWrapper<DistributionStockListEntity> inventoryQW = Wrappers.<DistributionStockListEntity>query().lambda().in(DistributionStockListEntity::getId, inventoryIds);
List<DistributionStockListEntity> stockListEntityList = distributionStockListService.list(inventoryQW);
stockListEntityList.forEach(inven -> {
List<DistributionAddvaluePackageVO> addvalueinventoryPackageVO = distributionAddvalueMapper.selectAddvalueInventoryPackageVO(reservationId, inven.getId(), addValueDTO);
if (Func.isNotEmpty(addvalueinventoryPackageVO)) {
addvaluePackageVOS.addAll(addvalueinventoryPackageVO);
}
});
}
List<DistributionAddvaluePackageDTO> 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<SignPushDataUnitDTO> pushOldPackageSigning) {
for (SignPushDataUnitDTO signPushDataUnitDTO : pushOldPackageSigning) {
User user = bladeRedis.get(RedisKeyConstant.USER_NAME_PHONE_KEY + signPushDataUnitDTO.getAdministratorsId());

6
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -2065,6 +2065,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
log.error("#########################无可用包件orderIds:{}", zeroOrderIds);
throw new RuntimeException(zeroOrderIds + "无可用包件");
}
List<DistributionReservationZeroPackageEntity> zeroPackageList = new ArrayList<>();
parcelNumberEntityList.forEach(zp -> {
//查询包件
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(zp.getParcelListId());
@ -2077,12 +2078,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionReservationZeroPackageEntity.setCategoryName(parcelListEntity.getFirsts());
log.info(">>>>>>>>>>>>>>>>>>>>>>>>零担品类增加计划数量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<Long> collect = parcelNumberEntityList.stream().map(DistributionParcelNumberEntity::getParcelListId).collect(Collectors.toList());
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update()
.in("id", collect)
.set("order_package_reservation_status", OrderPackageReservationStatusConstant.daiyuyue.getValue())
);
if (!zeroPackageList.isEmpty()) {
distributionZeroPackageService.saveBatch(zeroPackageList);
}
}
}
if (!packageEntityList.isEmpty()) {

Loading…
Cancel
Save