|
|
|
@ -172,6 +172,10 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
|
|
|
|
|
QueryWrapper<WarehouseTrayGoodsEntity> qw = new QueryWrapper<>(); |
|
|
|
|
qw.eq("association_value",orderPackageCode); |
|
|
|
|
WarehouseTrayGoodsEntity trayGoodsEntity = warehouseTrayGoodsService.getOne(qw); |
|
|
|
|
if(!Objects.isNull(trayGoodsEntity)){ |
|
|
|
|
log.warn("#########orderScanOrderPackageCode: 包件已打托 orderPackageCode={}",orderPackageCode); |
|
|
|
|
throw new CustomerException(403,"包件已打托"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QueryWrapper<WarehouseUpdownGoodsEntity> updownGoodsEntityQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
updownGoodsEntityQueryWrapper.eq("association_value",orderPackageCode); |
|
|
|
@ -228,8 +232,8 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
|
|
|
|
|
if(!Objects.isNull(trayGoodsEntity)){ |
|
|
|
|
String oldTrayCode = trayGoodsEntity.getTrayCode(); |
|
|
|
|
if(oldTrayCode.equals(trayCode)){ |
|
|
|
|
log.warn("##############orderScanOrderPackageCode: 该包条以打托 trayCode={}",trayCode); |
|
|
|
|
return R.fail(403,"该包条以打托"); |
|
|
|
|
log.warn("##############orderScanOrderPackageCode: 该包条已打托 trayCode={}",trayCode); |
|
|
|
|
return R.fail(403,"该包条已打托"); |
|
|
|
|
} |
|
|
|
|
//存入包件与托盘绑定关系表
|
|
|
|
|
downPackageByOrderPackageCode(orderPackageCode,"扫描分拣:下托"); |
|
|
|
@ -1591,6 +1595,194 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R moveTrayScanTrayCode(String trayCode) { |
|
|
|
|
|
|
|
|
|
BasicdataTrayEntity basicdataTrayEntity = basicdataTrayClient.getTrayByTrayCode(trayCode); |
|
|
|
|
Integer disableType = basicdataTrayEntity.getDisableType(); |
|
|
|
|
if(disableType == 2){ |
|
|
|
|
log.warn("###############moveTrayScanTrayCode: 该托盘已被禁用 trayCode={}",trayCode); |
|
|
|
|
throw new CustomerException(403,"该托盘已被禁用"); |
|
|
|
|
} |
|
|
|
|
Long trayId = basicdataTrayEntity.getId(); |
|
|
|
|
Long allocationId = warehouseTaryAllocationService.getAllocationIdByTrayId(trayId); |
|
|
|
|
if(!Objects.isNull(allocationId)){ |
|
|
|
|
log.warn("###############moveTrayScanTrayCode: 托盘已上架 allocationId={}",allocationId); |
|
|
|
|
throw new CustomerException(403,"托盘已上架"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TrayTypeDataVO trayTypeDataVO = new TrayTypeDataVO(); |
|
|
|
|
//根据托盘编码查询是否有托盘编码存在打托数据
|
|
|
|
|
QueryWrapper<WarehouseTrayTypeEntity> queryTrayTypeWrapper = new QueryWrapper<>(); |
|
|
|
|
queryTrayTypeWrapper.eq("tray_code",trayCode) |
|
|
|
|
.eq("is_deleted",0); |
|
|
|
|
WarehouseTrayTypeEntity trayTypeEntity = baseMapper.selectOne(queryTrayTypeWrapper); |
|
|
|
|
if(Objects.isNull(trayTypeEntity)){ |
|
|
|
|
//没有查询到托盘打托信息
|
|
|
|
|
trayTypeDataVO.setTrayCode(trayCode); |
|
|
|
|
trayTypeDataVO.setTrayNum(0); |
|
|
|
|
trayTypeDataVO.setOrderTotalNum(0); |
|
|
|
|
return R.data(trayTypeDataVO); |
|
|
|
|
} |
|
|
|
|
String type = trayTypeEntity.getType();//类型 1扫码分拣(订制品) 2人工分拣(零担) 3库存品
|
|
|
|
|
Long trayTypeId = trayTypeEntity.getId();//打托方式id
|
|
|
|
|
String trayType = trayTypeEntity.getTrayType(); |
|
|
|
|
trayTypeDataVO.setTrayTypeId(trayTypeId); |
|
|
|
|
trayTypeDataVO.setType(type); |
|
|
|
|
trayTypeDataVO.setTrayCode(trayTypeEntity.getTrayCode()); |
|
|
|
|
trayTypeDataVO.setTrayNum(trayTypeEntity.getTotalNum()); |
|
|
|
|
trayTypeDataVO.setName(trayTypeEntity.getFilterValue()); |
|
|
|
|
trayTypeDataVO.setOrderTotalNum(trayTypeEntity.getOrderTotalNum()); |
|
|
|
|
trayTypeDataVO.setTrayType(trayType); |
|
|
|
|
trayTypeDataVO.setMarketId(trayTypeEntity.getMarketId()); |
|
|
|
|
trayTypeDataVO.setMarketName(trayTypeEntity.getMarketName()); |
|
|
|
|
trayTypeDataVO.setReamrk(trayTypeEntity.getRemark()); |
|
|
|
|
return R.data(trayTypeDataVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R moveTrayScanPackage(String orderPackageCode) { |
|
|
|
|
QueryWrapper<WarehouseTrayGoodsEntity> trayGoodsEntityQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
trayGoodsEntityQueryWrapper.eq("association_value",orderPackageCode); |
|
|
|
|
WarehouseTrayGoodsEntity trayGoodsEntity = warehouseTrayGoodsService.getOne(trayGoodsEntityQueryWrapper); |
|
|
|
|
if(Objects.isNull(trayGoodsEntity)){ |
|
|
|
|
log.warn("#################moveTrayScanPackage: 包件未打托 orderPackageCode={}",orderPackageCode); |
|
|
|
|
throw new CustomerException(403,"包件未打托"); |
|
|
|
|
} |
|
|
|
|
QueryWrapper<WarehouseUpdownGoodsEntity> updownGoodsEntityQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
updownGoodsEntityQueryWrapper.eq("association_value",orderPackageCode); |
|
|
|
|
WarehouseUpdownGoodsEntity updownGoodsEntity = warehouseUpdownGoodsService.getOne(updownGoodsEntityQueryWrapper); |
|
|
|
|
if(!Objects.isNull(updownGoodsEntity)){ |
|
|
|
|
log.warn("#################moveTrayScanPackage: 包件已上架 orderPackageCode={}",orderPackageCode); |
|
|
|
|
throw new CustomerException(403,"包件已上架"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCode(orderPackageCode); |
|
|
|
|
if(Objects.isNull(parcelListEntity)){ |
|
|
|
|
log.warn("#################moveTrayScanPackage: 包件信息不存在 orderPackageCode={}",orderPackageCode); |
|
|
|
|
throw new CustomerException(403,"包件信息不存在"); |
|
|
|
|
} |
|
|
|
|
WarehouseTrayGoodsVO trayGoodsVO = new WarehouseTrayGoodsVO(); |
|
|
|
|
BeanUtil.copy(trayGoodsEntity,trayGoodsVO); |
|
|
|
|
trayGoodsVO.setOrderCode(parcelListEntity.getOrderCode()); |
|
|
|
|
trayGoodsVO.setMaterialCode(parcelListEntity.getMaterialCode()); |
|
|
|
|
trayGoodsVO.setMaterialName(parcelListEntity.getMaterialName()); |
|
|
|
|
return R.data(trayGoodsVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R moveTrayPackages(List<Long> trayGoodsIds,String trayCode) { |
|
|
|
|
QueryWrapper<WarehouseTrayTypeEntity> trayTypeEntityQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
trayTypeEntityQueryWrapper.eq("tray_code",trayCode) |
|
|
|
|
.eq("is_deleted",0); |
|
|
|
|
WarehouseTrayTypeEntity trayTypeEntity = baseMapper.selectOne(trayTypeEntityQueryWrapper); |
|
|
|
|
for (Long trayGoodsId:trayGoodsIds){ |
|
|
|
|
WarehouseTrayGoodsEntity trayGoodsEntity = warehouseTrayGoodsService.getById(trayGoodsId); |
|
|
|
|
Long trayTypeId = trayGoodsEntity.getTrayTypeId(); |
|
|
|
|
String orderPackageCode = trayGoodsEntity.getAssociationValue(); |
|
|
|
|
if(Objects.isNull(trayTypeEntity)){ |
|
|
|
|
//如果托盘没有打托方式就以第一件货物的打托方式为准
|
|
|
|
|
WarehouseTrayTypeEntity oldTrayType = baseMapper.selectById(trayTypeId); |
|
|
|
|
WarehouseTrayTypeEntity newTrayType = new WarehouseTrayTypeEntity(); |
|
|
|
|
BeanUtil.copy(oldTrayType,newTrayType); |
|
|
|
|
newTrayType.setId(null); |
|
|
|
|
newTrayType.setTotalNum(0); |
|
|
|
|
newTrayType.setOrderTotalNum(0); |
|
|
|
|
newTrayType.setStockNum(0); |
|
|
|
|
newTrayType.setStockTotalNum(0); |
|
|
|
|
//保存新的打托方式
|
|
|
|
|
save(newTrayType); |
|
|
|
|
trayTypeEntity = newTrayType; |
|
|
|
|
}else{ |
|
|
|
|
//如果有打托方式
|
|
|
|
|
//则要先判断数据格式是否正确
|
|
|
|
|
|
|
|
|
|
WarehouseTrayTypeEntity oldTrayType = baseMapper.selectById(trayTypeId); |
|
|
|
|
String type = oldTrayType.getType(); |
|
|
|
|
String type1 = trayTypeEntity.getType(); |
|
|
|
|
if(!type.equals(type1)){ |
|
|
|
|
log.warn("#################moveTrayPackages: 打托数据类型不同 {}={}",type,type1); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//下托日志
|
|
|
|
|
downPackageByOrderPackageCode(orderPackageCode,"移托:解除绑定"); |
|
|
|
|
|
|
|
|
|
moveTrayOrderPackageCode(trayTypeEntity, orderPackageCode); |
|
|
|
|
} |
|
|
|
|
return R.success("移托成功"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private R moveTrayOrderPackageCode(WarehouseTrayTypeEntity trayTypeEntity, String orderPackageCode) { |
|
|
|
|
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCode(orderPackageCode); |
|
|
|
|
if(Objects.isNull(parcelListEntity)){ |
|
|
|
|
log.warn("#################moveTrayOrderPackageCode: 包件信息不存在 orderPackageCode={}",orderPackageCode); |
|
|
|
|
return R.fail(403,"包件信息不存在"); |
|
|
|
|
} |
|
|
|
|
String orderCode = parcelListEntity.getOrderCode(); |
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCode(orderCode); |
|
|
|
|
if(Objects.isNull(stockArticleEntity)){ |
|
|
|
|
log.warn("#################moveTrayOrderPackageCode: 订单信息不存在 orderCode={}",orderCode); |
|
|
|
|
return R.fail(403,"订单信息不存在"); |
|
|
|
|
} |
|
|
|
|
String trayType = trayTypeEntity.getTrayType(); |
|
|
|
|
Long filterId = trayTypeEntity.getFilterId(); |
|
|
|
|
String filterValue = trayTypeEntity.getFilterValue(); |
|
|
|
|
|
|
|
|
|
boolean chuanFlag = false; |
|
|
|
|
if("10".equals(trayType)){//服务号
|
|
|
|
|
String serviceNumber = stockArticleEntity.getServiceNumber(); |
|
|
|
|
if(!filterValue.equals(serviceNumber)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
}else if("20".equals(trayType)){//订单自编号
|
|
|
|
|
String oc = stockArticleEntity.getOrderCode(); |
|
|
|
|
if(!filterValue.equals(oc)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
}else if("30".equals(trayType)){//商场
|
|
|
|
|
Long mallId = stockArticleEntity.getMallId(); |
|
|
|
|
if(!filterId.equals(mallId)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
}else if("40".equals(trayType)){//门店
|
|
|
|
|
Long storeId = stockArticleEntity.getStoreId(); |
|
|
|
|
if(!filterId.equals(storeId)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
}else if("50".equals(trayType)){//客户
|
|
|
|
|
String customerName = stockArticleEntity.getCustomerName(); |
|
|
|
|
String customerTelephone = stockArticleEntity.getCustomerTelephone(); |
|
|
|
|
if(!filterValue.equals(customerName+customerTelephone)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
}else if("60".equals(trayType)){//仓库
|
|
|
|
|
Long warehouseId = stockArticleEntity.getWarehouseId(); |
|
|
|
|
if(!filterId.equals(warehouseId)){ |
|
|
|
|
chuanFlag = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//修改打托方式上的值
|
|
|
|
|
// changeTotalNumByTrayTypeId(parcelListEntity,trayTypeEntity.getId(),1);//addSub 1加 2减
|
|
|
|
|
if(chuanFlag){ |
|
|
|
|
//存入包件与托盘绑定关系表
|
|
|
|
|
warehouseTrayGoodsService.saveEntityPackage(parcelListEntity,trayTypeEntity,"1","1","移托:包件移托","1"); |
|
|
|
|
}else{ |
|
|
|
|
//存入包件与托盘绑定关系表
|
|
|
|
|
warehouseTrayGoodsService.saveEntityPackage(parcelListEntity,trayTypeEntity,"0","1","移托:包件移托","1"); |
|
|
|
|
} |
|
|
|
|
//添加上拖日志表
|
|
|
|
|
// warehouseTrayGoodsLogService.saveLogPackage(parcelListEntity,trayTypeEntity,"1","分拣打托:扫码分拣","1");
|
|
|
|
|
|
|
|
|
|
//更新打托方式上的值
|
|
|
|
|
updateNumByTrayTypeId(trayTypeEntity); |
|
|
|
|
|
|
|
|
|
return R.success("操作成功"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void copyTrayGoodsToTargetTray(Long sourceTrayTypeId, WarehouseTrayTypeEntity targetTrayTypeEntity) { |
|
|
|
|
QueryWrapper<WarehouseTrayGoodsEntity> queryWrapper = new QueryWrapper<>(); |
|
|
|
@ -1832,7 +2024,7 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
|
|
|
|
|
WarehouseTrayTypeEntity trayTypeEntity = new WarehouseTrayTypeEntity(); |
|
|
|
|
trayTypeEntity.setTrayId(trayId); |
|
|
|
|
trayTypeEntity.setTrayCode(trayCode); |
|
|
|
|
trayTypeEntity.setType(PalletProductTypeConstant.STOCKNODATA); |
|
|
|
|
trayTypeEntity.setType(PalletProductTypeConstant.STOCKDATA); |
|
|
|
|
trayTypeEntity.setTrayType(trayType); |
|
|
|
|
trayTypeEntity.setOrderTotalNum(0); |
|
|
|
|
trayTypeEntity.setTotalNum(0); |
|
|
|
|