|
|
|
@ -38,10 +38,7 @@ import com.logpm.distribution.excel.DistrilbutionBillLadingExcel;
|
|
|
|
|
import com.logpm.distribution.mapper.DistrilbutionBillLadingMapper; |
|
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
|
import com.logpm.distribution.vo.*; |
|
|
|
|
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingDetailVO; |
|
|
|
|
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderMainVO; |
|
|
|
|
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderVO; |
|
|
|
|
import com.logpm.distribution.vo.app.DistrilbutionBillLadingInventoryAppVO; |
|
|
|
|
import com.logpm.distribution.vo.app.*; |
|
|
|
|
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import org.redisson.api.RLock; |
|
|
|
@ -49,6 +46,7 @@ import org.springblade.common.constant.DictBizConstant;
|
|
|
|
|
import org.springblade.common.constant.billLading.BillLadingStatusConstant; |
|
|
|
|
import org.springblade.common.constant.order.OrderReservationStatusConstant; |
|
|
|
|
import org.springblade.common.constant.order.OrderStatusConstant; |
|
|
|
|
import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant; |
|
|
|
|
import org.springblade.common.constant.stockup.StockAssignStatusConstant; |
|
|
|
|
import org.springblade.common.constant.stockup.StockupStatusConstant; |
|
|
|
|
import org.springblade.common.constant.stockup.StockupTypeConstant; |
|
|
|
@ -56,6 +54,7 @@ import org.springblade.core.log.exception.ServiceException;
|
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
|
|
import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
@ -594,7 +593,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistrilbutionBillLadingAppVO> pageListApp(IPage<Object> page, BillLadingAppDTO billLadingAppDTO) { |
|
|
|
|
|
|
|
|
|
//查询仓库信息
|
|
|
|
|
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse(); |
|
|
|
|
if(ObjectUtils.isNotNull(myCurrentWarehouse)){ |
|
|
|
|
billLadingAppDTO.setWarehouseId(myCurrentWarehouse.getId()); //仓库ID
|
|
|
|
@ -602,17 +601,31 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
billLadingAppDTO.setPickUpTimeStart(billLadingAppDTO.getPickUpTimeStart()+" 00:00:00"); |
|
|
|
|
billLadingAppDTO.setPickUpTimeEnd(billLadingAppDTO.getPickUpTimeEnd()+" 23:59:59"); |
|
|
|
|
} |
|
|
|
|
//查询自提数据
|
|
|
|
|
IPage<DistrilbutionBillLadingAppVO> pageList = baseMapper.pageListApp(page, billLadingAppDTO); |
|
|
|
|
List<DistrilbutionBillLadingAppVO> records = pageList.getRecords(); |
|
|
|
|
for (DistrilbutionBillLadingAppVO vo : records) { |
|
|
|
|
//有可能存在多个订单所以需要拆分
|
|
|
|
|
String stockArticleId = vo.getStockArticleId(); |
|
|
|
|
|
|
|
|
|
Integer orderNum = 0; |
|
|
|
|
Integer planNum = 0; |
|
|
|
|
Integer signedNum = 0; |
|
|
|
|
Integer orderNum = 0; //订单总数
|
|
|
|
|
Integer planNum = 0; //预约数量
|
|
|
|
|
Integer signedNum = 0; //签收数量
|
|
|
|
|
Integer inventoryNub = 0; //库存品
|
|
|
|
|
String[] split = stockArticleId.split(","); |
|
|
|
|
|
|
|
|
|
List<DistributionReservationZeroPackageEntity> list1 = distributionZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getReservationId, vo.getBillLadingId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0) |
|
|
|
|
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "2") |
|
|
|
|
); |
|
|
|
|
if(!list1.isEmpty()){ |
|
|
|
|
//有零担
|
|
|
|
|
int sum = list1.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum(); |
|
|
|
|
planNum = planNum + sum; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (String s : split) { |
|
|
|
|
if (StringUtil.isBlank(s)) { |
|
|
|
|
continue; |
|
|
|
@ -621,16 +634,20 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>(); |
|
|
|
|
queryWrapper.eq("stock_article_id", Long.parseLong(s)) |
|
|
|
|
.eq("is_deleted", 0); |
|
|
|
|
queryWrapper.isNotNull("order_package_code"); |
|
|
|
|
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper); |
|
|
|
|
int pn = list.size(); |
|
|
|
|
int pn = list.size(); //包件数量
|
|
|
|
|
planNum = planNum + pn; |
|
|
|
|
//通过订单id查询扫描表中有多少数据
|
|
|
|
|
QueryWrapper<DistributionBillLadingScanEntity> qw = new QueryWrapper<>(); |
|
|
|
|
qw.eq("stock_article_id", Long.parseLong(s)) |
|
|
|
|
.eq("is_deleted", 0); |
|
|
|
|
List<DistributionBillLadingScanEntity> ls = distributionBillLadingScanService.list(qw); |
|
|
|
|
int sn = ls.size(); |
|
|
|
|
signedNum = signedNum + sn; |
|
|
|
|
if(!ls.isEmpty()){ |
|
|
|
|
int sum = ls.stream().mapToInt(DistributionBillLadingScanEntity::getQuantity).sum(); |
|
|
|
|
signedNum = signedNum + sum; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
//查询库存品的件数量
|
|
|
|
|
DistributionDeliveryDetailsVO list = distributionDeliveryDetailsService.oneListNum(vo.getBillLadingId()); |
|
|
|
@ -775,7 +792,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
if (Objects.isNull(main)) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//有可能存在多个订单所以需要拆分
|
|
|
|
|
String stockArticleId = main.getStockArticleId(); |
|
|
|
|
List<DistrilbutionAppBillLadingDetailVO> dls = main.getList(); |
|
|
|
@ -783,6 +799,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
Integer planNum = 0; |
|
|
|
|
Integer conpleteNum = 0; |
|
|
|
|
Integer signedNum = 0; |
|
|
|
|
|
|
|
|
|
List<DistributionReservationZeroPackageEntity> list1 = distributionZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getReservationId, main.getBillLadingId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0) |
|
|
|
|
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3") |
|
|
|
|
); |
|
|
|
|
if(!list1.isEmpty()){ |
|
|
|
|
int sum = list1.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum(); |
|
|
|
|
planNum += sum; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String[] split = stockArticleId.split(","); |
|
|
|
|
|
|
|
|
|
for (String s : split) { |
|
|
|
@ -812,6 +839,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>(); |
|
|
|
|
queryWrapper.eq("stock_article_id", Long.parseLong(s)) |
|
|
|
|
.eq("is_deleted", 0); |
|
|
|
|
queryWrapper.isNotNull("order_package_code"); |
|
|
|
|
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper); |
|
|
|
|
int pn = list.size(); |
|
|
|
|
planNum = planNum + pn; |
|
|
|
@ -820,14 +848,15 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
qw.eq("stock_article_id", Long.parseLong(s)) |
|
|
|
|
.eq("is_deleted", 0); |
|
|
|
|
List<DistributionBillLadingScanEntity> ls = distributionBillLadingScanService.list(qw); |
|
|
|
|
int sn = ls.size(); |
|
|
|
|
signedNum = signedNum + sn; |
|
|
|
|
|
|
|
|
|
if (pn == sn) { |
|
|
|
|
conpleteNum++; |
|
|
|
|
if(!ls.isEmpty()){ |
|
|
|
|
int sum = ls.stream().mapToInt(DistributionBillLadingScanEntity::getQuantity).sum(); |
|
|
|
|
signedNum = signedNum + sum; |
|
|
|
|
if (pn == sum) { |
|
|
|
|
conpleteNum++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
main.setCompleteNum(conpleteNum); |
|
|
|
|
main.setCompleteNum(conpleteNum); //齐套总数
|
|
|
|
|
main.setOrderNum(orderNum); |
|
|
|
|
main.setSignedNum(signedNum); |
|
|
|
|
main.setPlanNum(planNum); |
|
|
|
@ -1086,6 +1115,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
distributionAsyncService.getInventorySelfPickup(inventoryAppVO.getStockArticleId()); |
|
|
|
|
distributionBillLadingScan.setPacketBarCode((String) coding); |
|
|
|
|
distributionBillLadingScan.setStockListId(inventoryAppVO.getStockListId()); |
|
|
|
|
distributionBillLadingScan.setQuantity(1); |
|
|
|
|
distributionBillLadingScanService.save(distributionBillLadingScan); |
|
|
|
|
} else { |
|
|
|
|
return Resp.scanFail("包件信息不存在", "包件信息不存在"); |
|
|
|
@ -1135,6 +1165,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
distributionBillLadingScan.setPacketBarCode(String.valueOf(coding)); |
|
|
|
|
//订单
|
|
|
|
|
distributionBillLadingScan.setStockArticleId(one.getId()); |
|
|
|
|
distributionBillLadingScan.setQuantity(1); |
|
|
|
|
distributionBillLadingScan.setBillLadingId(Long.parseLong((String) billLadingId)); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
@ -1364,9 +1395,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
|
|
|
|
|
distributionStockupEntity.setAssignStatus(StockAssignStatusConstant.weizhipai.getValue()); |
|
|
|
|
|
|
|
|
|
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getWarehouseByDepartment(AuthUtil.getDeptId()); |
|
|
|
|
if (ObjectUtils.isNotNull(basicdataWarehouseEntity)){ |
|
|
|
|
distributionStockupEntity.setWarehouseId(basicdataWarehouseEntity.getId()); |
|
|
|
|
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse(); |
|
|
|
|
|
|
|
|
|
// BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getWarehouseByDepartment(AuthUtil.getDeptId());
|
|
|
|
|
if (ObjectUtils.isNotNull(myCurrentWarehouse)){ |
|
|
|
|
distributionStockupEntity.setWarehouseId(myCurrentWarehouse.getId()); |
|
|
|
|
}else{ |
|
|
|
|
throw new ServiceException("仓库信息未读取到,请选择仓库后在操作!"); |
|
|
|
|
} |
|
|
|
|
//todo 库位 获取自提任务的ID 查询下面的订单 包件 库存品信息 的货位信息
|
|
|
|
|
// distributionStockupEntity.setStockipAllocation();
|
|
|
|
@ -1391,4 +1426,152 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
|
|
|
|
|
page.setRecords(result); |
|
|
|
|
return page; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 零担的物料数据查询 |
|
|
|
|
* @param billLadingAppDTO |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R zeroBillPackData(BillLadingAppDTO billLadingAppDTO) { |
|
|
|
|
List<DistributionReservationZeroPackageEntity> list = distributionZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getReservationId, billLadingAppDTO.getBillLadingId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0) |
|
|
|
|
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3") |
|
|
|
|
); |
|
|
|
|
List<DistrilbutionAppBillLadingZeroVO> parcelListEntityList = new ArrayList<>(); |
|
|
|
|
if(!list.isEmpty()){ |
|
|
|
|
list.forEach( i -> { |
|
|
|
|
//查询品类信息
|
|
|
|
|
DistributionParcelListEntity byId = distributionParcelListService.getById(i.getParcelListId()); |
|
|
|
|
DistrilbutionAppBillLadingZeroVO billLadingZeroVO = new DistrilbutionAppBillLadingZeroVO(); |
|
|
|
|
BeanUtils.copyProperties(byId,billLadingZeroVO); |
|
|
|
|
DistributionReservationZeroPackageEntity one = distributionZeroPackageService.getOne(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getParcelListId, byId.getId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0) |
|
|
|
|
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3") |
|
|
|
|
); |
|
|
|
|
billLadingZeroVO.setReservationQuantity(one.getQuantity()); |
|
|
|
|
parcelListEntityList.add(billLadingZeroVO); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
return R.data(parcelListEntityList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 零担批量签收 |
|
|
|
|
* @param billLadingAppDTO |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R zeroBill(BillLadingAppDTO billLadingAppDTO) { |
|
|
|
|
//设置lockey
|
|
|
|
|
String lockKey ="lock:" + billLadingAppDTO.getBillLadingId(); |
|
|
|
|
RLock lock = new RedissonConfig().redisson().getLock(lockKey); |
|
|
|
|
if(lock.isLocked()){ |
|
|
|
|
throw new ServiceException("请勿重复提交!!!"); |
|
|
|
|
} |
|
|
|
|
lock.lock(5, TimeUnit.SECONDS); |
|
|
|
|
List<DistributionReservationZeroPackageEntity> list = distributionZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getReservationId, billLadingAppDTO.getBillLadingId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0) |
|
|
|
|
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3") |
|
|
|
|
); |
|
|
|
|
//添加自提签收数据
|
|
|
|
|
List<DistributionBillLadingScanEntity> billLadingScanList = new ArrayList<>(); |
|
|
|
|
// billLadingAppDTO.getList().forEach(i ->{
|
|
|
|
|
// //判断是否大于总件数的数量
|
|
|
|
|
// DistributionParcelListEntity byId = distributionParcelListService.getById(i.getId());
|
|
|
|
|
// if(i.getQuantity() > byId.getQuantity()){
|
|
|
|
|
// throw new ServiceException("签收数量大于订单数量!!");
|
|
|
|
|
// }
|
|
|
|
|
// DistributionBillLadingScanEntity billLadingScan = new DistributionBillLadingScanEntity();
|
|
|
|
|
// billLadingScan.setScanType(2);
|
|
|
|
|
// billLadingScan.setParcelListId(i.getId());
|
|
|
|
|
// billLadingScan.setOrderSelfNumbering(i.getOrderCode());
|
|
|
|
|
// billLadingScan.setStockArticleId(i.getStockArticleId());
|
|
|
|
|
// billLadingScan.setBillLadingId(billLadingAppDTO.getBillLadingId());
|
|
|
|
|
// billLadingScan.setMaterialType("3");
|
|
|
|
|
// billLadingScan.setQuantity(i.getQuantity());
|
|
|
|
|
// billLadingScanList.add(billLadingScan);
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
//修改签收状态
|
|
|
|
|
billLadingAppDTO.getList().stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getStockArticleId)) |
|
|
|
|
.forEach((k,v) ->{ |
|
|
|
|
v.forEach(i ->{ |
|
|
|
|
//修改包件签收状态
|
|
|
|
|
DistributionParcelListEntity parcelListEntity = new DistributionParcelListEntity(); |
|
|
|
|
//判断是否大于总件数的数量
|
|
|
|
|
DistributionParcelListEntity byId = distributionParcelListService.getById(i.getId()); |
|
|
|
|
if(i.getQuantity() > byId.getQuantity()){ |
|
|
|
|
throw new ServiceException("签收数量大于订单数量!!"); |
|
|
|
|
}else if(i.getQuantity().equals(byId.getQuantity())){ |
|
|
|
|
parcelListEntity.setId(byId.getId()); |
|
|
|
|
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue()); |
|
|
|
|
}else{ |
|
|
|
|
parcelListEntity.setId(byId.getId()); |
|
|
|
|
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.bufenqianshou.getValue()); |
|
|
|
|
} |
|
|
|
|
distributionParcelListService.updateById(parcelListEntity); |
|
|
|
|
DistributionBillLadingScanEntity billLadingScan = new DistributionBillLadingScanEntity(); |
|
|
|
|
billLadingScan.setScanType(2); |
|
|
|
|
billLadingScan.setParcelListId(i.getId()); |
|
|
|
|
billLadingScan.setOrderSelfNumbering(i.getOrderCode()); |
|
|
|
|
billLadingScan.setStockArticleId(i.getStockArticleId()); |
|
|
|
|
billLadingScan.setBillLadingId(billLadingAppDTO.getBillLadingId()); |
|
|
|
|
billLadingScan.setMaterialType("3"); |
|
|
|
|
billLadingScan.setQuantity(i.getQuantity()); |
|
|
|
|
billLadingScanList.add(billLadingScan); |
|
|
|
|
}); |
|
|
|
|
int sum = v.stream().mapToInt(DistributionParcelListEntity::getQuantity).sum(); //填写的签收数量
|
|
|
|
|
//查询 订单数量
|
|
|
|
|
DistributionStockArticleEntity byId = distributionStockArticleService.getById(k); |
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = new DistributionStockArticleEntity(); |
|
|
|
|
if(sum == byId.getTotalNumber()){ |
|
|
|
|
stockArticleEntity.setOrderReceiveStatus(OrderStatusConstant.qianshou.getValue()); |
|
|
|
|
}else{ |
|
|
|
|
stockArticleEntity.setOrderReceiveStatus(OrderStatusConstant.bufenqianshou.getValue()); |
|
|
|
|
} |
|
|
|
|
//修改订单状态
|
|
|
|
|
stockArticleEntity.setId(k); |
|
|
|
|
distributionStockArticleService.updateById(stockArticleEntity); |
|
|
|
|
//预约的数量
|
|
|
|
|
int sum1 = list.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getStockArticleId)).get(k).stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum(); |
|
|
|
|
if(sum >= sum1){ |
|
|
|
|
//修改提货提货状态
|
|
|
|
|
distrilbutionBillStockService.update(Wrappers.<DistrilbutionBillStockEntity>update() |
|
|
|
|
.eq("bill_lading_id",billLadingAppDTO.getBillLadingId()) |
|
|
|
|
.eq("stock_article_id",k) |
|
|
|
|
.set("conditions",2) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
if(!billLadingScanList.isEmpty()){ |
|
|
|
|
distributionBillLadingScanService.saveBatch(billLadingScanList); |
|
|
|
|
return Resp.scanSuccess("签收成功!","签收成功!"); |
|
|
|
|
} |
|
|
|
|
distributionAsyncService.getStockUPstate(billLadingAppDTO.getBillLadingId()); |
|
|
|
|
return Resp.scanSuccess("签收失败!","签收失败!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询订单信息 |
|
|
|
|
* @param billLadingAppDTO |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R zeroBillOrderData(BillLadingAppDTO billLadingAppDTO) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 零担单个签收 |
|
|
|
|
* @param billLadingAppDTO |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R zeroBillPack(BillLadingAppDTO billLadingAppDTO) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|