|
|
|
@ -23,10 +23,7 @@ import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
|
|
|
|
import com.logpm.distribution.dto.*; |
|
|
|
|
import com.logpm.distribution.entity.*; |
|
|
|
|
import com.logpm.distribution.excel.DistributionReservationExcel; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationPackageMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationStockarticleMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationStocklistMapper; |
|
|
|
|
import com.logpm.distribution.mapper.*; |
|
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
|
import com.logpm.distribution.vo.*; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
@ -37,6 +34,7 @@ import org.springblade.core.secure.utils.AuthUtil;
|
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.core.tool.utils.ObjectUtil; |
|
|
|
|
import org.springblade.core.tool.utils.RandomType; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
@ -64,6 +62,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
|
|
|
|
|
private final IDistributionStockupService distributionStockupService; |
|
|
|
|
|
|
|
|
|
private final DistributionStockupMapper distributionStockupMapper; |
|
|
|
|
|
|
|
|
|
private final IDistributionStockupInfoService distributionStockupInfoService; |
|
|
|
|
|
|
|
|
|
private final IDistributionStockArticleService distributionStockArticleService; |
|
|
|
@ -197,7 +197,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
AtomicInteger packageNum = new AtomicInteger(); |
|
|
|
|
List<DistributionParcelListEntity> packageList = s.getPackageList(); |
|
|
|
|
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); |
|
|
|
@ -214,7 +213,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//此时订单下的所有包件都处于预约状态,可用数为0
|
|
|
|
|
packageNum.getAndAdd(p.getQuantity()); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
s.setAvailableQuantity(0); |
|
|
|
|
} else { |
|
|
|
|
//维护选中的包件信息
|
|
|
|
@ -285,6 +283,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
set.addAll(arrayList); |
|
|
|
|
arrayList.addAll(set); |
|
|
|
|
String str = String.join(",", set); |
|
|
|
|
str = str.replaceFirst(",",""); |
|
|
|
|
//拼接在库和库存订单编号
|
|
|
|
|
reservationEntity.setStockArticleId(str); |
|
|
|
|
//统计数量
|
|
|
|
@ -344,7 +343,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//修改预约备货状态
|
|
|
|
|
reservationEntity.setStockupStatus(ServiceConstant.STOCKUP_STATE_WAIT_EXECUTION); |
|
|
|
|
reservationEntity.setGoodsAreaName(stockupAreaName); |
|
|
|
|
reservationEntity.setGoodsAreaId(goddsAreaId); |
|
|
|
|
reservationEntity.setGoodsAreaId(Long.parseLong(goddsAreaId)); |
|
|
|
|
result = SqlHelper.retBool(distributionReservationMapper.updateById(reservationEntity)); |
|
|
|
|
//构建中间表信息
|
|
|
|
|
DistributionStockupInfoEntity reservationStockupEntity = new DistributionStockupInfoEntity(); |
|
|
|
@ -397,9 +396,13 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
String reservationIds = allocationDTO.getReservationIds(); |
|
|
|
|
//创建备货任务
|
|
|
|
|
DistributionStockupDTO stockup = allocationDTO.getStockup(); |
|
|
|
|
boolean flag = Func.isEmpty(stockup); |
|
|
|
|
DistributionStockupEntity stockupentity = Func.copy(stockup, DistributionStockupEntity.class); |
|
|
|
|
List<Long> ids = Func.toLongList(reservationIds); |
|
|
|
|
boolean flag = Func.isEmpty(stockupentity); |
|
|
|
|
boolean aj = Func.isNotEmpty(stockup); |
|
|
|
|
DistributionStockupEntity distributionStockupEntity = Func.copy(stockup, DistributionStockupEntity.class); |
|
|
|
|
if (flag){ |
|
|
|
|
Integer stockListTotal = distributionReservationStocklistMapper.getStockListTotal(ids); |
|
|
|
|
if (!flag){ |
|
|
|
|
distributionStockupEntity.setAssignStatus(ServiceConstant.STOCkUP_ASSIGNSTATUS_ALREADY); |
|
|
|
|
distributionStockupEntity.setAssignTime(new Date()); |
|
|
|
|
distributionStockupEntity.setForkliftId(stockup.getForkliftId()); |
|
|
|
@ -407,6 +410,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionStockupEntity.setStockupStatus(ServiceConstant.STOCkUP_STATE_NOT_EXECUTION); |
|
|
|
|
distributionStockupEntity.setTypeService(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionStockupService.save(distributionStockupEntity); |
|
|
|
|
}else { |
|
|
|
|
if (stockListTotal > 0 ){ |
|
|
|
|
return R.fail("配送库存品请填写备货信息!!!"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
DistributionDeliveryListEntity distributionDeliveryListEntity = new DistributionDeliveryListEntity(); |
|
|
|
|
//设置车次号
|
|
|
|
@ -414,10 +421,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
String random = Func.random(7, RandomType.ALL); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(random + today); |
|
|
|
|
distributionDeliveryListService.save(distributionDeliveryListEntity); |
|
|
|
|
List<Long> ids = Func.toLongList(reservationIds); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
//获取备货任务的编号
|
|
|
|
|
Long stockupEntityId = distributionStockupEntity.getId(); |
|
|
|
|
// //获取备货任务的编号
|
|
|
|
|
// Long stockupEntityId = distributionStockupEntity.getId();
|
|
|
|
|
//统计包件数量
|
|
|
|
|
AtomicInteger packageNum = new AtomicInteger(); |
|
|
|
|
//预约订单数量
|
|
|
|
@ -439,31 +445,37 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
map.put("reservationId", i); |
|
|
|
|
QueryWrapper<DistributionStockupInfoEntity> qw = Condition.getQueryWrapper(map, DistributionStockupInfoEntity.class); |
|
|
|
|
DistributionStockupInfoEntity distributionStockupInfoEntity = distributionStockupInfoService.getOne(qw); |
|
|
|
|
if (flag){ |
|
|
|
|
if (Func.isEmpty(distributionStockupInfoEntity)) { |
|
|
|
|
//1、预约单不存在备货任务
|
|
|
|
|
//利用中间表建立起预约和备货表之间的关系
|
|
|
|
|
DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity(); |
|
|
|
|
stockupInfoEntity.setReservationId(i); |
|
|
|
|
stockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
stockupInfoEntity.setStockupId(distributionStockupEntity.getId()); |
|
|
|
|
distributionStockupInfoService.save(stockupInfoEntity); |
|
|
|
|
} else { |
|
|
|
|
//TODO 这里还需要考虑一个备货任务下只有一条记录
|
|
|
|
|
//获取备货任务编号
|
|
|
|
|
Long stockupId = distributionStockupInfoEntity.getStockupId(); |
|
|
|
|
DistributionStockupEntity stockupEntity = distributionStockupService.getById(stockupId); |
|
|
|
|
//2、预约单存在备货任务还未指派
|
|
|
|
|
if (Func.equals(stockupEntity.getAssignStatus(), ServiceConstant.STOCkUP_ASSIGNSTATUS_ABSENCE)) { |
|
|
|
|
//备货任务只存在一个,对该备货任务进行删除
|
|
|
|
|
//查询备货任务下是否具有
|
|
|
|
|
Long id = distributionStockupInfoEntity.getStockupId(); |
|
|
|
|
Integer reservationNum = distributionStockupMapper.getReservationTotal(id); |
|
|
|
|
if (reservationNum==1){ |
|
|
|
|
//只有一条,对该备货记录进行删除
|
|
|
|
|
distributionStockupMapper.deleteStockUpById(id); |
|
|
|
|
} |
|
|
|
|
//对原有的备货关系进行修改
|
|
|
|
|
distributionStockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoEntity.setStockupId(distributionStockupEntity.getId()); |
|
|
|
|
distributionStockupInfoService.updateById(distributionStockupInfoEntity); |
|
|
|
|
} |
|
|
|
|
//3、预约单存在备货任务且已指派备货
|
|
|
|
|
//不执行操作
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
DistributionReservationEntity reservationEntity = this.getById(i); |
|
|
|
|
DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity(); |
|
|
|
|
distributionSignforEntity.setTrainNumber(random); |
|
|
|
|
distributionSignforEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
distributionSignforEntity.setDeliveryId(distributionDeliveryListEntity.getId()); |
|
|
|
|
distributionSignforEntity.setSigningStatus(ServiceConstant.CLERK_SIGNING_STATUS_NOT); |
|
|
|
@ -577,14 +589,12 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
} |
|
|
|
|
//对配送信息进行修改
|
|
|
|
|
distributionDeliveryListEntity.setState(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
if (flag){ |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamName(stockup.getLoaderName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftName(stockup.getForkliftName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftId(stockup.getForkliftId().toString()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamId(stockup.getLoaderId()); |
|
|
|
|
distributionDeliveryListEntity.setLeadTime(allocationDTO.getStockup().getStockupDate()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamType(stockup.getLoadAndUnload()); |
|
|
|
|
} |
|
|
|
|
distributionDeliveryListEntity.setCustomersNumber(reservationIds.split(",").length); |
|
|
|
|
distributionDeliveryListEntity.setOrderNumber(orderNum.get()); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
@ -802,7 +812,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionStockupService.save(stockupEntity); |
|
|
|
|
//4、维护配送表数据
|
|
|
|
|
DistributionDeliveryListEntity distributionDeliveryListEntity = new DistributionDeliveryListEntity(); |
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(Func.random(7, RandomType.ALL) + DateUtil.today()); |
|
|
|
|
String str = Func.random(7, RandomType.ALL) + DateUtil.today(); |
|
|
|
|
|
|
|
|
|
distributionDeliveryListEntity.setTrainNumber(str); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_BUSINESS); |
|
|
|
|
distributionDeliveryListEntity.setState(ServiceConstant.DELIVERLIST_STATE_WAIT); |
|
|
|
|
distributionDeliveryListService.save(distributionDeliveryListEntity); |
|
|
|
@ -816,7 +828,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
storeClient.forEach((k,v)->mallClient.merge(k,v,(v1,v2)->v2)); |
|
|
|
|
//统计客户数
|
|
|
|
|
AtomicInteger clientNum = new AtomicInteger(); |
|
|
|
|
|
|
|
|
|
////统计包件总数
|
|
|
|
|
AtomicInteger packageTotal = new AtomicInteger(); |
|
|
|
|
////统计包件总数
|
|
|
|
@ -829,14 +840,15 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//预约任务是在客户的维度上进行数据维护
|
|
|
|
|
DistributionReservationDTO reservation = allocationDTO.getReservation(); |
|
|
|
|
DistributionReservationEntity reservationEntity = Func.copy(reservation, DistributionReservationEntity.class); |
|
|
|
|
reservationEntity.setReservationDate(new Date()); |
|
|
|
|
Date date = new Date(); |
|
|
|
|
reservationEntity.setReservationDate(date); |
|
|
|
|
reservationEntity.setConsignee(k); |
|
|
|
|
reservationEntity.setDeliveryAddress(v.get(0).getCustomerAddress()); |
|
|
|
|
reservationEntity.setDeliveryPhone(v.get(0).getCustomerTelephone()); |
|
|
|
|
reservationEntity.setDeliveryType(ServiceConstant.DELIVERY_TYPE_BUSINESS); |
|
|
|
|
reservationEntity.setReservationStatus(ServiceConstant.RESERVATION_STATE_WAIT_DELIVERY); |
|
|
|
|
reservationEntity.setStockupStatus(ServiceConstant.STOCKUP_STATE_WAIT_EXECUTION); |
|
|
|
|
reservationEntity.setGoodsAreaId(stockupEntity.getGoodsAreaId().toString()); |
|
|
|
|
reservationEntity.setGoodsAreaId(stockupEntity.getGoodsAreaId()); |
|
|
|
|
//默认配送时间为全天
|
|
|
|
|
reservationEntity.setPeriodOfTime(ServiceConstant.RESERVATION_PERIOED_TIME_DAY); |
|
|
|
|
this.save(reservationEntity); |
|
|
|
@ -863,7 +875,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//订单存在数据源,维护订单包件信息
|
|
|
|
|
//维护预约和订单关系
|
|
|
|
|
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity(); |
|
|
|
|
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>(); |
|
|
|
@ -896,10 +907,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationStockarticleEntity.setReservationNum(packageCount.get()); |
|
|
|
|
reservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_HAVE_DATA); |
|
|
|
|
//对订单下的包件进行累加
|
|
|
|
|
} else { |
|
|
|
|
reservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_NOT_HAVE_DATA); |
|
|
|
|
reservationStockarticleEntity.setReservationNum(stockArticleEntity.getTotalNumber()); |
|
|
|
|
} |
|
|
|
|
reservationStockarticleEntity.setStockArticleId(stockArticleEntity.getId()); |
|
|
|
|
reservationStockarticleEntity.setStockArticleCode(stockArticleEntity.getStockArticleCode()); |
|
|
|
|
reservationStockarticleEntity.setReservationId(reservationEntity.getId()); |
|
|
|
@ -910,10 +919,11 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationEntity.setStockArticleId(orderSelfNumbering.deleteCharAt(orderSelfNumbering.length() - 1).toString()); |
|
|
|
|
//预约添加订单数量
|
|
|
|
|
reservationEntity.setReservationNum(packageNum.get()); |
|
|
|
|
reservationEntity.setReservationCode(Func.random(7, RandomType.ALL) + DateUtil.today()); |
|
|
|
|
reservationEntity.setReservationCode(ServiceConstant.RESERVATION_STATE_WAIT_DELIVERY); |
|
|
|
|
this.updateById(reservationEntity); |
|
|
|
|
DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity(); |
|
|
|
|
distributionSignforEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
distributionSignforEntity.setTrainNumber(str); |
|
|
|
|
distributionSignforEntity.setDeliveryId(distributionDeliveryListEntity.getId()); |
|
|
|
|
distributionSignforEntity.setSigningStatus(ServiceConstant.CLERK_SIGNING_STATUS_NOT); |
|
|
|
|
distributionSignforEntity.setDriverSigning(ServiceConstant.DRIVER_SIGNING_STATUS_NOT); |
|
|
|
|