|
|
|
@ -43,19 +43,20 @@ import com.logpm.warehouse.service.*;
|
|
|
|
|
import com.logpm.warehouse.vo.*; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.extern.log4j.Log4j2; |
|
|
|
|
import org.springblade.common.constant.DictBizConstant; |
|
|
|
|
import org.springblade.common.constant.common.IsOrNoConstant; |
|
|
|
|
import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant; |
|
|
|
|
import org.springblade.common.exception.CustomerException; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.BeanUtil; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
|
import org.springblade.system.entity.DictBiz; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -104,6 +105,7 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param warehouseId |
|
|
|
|
* @param orderPackageCode |
|
|
|
@ -118,12 +120,16 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
DistributionStockArticleEntity entityByStockArticleId = distributionStockArticleClient.findEntityByStockArticleId(parcelListEntity.getStockArticleId()); |
|
|
|
|
|
|
|
|
|
UpDownStockupAreaVO stockupAreaVo = Func.copy(parcelListEntity, UpDownStockupAreaVO.class); |
|
|
|
|
stockupAreaVo.setIsMay(1); |
|
|
|
|
if (Func.isNotEmpty(parcelListEntity.getMallId())){ |
|
|
|
|
stockupAreaVo.setMarketId(parcelListEntity.getMallId()); |
|
|
|
|
} |
|
|
|
|
if (Func.isNotEmpty(parcelListEntity.getMallName())){ |
|
|
|
|
stockupAreaVo.setMarketName(parcelListEntity.getMallName()); |
|
|
|
|
} |
|
|
|
|
if (!OrderPackageStatusConstant.yiruku.getValue().equals(parcelListEntity.getOrderPackageStatus())){ |
|
|
|
|
stockupAreaVo.setIsMay(0); |
|
|
|
|
} |
|
|
|
|
stockupAreaVo.setGoodsType("1"); |
|
|
|
|
stockupAreaVo.setOrderId(parcelListEntity.getStockArticleId()); |
|
|
|
|
stockupAreaVo.setAssociationId(parcelListEntity.getId()); |
|
|
|
@ -208,11 +214,10 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
List<WarehouseUpdownStockupAreaLogEntity> waitSaveWarehouseUpdownStockupAreaLogEntity = new ArrayList<>(); |
|
|
|
|
for (UpStockupAreaPackageDTO upStockupAreaPackageDTO : upStockupAreaPackageDTOS) { |
|
|
|
|
if ("1".equals(upStockupAreaPackageDTO.getGoodsType())){ |
|
|
|
|
//有数据的包件
|
|
|
|
|
//查询是否存在上架操作
|
|
|
|
|
WarehouseUpdownGoodsEntity updownGoodsEntity = warehouseUpdownGoodsService.getOne(Wrappers.<WarehouseUpdownGoodsEntity>query().lambda() |
|
|
|
|
.eq(WarehouseUpdownGoodsEntity::getWarehouseId, warehouseId) |
|
|
|
|
.eq(WarehouseUpdownGoodsEntity::getAssociationValue, warehouseId) |
|
|
|
|
.eq(WarehouseUpdownGoodsEntity::getAssociationType, "3") |
|
|
|
|
.eq(WarehouseUpdownGoodsEntity::getAssociationValue, upStockupAreaPackageDTO.getAssociationValue()) |
|
|
|
|
); |
|
|
|
|
if (!Objects.isNull(updownGoodsEntity)){ |
|
|
|
|
//进行下架解托操作
|
|
|
|
@ -226,7 +231,7 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getWarehouseId, warehouseId) |
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getAssociationValue, upStockupAreaPackageDTO.getAssociationValue()) |
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getAssociationType, upStockupAreaPackageDTO.getAssociationType()) |
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getAllocationId, upStockupAreaPackageDTO.getAssociationId()) |
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getAssociationId, upStockupAreaPackageDTO.getAssociationId()) |
|
|
|
|
.eq(WarehouseUpdownStockupAreaEntity::getGoodsType, upStockupAreaPackageDTO.getGoodsType()) |
|
|
|
|
); |
|
|
|
|
if (Objects.isNull(isHave)){ |
|
|
|
@ -245,6 +250,8 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
warehouseUpdownStockupAreaLogEntity.setRemark("扫描上架:包条上架"); |
|
|
|
|
warehouseUpdownStockupAreaLogEntity.setBindingType(1); |
|
|
|
|
waitSaveWarehouseUpdownStockupAreaLogEntity.add(warehouseUpdownStockupAreaLogEntity); |
|
|
|
|
}else { |
|
|
|
|
return Resp.scanFail("包件已上架","包件已上架"); |
|
|
|
|
} |
|
|
|
|
//查询是否进行了上架,如果进行了上架需要进行对原库位进行下架,
|
|
|
|
|
} |
|
|
|
@ -257,7 +264,9 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
throw new RuntimeException("执行下架失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
warehouseUpdownStockupAreaLogService.saveBatch(waitSaveWarehouseUpdownStockupAreaLogEntity); |
|
|
|
|
if (!waitSaveWarehouseUpdownStockupAreaLogEntity.isEmpty()){ |
|
|
|
|
warehouseUpdownStockupAreaLogService.saveBatch(waitSaveWarehouseUpdownStockupAreaLogEntity); |
|
|
|
|
} |
|
|
|
|
return R.status(this.saveBatch(waitSaveWarehouseUpdownStockupAreaEntity)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -385,7 +394,7 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R getStockByParam(Integer stockType, String value, Long marketId, Long warehouseId) { |
|
|
|
|
public List<UpdownStockVO> getStockByParam(Integer stockType, String value, Long marketId, Long warehouseId) { |
|
|
|
|
List<UpdownStockVO> ls = new ArrayList<>(); |
|
|
|
|
//1物料编码 2物料名称
|
|
|
|
|
if(1==stockType){ |
|
|
|
@ -408,7 +417,7 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
}else{ |
|
|
|
|
log.warn("#################getStockByParam: 未知的库存品查询类型"); |
|
|
|
|
} |
|
|
|
|
return R.data(ls); |
|
|
|
|
return ls; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -651,6 +660,101 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
|
|
|
|
|
return R.status(this.saveBatch(warehouseUpdownStockupAreaEntities)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param warehouseId |
|
|
|
|
* @param trayCode |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public R upShelfScanTray(Long warehouseId, String trayCode) { |
|
|
|
|
List<WarehouseTrayGoodsEntity> entityList = warehouseTrayGoodsService.list(Wrappers.<WarehouseTrayGoodsEntity>query().lambda() |
|
|
|
|
.eq(WarehouseTrayGoodsEntity::getTrayCode, trayCode) |
|
|
|
|
.eq(WarehouseTrayGoodsEntity::getWarehouseId, warehouseId) |
|
|
|
|
); |
|
|
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
|
|
TrayTypeDataVO trayData = warehouseTrayTypeService.getEntityByTrayCode(trayCode,warehouseId); |
|
|
|
|
if(!Objects.isNull(trayData)){ |
|
|
|
|
map.put("trayData",trayData); |
|
|
|
|
} |
|
|
|
|
if (!entityList.isEmpty()){ |
|
|
|
|
//存在托盘,进行托盘货物查询
|
|
|
|
|
Map<String, List<WarehouseTrayGoodsEntity>> collect = entityList.stream().filter(f -> Func.isNotEmpty(f.getAssociationType())).collect(Collectors.groupingBy(WarehouseTrayGoodsEntity::getAssociationType)); |
|
|
|
|
if (!collect.isEmpty()){ |
|
|
|
|
collect.forEach((k,v)->{ |
|
|
|
|
switch (k){ |
|
|
|
|
case "1": |
|
|
|
|
//零担
|
|
|
|
|
List<UpDownStockupAreaVO> zeroOrder = handelZeroOrder(v,warehouseId); |
|
|
|
|
if (!zeroOrder.isEmpty()){ |
|
|
|
|
map.put("zeroOrder",zeroOrder); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "2": |
|
|
|
|
//运单号
|
|
|
|
|
break; |
|
|
|
|
case "3": |
|
|
|
|
//包件
|
|
|
|
|
//组装包件数据进行上架
|
|
|
|
|
List<UpDownStockupAreaVO> packageData = handelPackage(v,warehouseId); |
|
|
|
|
if (!packageData.isEmpty()){ |
|
|
|
|
map.put("packageData",packageData); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "4": |
|
|
|
|
//库存品
|
|
|
|
|
List<UpdownStockVO> inventoryData =handelInventory(v,warehouseId); |
|
|
|
|
if (!inventoryData.isEmpty()){ |
|
|
|
|
map.put("inventoryData",inventoryData); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
log.info("##################未知打托方式,k:{}",k); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return R.data(map); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<UpDownStockupAreaVO> handelZeroOrder(List<WarehouseTrayGoodsEntity> zeroOrderGoods, Long warehouseId) { |
|
|
|
|
List<UpDownStockupAreaVO> zeroOrderData = new ArrayList<>(); |
|
|
|
|
for (WarehouseTrayGoodsEntity zeroOrderGood : zeroOrderGoods) { |
|
|
|
|
UpDownStockupAreaVO upDownStockupZeroByOrderCodeAndWarehouseId = distributionStockArticleClient.findUpDownStockupZeroByOrderCodeAndWarehouseId(zeroOrderGood.getAssociationValue(), warehouseId); |
|
|
|
|
if (Func.isNotEmpty(upDownStockupZeroByOrderCodeAndWarehouseId)){ |
|
|
|
|
Integer a = warehouseTrayTypeService.getZeroOrderByOrderId(upDownStockupZeroByOrderCodeAndWarehouseId.getOrderId(),warehouseId); |
|
|
|
|
if (a> 0) { |
|
|
|
|
zeroOrderData.add(upDownStockupZeroByOrderCodeAndWarehouseId); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return zeroOrderData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<UpdownStockVO> handelInventory(List<WarehouseTrayGoodsEntity> inventoryGoods, Long warehouseId) { |
|
|
|
|
List<UpdownStockVO> inventoryData = new ArrayList<>(); |
|
|
|
|
for (WarehouseTrayGoodsEntity warehouseTrayGoodsEntity : inventoryGoods) { |
|
|
|
|
|
|
|
|
|
List<UpdownStockVO> stockByParam = this.getStockByParam(1, warehouseTrayGoodsEntity.getAssociationValue(), warehouseTrayGoodsEntity.getMarketId(), warehouseId); |
|
|
|
|
if (!stockByParam.isEmpty()){ |
|
|
|
|
inventoryData.addAll(stockByParam); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return inventoryData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<UpDownStockupAreaVO> handelPackage(List<WarehouseTrayGoodsEntity> packageGoods,Long warehouseId) { |
|
|
|
|
List<UpDownStockupAreaVO> packageData = new ArrayList<>(); |
|
|
|
|
for (WarehouseTrayGoodsEntity packageGood : packageGoods) { |
|
|
|
|
UpDownStockupAreaVO upDownStockupAreaVO = this.upShelfScanPackage(warehouseId, packageGood.getAssociationValue()); |
|
|
|
|
if (Func.isNotEmpty(upDownStockupAreaVO)){ |
|
|
|
|
packageData.add(upDownStockupAreaVO); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return packageData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private WarehouseUpdownStockupAreaEntity createdNewUpShelfInventory(Long allocationId, Long warehouseId, UpShelfStockDTO upShelfStockDTO, WarehouseUpdownStockupAreaEntity updownTypeEntity, Long goodsAreaId, BasicdataGoodsAreaEntity goodsAreaEntity, Long goodsShelfId, BasicdataGoodsShelfEntity goodsShelfEntity, BasicdataGoodsAllocationEntity goodsAllocationEntity) { |
|
|
|
|
WarehouseUpdownStockupAreaEntity updownStockupAreaEntity = new WarehouseUpdownStockupAreaEntity(); |
|
|
|
|