|
|
|
@ -26,7 +26,10 @@ import com.logpm.distribution.mapper.DistributionReservationPackageMapper;
|
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationStockarticleMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationStocklistMapper; |
|
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
|
import com.logpm.distribution.vo.DistributionReservationStockarticleVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionReservationVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionStockArticleVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionStockListVO; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import org.springblade.common.serviceConstant.ServiceConstant; |
|
|
|
|
import org.springblade.core.mp.support.Condition; |
|
|
|
@ -98,10 +101,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
private final IDistributionSignforService distributionSignforService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionReservationVO> selectDistrbutionReservationPage(IPage<DistributionReservationVO> page, DistributionReservationVO distrbutionReservation) { |
|
|
|
|
return page.setRecords(baseMapper.selectDistrbutionReservationPage(page, distrbutionReservation)); |
|
|
|
@ -138,9 +137,34 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public DistributionReservationVO getReservationDetail(String reservationId) { |
|
|
|
|
DistributionReservationVO distributionReservationVO = distributionReservationMapper.getReservationDetail(reservationId); |
|
|
|
|
return distributionReservationVO; |
|
|
|
|
public R<?> getReservationDetail(String reservationId) { |
|
|
|
|
if (Func.isBlank(reservationId)) { |
|
|
|
|
log.error("参数异常reservationId+{" + reservationId + "}"); |
|
|
|
|
return R.fail("服务器正忙!!"); |
|
|
|
|
} |
|
|
|
|
//创建预约对象
|
|
|
|
|
//2、查询预约单下的包件信息列表
|
|
|
|
|
//3、查询预约单下的库存品信息列表
|
|
|
|
|
DistributionReservationEntity reservationEntity = this.getById(reservationId); |
|
|
|
|
DistributionReservationVO reservationVO = Func.copy(reservationEntity, DistributionReservationVO.class); |
|
|
|
|
String reservationStatus = reservationVO.getReservationStatus(); |
|
|
|
|
Integer typeService = reservationVO.getTypeService(); |
|
|
|
|
switch (reservationStatus) { |
|
|
|
|
case "2": |
|
|
|
|
reservationVO.setReservationStatus("已确定"); |
|
|
|
|
break; |
|
|
|
|
case "1": |
|
|
|
|
reservationVO.setReservationStatus("待确定"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//1、查询预约单下的订单列表信息
|
|
|
|
|
List<DistributionStockArticleVO> stockArticleEntityList = distributionReservationMapper.getStockArticleList(reservationId); |
|
|
|
|
if (stockArticleEntityList.size() >= 1) { |
|
|
|
|
reservationVO.setStockArticleList(stockArticleEntityList); |
|
|
|
|
} |
|
|
|
|
// DistributionReservationVO distributionReservationVO = distributionReservationMapper.getReservationDetail(reservationId);
|
|
|
|
|
return R.data(reservationVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@ -154,9 +178,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
DistributionReservationEntity reservationEntity = new DistributionReservationEntity(); |
|
|
|
|
Func.copy(distributionReservationDTO, reservationEntity); |
|
|
|
|
//新建预约单为待确认状态
|
|
|
|
|
reservationEntity.setReservationStatus("1"); |
|
|
|
|
reservationEntity.setReservationStatus(ServiceConstant.RESERVATION_STATE_WAIT_CONFIRM); |
|
|
|
|
//新建预约单订单处于未备货状态
|
|
|
|
|
reservationEntity.setStockupStatus("1"); |
|
|
|
|
reservationEntity.setStockupStatus(ServiceConstant.STOCkUP_STATE_NOT_EXECUTION); |
|
|
|
|
this.save(reservationEntity); |
|
|
|
|
//获取新增预约信息的编号
|
|
|
|
|
Long reservationId = reservationEntity.getId(); |
|
|
|
@ -177,45 +201,40 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//预约订单数量
|
|
|
|
|
AtomicInteger packageNum = new AtomicInteger(); |
|
|
|
|
List<DistributionParcelListEntity> packageList = s.getPackageList(); |
|
|
|
|
if (s.getIsHaveData().equals(ServiceConstant.ORDER_HAVE_DATA)){ |
|
|
|
|
if (packageList.size() == 0){ |
|
|
|
|
if (s.getIsHaveData() == 2 ){ |
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
map.put("stockArticleId",s.getId()); |
|
|
|
|
QueryWrapper<DistributionParcelListEntity> qw = Condition.getQueryWrapper(map, DistributionParcelListEntity.class); |
|
|
|
|
//添加订单下的所有在库订单的包件
|
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw); |
|
|
|
|
distributionParcelListEntities.forEach(p->{ |
|
|
|
|
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
distributionReservationPackageEntity.setReservationId(reservationId); |
|
|
|
|
distributionReservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageEntity.setStockArticleId(s.getId()); |
|
|
|
|
distributionReservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
//维护订单下包件信息
|
|
|
|
|
distributionReservationPackageService.save(distributionReservationPackageEntity); |
|
|
|
|
//此时订单下的所有包件都处于预约状态,可用数为0
|
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
s.setAvailableQuantity(0); |
|
|
|
|
}else { |
|
|
|
|
//维护选中的包件信息
|
|
|
|
|
packageList.forEach(p->{ |
|
|
|
|
if (packageList.size() == 0) { |
|
|
|
|
if (s.getIsHaveData() == 2) { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("stockArticleId", s.getId()); |
|
|
|
|
QueryWrapper<DistributionParcelListEntity> qw = Condition.getQueryWrapper(map, DistributionParcelListEntity.class); |
|
|
|
|
//添加订单下的所有在库订单的包件
|
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw); |
|
|
|
|
distributionParcelListEntities.forEach(p -> { |
|
|
|
|
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
distributionReservationPackageEntity.setReservationId(reservationId); |
|
|
|
|
distributionReservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageEntity.setStockArticleId(s.getId()); |
|
|
|
|
distributionReservationPackageMapper.insert(distributionReservationPackageEntity); |
|
|
|
|
distributionReservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
//维护订单下包件信息
|
|
|
|
|
distributionReservationPackageService.save(distributionReservationPackageEntity); |
|
|
|
|
//此时订单下的所有包件都处于预约状态,可用数为0
|
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
}); |
|
|
|
|
//设置订单可用数量为
|
|
|
|
|
s.setAvailableQuantity(s.getHandQuantity() - s.getReservationNum()); |
|
|
|
|
} |
|
|
|
|
distributionReservationStockarticleEntity.setReservationNum(packageNum.get()); |
|
|
|
|
}else { |
|
|
|
|
distributionReservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_NOT_HAVE_DATA); |
|
|
|
|
distributionReservationStockarticleEntity.setReservationNum(s.getTotalNumber()); |
|
|
|
|
s.setAvailableQuantity(0); |
|
|
|
|
} else { |
|
|
|
|
//维护选中的包件信息
|
|
|
|
|
packageList.forEach(p -> { |
|
|
|
|
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
distributionReservationPackageEntity.setReservationId(reservationId); |
|
|
|
|
distributionReservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageEntity.setStockArticleId(s.getId()); |
|
|
|
|
distributionReservationPackageMapper.insert(distributionReservationPackageEntity); |
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
}); |
|
|
|
|
//设置订单可用数量为
|
|
|
|
|
s.setAvailableQuantity(s.getHandQuantity() - s.getReservationNum()); |
|
|
|
|
} |
|
|
|
|
distributionReservationStockarticleEntity.setReservationNum(packageNum.get()); |
|
|
|
|
//订单无数据源,不需要进行包件信息维护
|
|
|
|
|
//修改订单状态为已预约
|
|
|
|
|
s.setState(ServiceConstant.ORDER_STATE_ALREADY_RESERVATION); |
|
|
|
@ -276,7 +295,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationEntity.setDeliveryType(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
//设置预约配送方式为送货
|
|
|
|
|
reservationEntity.setDeliveryWay(ServiceConstant.DELIVERY_GOODS_WAY); |
|
|
|
|
reservationEntity.setServiceNumber(String.join(",",serviceNumber)); |
|
|
|
|
reservationEntity.setServiceNumber(String.join(",", serviceNumber)); |
|
|
|
|
reservationEntity.setReservationNum(count); |
|
|
|
|
distributionReservationMapper.updateById(reservationEntity); |
|
|
|
|
return true; |
|
|
|
@ -369,8 +388,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//这里站配送任务主要有两个方面
|
|
|
|
|
//1、针对市配订单需要将预约信息填充至配送计划中
|
|
|
|
|
//2、商配跳过预约阶段直接将订单信息和配送计划进行关联
|
|
|
|
|
if (Func.isEmpty(allocationDTO)){ |
|
|
|
|
log.error("参数异常allocationDTO:+{"+allocationDTO+"}"); |
|
|
|
|
if (Func.isEmpty(allocationDTO)) { |
|
|
|
|
log.error("参数异常allocationDTO:+{" + allocationDTO + "}"); |
|
|
|
|
return R.fail("服务器正忙!!!"); |
|
|
|
|
} |
|
|
|
|
String reservationIds = allocationDTO.getReservationIds(); |
|
|
|
@ -388,10 +407,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//设置车次号
|
|
|
|
|
String today = DateUtil.today(); |
|
|
|
|
String random = Func.random(7, RandomType.ALL); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(random+today); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(random + today); |
|
|
|
|
distributionDeliveryListService.save(distributionDeliveryListEntity); |
|
|
|
|
List<Long> ids = Func.toLongList(reservationIds); |
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
//获取备货任务的编号
|
|
|
|
|
Long stockupEntityId = distributionStockupEntity.getId(); |
|
|
|
|
//统计包件数量
|
|
|
|
@ -410,25 +429,25 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
StringBuilder vehicleNubs = new StringBuilder(); |
|
|
|
|
//司机名称拼接
|
|
|
|
|
StringBuilder driverNames = new StringBuilder(); |
|
|
|
|
ids.forEach(i->{ |
|
|
|
|
ids.forEach(i -> { |
|
|
|
|
//查询备货任务
|
|
|
|
|
map.put("reservationId",i); |
|
|
|
|
map.put("reservationId", i); |
|
|
|
|
QueryWrapper<DistributionStockupInfoEntity> qw = Condition.getQueryWrapper(map, DistributionStockupInfoEntity.class); |
|
|
|
|
DistributionStockupInfoEntity distributionStockupInfoEntity = distributionStockupInfoService.getOne(qw); |
|
|
|
|
if (Func.isEmpty(distributionStockupInfoEntity)){ |
|
|
|
|
if (Func.isEmpty(distributionStockupInfoEntity)) { |
|
|
|
|
//1、预约单不存在备货任务
|
|
|
|
|
//利用中间表建立起预约和备货表之间的关系
|
|
|
|
|
DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity(); |
|
|
|
|
stockupInfoEntity.setReservationId(i); |
|
|
|
|
stockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.save(stockupInfoEntity); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
//TODO 这里还需要考虑一个备货任务下只有一条记录
|
|
|
|
|
//获取备货任务编号
|
|
|
|
|
Long stockupId = distributionStockupInfoEntity.getStockupId(); |
|
|
|
|
DistributionStockupEntity stockupEntity = distributionStockupService.getById(stockupId); |
|
|
|
|
//2、预约单存在备货任务还未指派
|
|
|
|
|
if (Func.equals(stockupEntity.getAssignStatus(),ServiceConstant.STOCkUP_ASSIGNSTATUS_ABSENCE)){ |
|
|
|
|
if (Func.equals(stockupEntity.getAssignStatus(), ServiceConstant.STOCkUP_ASSIGNSTATUS_ABSENCE)) { |
|
|
|
|
//对原有的备货关系进行修改
|
|
|
|
|
distributionStockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.updateById(distributionStockupInfoEntity); |
|
|
|
@ -464,8 +483,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
QueryWrapper<DistributionReservationPackageEntity> o = Condition.getQueryWrapper(map, DistributionReservationPackageEntity.class); |
|
|
|
|
o.lambda().eq(DistributionReservationPackageEntity::getReservationId, reservationEntity.getId()); |
|
|
|
|
List<DistributionReservationPackageEntity> reservationPackageEntityList = distributionReservationPackageService.getBaseMapper().selectList(o); |
|
|
|
|
if (!Func.isEmpty(reservationStockarticleEntityList)){ |
|
|
|
|
reservationStockarticleEntityList.forEach(r->{ |
|
|
|
|
if (!Func.isEmpty(reservationStockarticleEntityList)) { |
|
|
|
|
reservationStockarticleEntityList.forEach(r -> { |
|
|
|
|
//查询订单信息,完成对订单的信息修改
|
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(r.getStockArticleId()); |
|
|
|
|
//拼接订单编号
|
|
|
|
@ -505,7 +524,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
// distributionLoadscanService.save(distributionLoadscanEntity);
|
|
|
|
|
// }
|
|
|
|
|
//存在数据来源,维护订单、包件和配送的关系
|
|
|
|
|
if (stockArticleEntity.getHandQuantity()> r.getReservationNum()){ |
|
|
|
|
if (stockArticleEntity.getHandQuantity() > r.getReservationNum()) { |
|
|
|
|
//这里表示订单下的包件没有进行全部配送
|
|
|
|
|
//修改订单状态为部分配送
|
|
|
|
|
stockArticleEntity.setState(4); |
|
|
|
@ -516,9 +535,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
if (!Func.isEmpty(reservationStocklistEntityList)){ |
|
|
|
|
if (!Func.isEmpty(reservationStocklistEntityList)) { |
|
|
|
|
//对库存品进行操作
|
|
|
|
|
reservationStocklistEntityList.forEach(l->{ |
|
|
|
|
reservationStocklistEntityList.forEach(l -> { |
|
|
|
|
DistributionStockListEntity stockListEntity = distributionStockListService.getById(l.getStocklistId()); |
|
|
|
|
stockListEntity.setQuantityStock(stockListEntity.getQuantityStock() - l.getReservationNum()); |
|
|
|
|
hashSet.add(stockListEntity.getOrderSelfNumbering()); |
|
|
|
@ -539,7 +558,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
Long deliveryListId = distributionDeliveryListEntity.getId(); |
|
|
|
|
//操作司机信息
|
|
|
|
|
DistributionDeliveryTripartiteDTO tripartite = allocationDTO.getTripartite(); |
|
|
|
|
if (Func.isEmpty(tripartite)){ |
|
|
|
|
if (Func.isEmpty(tripartite)) { |
|
|
|
|
//这里就是三方配送
|
|
|
|
|
DistributionDeliveryTripartiteEntity tripartiteEntity = Func.copy(tripartite, DistributionDeliveryTripartiteEntity.class); |
|
|
|
|
// tripartiteEntity.setReservationIds(reservationIds);
|
|
|
|
@ -553,10 +572,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliveryListEntity.setDistributionCompany(tripartite.getDistributionCompany()); |
|
|
|
|
distributionDeliveryListEntity.setDistributionCompanyId(tripartite.getDistributionCompanyId()); |
|
|
|
|
//TODO 这里可以对三方配送的机构编号进行添加
|
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
//这里就是自主配送
|
|
|
|
|
List<DistributionDeliverySelfDTO> allocationInfo = allocationDTO.getAllocationInfo(); |
|
|
|
|
allocationInfo.forEach(a->{ |
|
|
|
|
allocationInfo.forEach(a -> { |
|
|
|
|
DistributionDeliverySelfEntity distributionDeliverySelfEntity = Func.copy(a, DistributionDeliverySelfEntity.class); |
|
|
|
|
//设置车辆编号
|
|
|
|
|
distributionDeliverySelfEntity.setDeliveryId(Long.parseLong(a.getDriverId())); |
|
|
|
@ -568,9 +587,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliverySelfEntity.setDriverPhone(a.getDriverPhone()); |
|
|
|
|
distributionDeliverySelfEntity.setVehicleNub(a.getVehicleNub()); |
|
|
|
|
//设置是否为主司机
|
|
|
|
|
if (Func.equals(allocationDTO.getMasterDriverName(),a.getDriver())){ |
|
|
|
|
if (Func.equals(allocationDTO.getMasterDriverName(), a.getDriver())) { |
|
|
|
|
//设置主司机
|
|
|
|
|
distributionDeliverySelfEntity.setIsMaster(1); |
|
|
|
|
distributionDeliverySelfEntity.setIsMaster(ServiceConstant.IS_MASTER_YES); |
|
|
|
|
} |
|
|
|
|
//完成对自主配送司机信息保存
|
|
|
|
|
distributionDeliverySelfEntity.setDeliveryId(deliveryListId); |
|
|
|
@ -580,8 +599,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
driverNames.append(a.getDriver()).append(","); |
|
|
|
|
}); |
|
|
|
|
distributionDeliveryListEntity.setKind(ServiceConstant.DELIVERLIST_KIND_SELF); |
|
|
|
|
distributionDeliveryListEntity.setDriverName(driverNames.deleteCharAt(driverNames.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setVehicleName(vehicleNubs.deleteCharAt(vehicleNubs.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setDriverName(driverNames.deleteCharAt(driverNames.length() - 1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setVehicleName(vehicleNubs.deleteCharAt(vehicleNubs.length() - 1).toString()); |
|
|
|
|
} |
|
|
|
|
//对配送信息进行修改
|
|
|
|
|
distributionDeliveryListEntity.setState(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
@ -592,9 +611,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliveryListEntity.setCustomersNumber(reservationIds.split(",").length); |
|
|
|
|
distributionDeliveryListEntity.setOrderNumber(orderNum.get()); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionDeliveryListEntity.setOrderSelfNumbering(String.join(",",hashSet)); |
|
|
|
|
if (orderIds.length()>1){ |
|
|
|
|
distributionDeliveryListEntity.setOrderId(orderIds.deleteCharAt(orderIds.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setOrderSelfNumbering(String.join(",", hashSet)); |
|
|
|
|
if (orderIds.length() > 1) { |
|
|
|
|
distributionDeliveryListEntity.setOrderId(orderIds.deleteCharAt(orderIds.length() - 1).toString()); |
|
|
|
|
} |
|
|
|
|
distributionDeliveryListEntity.setReservationId(reservationIds); |
|
|
|
|
distributionDeliveryListEntity.setDeliveryNumber(packageNum.get()); |
|
|
|
@ -604,6 +623,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliveryListService.updateById(distributionDeliveryListEntity); |
|
|
|
|
return R.status(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R<DistributionReservationVO> getReservationInfo(String reservationId) { |
|
|
|
|
//查询出预约信息
|
|
|
|
@ -624,8 +644,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
stockArticleEntity.setReservationNum(a1.getReservationNum()); |
|
|
|
|
stockArticleEntityList.add(stockArticleEntity); |
|
|
|
|
}); |
|
|
|
|
List<DistributionStockArticleVO> stockArticleVOList = Func.copy(stockArticleEntityList, DistributionStockArticleVO.class); |
|
|
|
|
//查询出 库存信息
|
|
|
|
|
reservationVO.setStockArticleList(stockArticleEntityList); |
|
|
|
|
reservationVO.setStockArticleList(stockArticleVOList); |
|
|
|
|
} |
|
|
|
|
if (!Func.isEmpty(reservationStocklistEntityList)) { |
|
|
|
|
List<DistributionStockListEntity> stockArticleEntityList = new ArrayList<>(); |
|
|
|
@ -634,8 +655,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
stockListEntity.setReservationNum(a2.getReservationNum()); |
|
|
|
|
stockArticleEntityList.add(stockListEntity); |
|
|
|
|
}); |
|
|
|
|
List<DistributionStockListVO> stockListVOList = Func.copy(stockArticleEntityList, DistributionStockListVO.class); |
|
|
|
|
//查询出 库存信息
|
|
|
|
|
reservationVO.setInventoryList(stockArticleEntityList); |
|
|
|
|
reservationVO.setInventoryList(stockListVOList); |
|
|
|
|
} |
|
|
|
|
return R.data(reservationVO); |
|
|
|
|
} |
|
|
|
@ -677,7 +699,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationStocklistEntityList.forEach(r1 -> { |
|
|
|
|
Long stocklistId = r1.getStocklistId(); |
|
|
|
|
DistributionStockListEntity stockListEntity = distributionStockListService.getById(stocklistId); |
|
|
|
|
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied()-r1.getReservationNum()); |
|
|
|
|
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() - r1.getReservationNum()); |
|
|
|
|
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + r1.getReservationNum()); |
|
|
|
|
//这里对原表进行物理删除
|
|
|
|
|
distributionStockListService.updateById(stockListEntity); |
|
|
|
@ -703,13 +725,13 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
stockArticleList.forEach(s -> { |
|
|
|
|
List<DistributionParcelListEntity> packageList = s.getPackageList(); |
|
|
|
|
AtomicInteger packageNum = new AtomicInteger(); |
|
|
|
|
if (packageList.size() == 0){ |
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
map.put("stockArticleId",s.getId()); |
|
|
|
|
if (packageList.size() == 0) { |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("stockArticleId", s.getId()); |
|
|
|
|
QueryWrapper<DistributionParcelListEntity> qw = Condition.getQueryWrapper(map, DistributionParcelListEntity.class); |
|
|
|
|
//添加订单下的所有在库订单
|
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw); |
|
|
|
|
distributionParcelListEntities.forEach(p->{ |
|
|
|
|
distributionParcelListEntities.forEach(p -> { |
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
distributionReservationPackageEntity.setReservationId(distributionReservationDTO.getId()); |
|
|
|
@ -721,9 +743,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
}); |
|
|
|
|
//设置订单可用数为0
|
|
|
|
|
s.setAvailableQuantity(0); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
//维护选中的包件信息
|
|
|
|
|
packageList.forEach(p->{ |
|
|
|
|
packageList.forEach(p -> { |
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
distributionReservationPackageEntity.setReservationId(distributionReservationDTO.getId()); |
|
|
|
@ -781,8 +803,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public R<?> deliveryBusinessTask(DistributionDeliveryAllocationDTO allocationDTO) { |
|
|
|
|
if (Func.isEmpty(allocationDTO)){ |
|
|
|
|
log.error("参数异常allocationDTO+{"+allocationDTO+"}"); |
|
|
|
|
if (Func.isEmpty(allocationDTO)) { |
|
|
|
|
log.error("参数异常allocationDTO+{" + allocationDTO + "}"); |
|
|
|
|
return R.fail("服务器正忙!!!"); |
|
|
|
|
} |
|
|
|
|
//1、添加配送任务
|
|
|
|
@ -801,7 +823,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionStockupService.save(stockupEntity); |
|
|
|
|
//4、维护配送表数据
|
|
|
|
|
DistributionDeliveryListEntity distributionDeliveryListEntity = new DistributionDeliveryListEntity(); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(Func.random(7,RandomType.ALL)+DateUtil.today()); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(Func.random(7, RandomType.ALL) + DateUtil.today()); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_BUSINESS); |
|
|
|
|
distributionDeliveryListEntity.setState(ServiceConstant.DELIVERLIST_STATE_WAIT); |
|
|
|
|
distributionDeliveryListService.save(distributionDeliveryListEntity); |
|
|
|
@ -812,7 +834,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
List<DistributionStockArticleDTO> distributionStockArticleDTOS = storeClient.get(""); |
|
|
|
|
Map<String, List<DistributionStockArticleDTO>> mallClient = distributionStockArticleDTOS.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getMallName)); |
|
|
|
|
//3、维护订单和客户
|
|
|
|
|
storeClient.forEach((k,v)->mallClient.merge(k,v,(v1,v2)->v2)); |
|
|
|
|
storeClient.forEach((k, v) -> mallClient.merge(k, v, (v1, v2) -> v2)); |
|
|
|
|
//统计客户数
|
|
|
|
|
AtomicInteger clientNum = new AtomicInteger(); |
|
|
|
|
|
|
|
|
@ -822,8 +844,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
AtomicInteger orderTotal = new AtomicInteger(); |
|
|
|
|
//订单拼接
|
|
|
|
|
StringBuilder orderSelfNumbering = new StringBuilder(); |
|
|
|
|
mallClient.forEach((k,v)->{ |
|
|
|
|
if (!Func.isBlank(k)){ |
|
|
|
|
mallClient.forEach((k, v) -> { |
|
|
|
|
if (!Func.isBlank(k)) { |
|
|
|
|
////统计客户数
|
|
|
|
|
//预约任务是在客户的维度上进行数据维护
|
|
|
|
|
DistributionReservationDTO reservation = allocationDTO.getReservation(); |
|
|
|
@ -849,7 +871,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
AtomicReference<BigDecimal> initTotal = new AtomicReference<>(BigDecimal.ZERO); |
|
|
|
|
//统计包件数量
|
|
|
|
|
AtomicInteger packageNum = new AtomicInteger(); |
|
|
|
|
v.forEach(a->{ |
|
|
|
|
v.forEach(a -> { |
|
|
|
|
orderTotal.getAndIncrement(); |
|
|
|
|
//TODO 这里还需要对库存品进行筛选
|
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = Func.copy(a, DistributionStockArticleEntity.class); |
|
|
|
@ -862,16 +884,16 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//订单存在数据源,维护订单包件信息
|
|
|
|
|
//维护预约和订单关系
|
|
|
|
|
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity(); |
|
|
|
|
if (stockArticleEntity.getIsHaveData().equals(ServiceConstant.ORDER_HAVE_DATA)){ |
|
|
|
|
if (stockArticleEntity.getIsHaveData().equals(ServiceConstant.ORDER_HAVE_DATA)) { |
|
|
|
|
List<DistributionParcelListEntity> packageList = a.getPackageList(); |
|
|
|
|
if (a.getPackageList().size() == 0){ |
|
|
|
|
Map<String,Object> map = new HashMap<String, Object>(); |
|
|
|
|
if (a.getPackageList().size() == 0) { |
|
|
|
|
Map<String, Object> map = new HashMap<String, Object>(); |
|
|
|
|
//这里就是默认添加订单下的所有包件
|
|
|
|
|
map.put("stockArticleId",stockArticleEntity.getId()); |
|
|
|
|
map.put("stockArticleId", stockArticleEntity.getId()); |
|
|
|
|
QueryWrapper<DistributionParcelListEntity> o = Condition.getQueryWrapper(map, DistributionParcelListEntity.class); |
|
|
|
|
// o.lambda().eq(DistributionParcelListEntity::getStockArticleId, stockArticleEntity.getId());
|
|
|
|
|
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListService.getBaseMapper().selectList(o); |
|
|
|
|
parcelListEntityList.forEach(p->{ |
|
|
|
|
parcelListEntityList.forEach(p -> { |
|
|
|
|
packageCount.getAndIncrement(); |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
@ -880,9 +902,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
}); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
//订单选择了指定包件进行配送
|
|
|
|
|
packageList.forEach(p->{ |
|
|
|
|
packageList.forEach(p -> { |
|
|
|
|
packageCount.getAndIncrement(); |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
@ -895,7 +917,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationStockarticleEntity.setReservationNum(packageCount.get()); |
|
|
|
|
reservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_HAVE_DATA); |
|
|
|
|
//对订单下的包件进行累加
|
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
reservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_NOT_HAVE_DATA); |
|
|
|
|
reservationStockarticleEntity.setReservationNum(stockArticleEntity.getTotalNumber()); |
|
|
|
|
} |
|
|
|
@ -906,10 +928,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
packageTotal.getAndAdd(reservationStockarticleEntity.getReservationNum()); |
|
|
|
|
}); |
|
|
|
|
//这里将预约信息进行完善
|
|
|
|
|
reservationEntity.setStockArticleId(orderSelfNumbering.deleteCharAt(orderSelfNumbering.length()-1).toString()); |
|
|
|
|
reservationEntity.setStockArticleId(orderSelfNumbering.deleteCharAt(orderSelfNumbering.length() - 1).toString()); |
|
|
|
|
//预约添加订单数量
|
|
|
|
|
reservationEntity.setReservationNum(packageNum.get()); |
|
|
|
|
reservationEntity.setReservationCode(Func.random(7,RandomType.ALL)+DateUtil.today()); |
|
|
|
|
reservationEntity.setReservationCode(Func.random(7, RandomType.ALL) + DateUtil.today()); |
|
|
|
|
this.updateById(reservationEntity); |
|
|
|
|
DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity(); |
|
|
|
|
distributionSignforEntity.setReservationId(reservationEntity.getId()); |
|
|
|
@ -925,7 +947,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//司机名称拼接
|
|
|
|
|
StringBuilder driverNames = new StringBuilder(); |
|
|
|
|
DistributionDeliveryTripartiteDTO tripartite = allocationDTO.getTripartite(); |
|
|
|
|
if (Func.isEmpty(tripartite)){ |
|
|
|
|
if (Func.isEmpty(tripartite)) { |
|
|
|
|
//三方配送
|
|
|
|
|
//这里就是三方配送
|
|
|
|
|
DistributionDeliveryTripartiteEntity tripartiteEntity = Func.copy(tripartite, DistributionDeliveryTripartiteEntity.class); |
|
|
|
@ -937,10 +959,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliveryListEntity.setVehicleName(tripartiteEntity.getVehicleNum()); |
|
|
|
|
distributionDeliveryListEntity.setDistributionCompany(tripartite.getDistributionCompany()); |
|
|
|
|
distributionDeliveryListEntity.setDistributionCompanyId(tripartite.getDistributionCompanyId()); |
|
|
|
|
}else { |
|
|
|
|
} else { |
|
|
|
|
//自主配送
|
|
|
|
|
List<DistributionDeliverySelfDTO> allocationInfo = allocationDTO.getAllocationInfo(); |
|
|
|
|
allocationInfo.forEach(a->{ |
|
|
|
|
allocationInfo.forEach(a -> { |
|
|
|
|
DistributionDeliverySelfEntity distributionDeliverySelfEntity = Func.copy(a, DistributionDeliverySelfEntity.class); |
|
|
|
|
//设置车辆编号
|
|
|
|
|
distributionDeliverySelfEntity.setDeliveryId(Long.parseLong(a.getDriverId())); |
|
|
|
@ -952,7 +974,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliverySelfEntity.setDriverPhone(a.getDriverPhone()); |
|
|
|
|
distributionDeliverySelfEntity.setVehicleNub(a.getVehicleNub()); |
|
|
|
|
//设置是否为主司机
|
|
|
|
|
if (allocationDTO.getMasterDriverName().equals(a.getDriverName())){ |
|
|
|
|
if (allocationDTO.getMasterDriverName().equals(a.getDriverName())) { |
|
|
|
|
//设置主司机
|
|
|
|
|
distributionDeliverySelfEntity.setIsMaster(ServiceConstant.IS_MASTER_YES); |
|
|
|
|
} |
|
|
|
@ -964,14 +986,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
driverNames.append(a.getDriverName()).append(","); |
|
|
|
|
}); |
|
|
|
|
distributionDeliveryListEntity.setKind(ServiceConstant.DELIVERLIST_KIND_SELF); |
|
|
|
|
distributionDeliveryListEntity.setDriverName(driverNames.deleteCharAt(driverNames.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setVehicleName(vehicleNubs.deleteCharAt(vehicleNubs.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setDriverName(driverNames.deleteCharAt(driverNames.length() - 1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setVehicleName(vehicleNubs.deleteCharAt(vehicleNubs.length() - 1).toString()); |
|
|
|
|
} |
|
|
|
|
//完善配送信息
|
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamName(stockup.getLoaderName()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamId(stockup.getLoaderId()); |
|
|
|
|
distributionDeliveryListEntity.setLeadTime(stockup.getStockupDate()); |
|
|
|
|
distributionDeliveryListEntity.setOrderSelfNumbering(orderSelfNumbering.deleteCharAt(orderSelfNumbering.length()-1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setOrderSelfNumbering(orderSelfNumbering.deleteCharAt(orderSelfNumbering.length() - 1).toString()); |
|
|
|
|
distributionDeliveryListEntity.setOrderNumber(orderTotal.get()); |
|
|
|
|
distributionDeliveryListEntity.setDeliveryNumber(packageTotal.get()); |
|
|
|
|
distributionDeliveryListEntity.setCustomersNumber(clientNum.get()); |
|
|
|
@ -984,13 +1006,13 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public boolean cancelReservation(DistributionReservationDTO reservationDTO) { |
|
|
|
|
if (Func.isEmpty(reservationDTO)){ |
|
|
|
|
log.error("参数异常allocationDTO+{"+reservationDTO+"}"); |
|
|
|
|
if (Func.isEmpty(reservationDTO)) { |
|
|
|
|
log.error("参数异常allocationDTO+{" + reservationDTO + "}"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
DistributionReservationEntity reservationEntity = this.getById(reservationDTO.getId()); |
|
|
|
|
if (Func.isEmpty(reservationEntity)){ |
|
|
|
|
log.error("参数异常reservationEntity+{"+reservationEntity+"}"); |
|
|
|
|
if (Func.isEmpty(reservationEntity)) { |
|
|
|
|
log.error("参数异常reservationEntity+{" + reservationEntity + "}"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
boolean result = false; |
|
|
|
@ -999,4 +1021,23 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
result = this.updateById(reservationEntity); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R<?> getReservationPackage(String reservationId, String id) { |
|
|
|
|
DistributionReservationPackageDTO reservationPackageDTO = new DistributionReservationPackageDTO(); |
|
|
|
|
reservationPackageDTO.setReservationId(Long.parseLong(reservationId)); |
|
|
|
|
reservationPackageDTO.setStockArticleId(Long.parseLong(id)); |
|
|
|
|
List<DistributionParcelListEntity> parcelListEntityList = distributionReservationPackageMapper.getReservationPackage(reservationPackageDTO); |
|
|
|
|
return R.data(parcelListEntityList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R<?> getReservationPackageList(String reservationId) { |
|
|
|
|
if (Func.isBlank(reservationId)) { |
|
|
|
|
log.error("参数异常reservationId+{" + reservationId + "}"); |
|
|
|
|
return R.fail("服务器正忙!!"); |
|
|
|
|
} |
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntityList = distributionReservationPackageMapper.getReservationPackageList(reservationId); |
|
|
|
|
return R.data(distributionParcelListEntityList); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|