|
|
|
@ -23,18 +23,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import com.logpm.basic.entity.BasicMaterialEntity; |
|
|
|
|
import com.logpm.basic.feign.IBasicMaterialClient; |
|
|
|
|
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; |
|
|
|
|
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
|
|
|
|
import com.logpm.distribution.dto.DistributionParcelListDTO; |
|
|
|
|
import com.logpm.distribution.dto.app.StockupDTO; |
|
|
|
|
import com.logpm.distribution.entity.DistributionParcelListEntity; |
|
|
|
|
import com.logpm.distribution.entity.DistributionParcelNumberEntity; |
|
|
|
|
import com.logpm.distribution.entity.DistributionStockArticleEntity; |
|
|
|
|
import com.logpm.distribution.entity.*; |
|
|
|
|
import com.logpm.distribution.excel.DistributionParcelListExcel; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionParcelListMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionStockArticleMapper; |
|
|
|
|
import com.logpm.distribution.service.IDistributionParcelListService; |
|
|
|
|
import com.logpm.distribution.service.IDistributionParcelNumberService; |
|
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
|
import com.logpm.distribution.vo.*; |
|
|
|
|
import com.logpm.warehouse.feign.IWarehouseUpdownGoodsClient; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
@ -44,15 +43,16 @@ import org.springblade.common.constant.orderpackage.OrderPackageGroundingStatusC
|
|
|
|
|
import org.springblade.common.utils.CommonUtil; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
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.core.tool.utils.ObjectUtil; |
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Arrays; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -73,6 +73,13 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
|
|
|
|
|
|
|
|
|
|
private final DistributionStockArticleMapper distributionStockArticleMapper; |
|
|
|
|
|
|
|
|
|
private final IDistributionParcelDetailsService distributionParcelDetailsService; |
|
|
|
|
|
|
|
|
|
private final IBasicMaterialClient basicMaterialClient; |
|
|
|
|
|
|
|
|
|
private final IDistributionStockListInfoService distributionStockListInfoService; |
|
|
|
|
private final IDistributionStockListService distributionStockListService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionParcelListEntity> selectDistributionParcelListPage(IPage<DistributionParcelListEntity> page, DistributionParcelListVO distributionParcelList) { |
|
|
|
|
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse(); |
|
|
|
@ -375,4 +382,146 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
|
|
|
|
|
public String getOrderPackageCode(Long id) { |
|
|
|
|
return baseMapper.getOrderPackageCode(id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 包件转库存品 |
|
|
|
|
* @param distributionParcelList |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public R packageTransferStock(Map<String, Object> distributionParcelList) { |
|
|
|
|
Object o = distributionParcelList.get("list"); |
|
|
|
|
if(ObjectUtils.isNull(o)){ |
|
|
|
|
return R.fail("参数不完整!"); |
|
|
|
|
} |
|
|
|
|
List<DistributionParcelListEntity> list1 = Collections.singletonList((DistributionParcelListEntity) o); |
|
|
|
|
if (!list1.isEmpty()) { |
|
|
|
|
list1.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getMaterialId)) |
|
|
|
|
.forEach((k ,v) ->{ |
|
|
|
|
int sum = v.stream().mapToInt(DistributionParcelListEntity::getQuantity).sum(); |
|
|
|
|
v.stream().forEach( i -> { |
|
|
|
|
//查询有没有打托数据
|
|
|
|
|
|
|
|
|
|
//查询包件有没有物料
|
|
|
|
|
List<DistributionParcelDetailsEntity> list = distributionParcelDetailsService.list(Wrappers.<DistributionParcelDetailsEntity>query().lambda() |
|
|
|
|
.eq(DistributionParcelDetailsEntity::getParcelListId, i.getId()) |
|
|
|
|
); |
|
|
|
|
if (!list.isEmpty()) { |
|
|
|
|
//有
|
|
|
|
|
list.stream().collect(Collectors.groupingBy(DistributionParcelDetailsEntity::getEncoded)) |
|
|
|
|
.forEach((kk,vv) ->{ |
|
|
|
|
DistributionParcelListEntity parcelListEntity = new DistributionParcelListEntity(); |
|
|
|
|
BeanUtil.copyProperties(vv.get(0),parcelListEntity); |
|
|
|
|
parcelListEntity.setQuantity(sum); |
|
|
|
|
parcelListEntity.setMaterialName(vv.get(0).getName()); |
|
|
|
|
parcelListEntity.setMaterialCode(vv.get(0).getEncoded()); |
|
|
|
|
parcelListEntity.setMaterialUnit(vv.get(0).getUnit()); |
|
|
|
|
// 添加库存品信息
|
|
|
|
|
addStockList(parcelListEntity, 1); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
DistributionParcelListEntity parcelList = new DistributionParcelListEntity(); |
|
|
|
|
parcelList.setId(i.getId()); |
|
|
|
|
parcelList.setConditions(2); |
|
|
|
|
baseMapper.updateById(parcelList); |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
DistributionParcelListEntity parcelListEntity = new DistributionParcelListEntity(); |
|
|
|
|
BeanUtil.copyProperties(v.get(0),parcelListEntity); |
|
|
|
|
parcelListEntity.setQuantity(sum); |
|
|
|
|
// 添加库存品信息
|
|
|
|
|
addStockList(parcelListEntity, 1); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// for (int i = 0; i < split.length; i++) {
|
|
|
|
|
// //修改订单状态
|
|
|
|
|
// DistributionStockArticleEntity stockArticleEntity = new DistributionStockArticleEntity();
|
|
|
|
|
// stockArticleEntity.setId(Long.parseLong(split[i]));
|
|
|
|
|
// stockArticleEntity.setGenre(2);
|
|
|
|
|
// baseMapper.updateById(stockArticleEntity);
|
|
|
|
|
// }
|
|
|
|
|
return R.success("操作成功!"); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param distributionParcelList 包件信息 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public DistributionStockArticleEntity addStockList(DistributionParcelListEntity distributionParcelList, Integer qu) { |
|
|
|
|
|
|
|
|
|
//查询在库订单信息
|
|
|
|
|
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleMapper.selectById(distributionParcelList.getStockArticleId()); |
|
|
|
|
if (ObjectUtil.isEmpty(distributionStockArticleEntity.getMallId()) ) { |
|
|
|
|
throw new ServiceException("订单的客户数据异常,无法转换!!"); |
|
|
|
|
} |
|
|
|
|
DistributionStockListEntity distributionStockListEntity = new DistributionStockListEntity(); |
|
|
|
|
//直接添加
|
|
|
|
|
// distributionStockListEntity.setIncomingBatch(distributionStockArticleEntity.get); //入库批次号
|
|
|
|
|
distributionStockListEntity.setServiceNumber(Optional.ofNullable(distributionStockArticleEntity.getServiceNumber()).orElse(null)); //服务号
|
|
|
|
|
distributionStockListEntity.setDescriptionGoods(Optional.ofNullable(distributionParcelList.getMaterialName()).orElse(null)); //物料名称
|
|
|
|
|
distributionStockListEntity.setCargoNumber(Optional.ofNullable(distributionParcelList.getMaterialCode()).orElse(null)); //物料编号
|
|
|
|
|
distributionStockListEntity.setWarehouseName(Optional.ofNullable(distributionStockArticleEntity.getWarehouse()).orElse(null)); //仓库
|
|
|
|
|
distributionStockListEntity.setWarehouseId(Optional.ofNullable(distributionStockArticleEntity.getWarehouseId()).orElse(null)); //仓库ID
|
|
|
|
|
distributionStockListEntity.setMarketId(Optional.ofNullable(distributionStockArticleEntity.getMallId()).orElse(null)); //商场
|
|
|
|
|
distributionStockListEntity.setCargoUnit(Optional.ofNullable(distributionParcelList.getMaterialUnit()).orElse(null)); //货物单位
|
|
|
|
|
|
|
|
|
|
distributionStockListEntity.setMallName(Optional.ofNullable(distributionStockArticleEntity.getMallName()).orElse(null)); //商场名称
|
|
|
|
|
distributionStockListEntity.setQuantityStock(Optional.ofNullable(distributionParcelList.getQuantity()).orElse(null)); //库存数量(包件数量)
|
|
|
|
|
distributionStockListEntity.setIncomingBatch(Optional.ofNullable(distributionStockArticleEntity.getWaybillNumber()).orElse(null)); //入库批次
|
|
|
|
|
distributionStockListEntity.setOutboundQuantity(0); //出库数量
|
|
|
|
|
|
|
|
|
|
// distributionStockListEntity.setCargoUnit(Optional.ofNullable(distributionParcelList.getMaterialUnit()).orElse(null));//单位
|
|
|
|
|
distributionStockListEntity.setStoreId(Optional.ofNullable(distributionStockArticleEntity.getStoreId()).orElse(null));//门店ID
|
|
|
|
|
distributionStockListEntity.setMarketCode(Optional.ofNullable(distributionStockArticleEntity.getMallCode()).orElse(null));//商场编码
|
|
|
|
|
distributionStockListEntity.setMarketName(Optional.ofNullable(distributionStockArticleEntity.getMallName()).orElse(null));//商场名称
|
|
|
|
|
distributionStockListEntity.setStoreCode(Optional.ofNullable(distributionStockArticleEntity.getStoreCode()).orElse(null));//门店编码
|
|
|
|
|
distributionStockListEntity.setStoreName(Optional.ofNullable(distributionStockArticleEntity.getStoreName()).orElse(null));//门店名称
|
|
|
|
|
|
|
|
|
|
// distributionStockListEntity.setCategory(Optional.ofNullable(distributionParcelList.getBrandId()+"").orElse(null));//品分类
|
|
|
|
|
// 品牌
|
|
|
|
|
distributionStockListEntity.setBrandId(Optional.ofNullable(distributionParcelList.getBrandId()).orElse(null)); |
|
|
|
|
distributionStockListEntity.setUnpackingQuantity(0); |
|
|
|
|
|
|
|
|
|
BasicMaterialEntity materialOwnId = basicMaterialClient.getMaterialOwnId(distributionParcelList.getMaterialId()); |
|
|
|
|
distributionStockListEntity.setSku(materialOwnId.getSku()); |
|
|
|
|
distributionStockListEntity.setMaterialId(Optional.ofNullable(distributionParcelList.getMaterialId()).orElse(null));//货物ID
|
|
|
|
|
distributionStockListEntity.setParcelListId(distributionParcelList.getId());//包件id
|
|
|
|
|
distributionStockListEntity.setQuantityOccupied(0);//冻结数量
|
|
|
|
|
distributionStockListEntity.setServiceType(distributionStockArticleEntity.getTypeService());//冻结数量
|
|
|
|
|
DistributionStockListEntity stockListEntity = distributionStockListService.getStockListEntity(distributionStockArticleEntity.getMallId(), distributionParcelList.getMaterialId(), distributionStockArticleEntity.getWaybillNumber(),distributionStockArticleEntity.getStoreId(),distributionStockArticleEntity.getWarehouseId()); |
|
|
|
|
if(ObjectUtils.isNotNull(stockListEntity)){ |
|
|
|
|
//有记录
|
|
|
|
|
DistributionStockListEntity listEntity = new DistributionStockListEntity(); |
|
|
|
|
listEntity.setId(stockListEntity.getId());//id
|
|
|
|
|
Integer quantity = ObjectUtils.isNull(distributionParcelList.getQuantity()) ? 0: distributionParcelList.getQuantity(); |
|
|
|
|
Integer quantityStock = ObjectUtils.isNull(stockListEntity.getQuantityStock()) ? 0 : stockListEntity.getQuantityStock(); |
|
|
|
|
listEntity.setQuantityStock(quantity + quantityStock); |
|
|
|
|
distributionStockListService.updateById(listEntity); |
|
|
|
|
}else{ |
|
|
|
|
distributionStockListService.save(distributionStockListEntity); |
|
|
|
|
} |
|
|
|
|
distributionStockListEntity.setTrayName(Optional.ofNullable(distributionParcelList.getPallet()).orElse(null)); //托盘
|
|
|
|
|
distributionStockListEntity.setStorageLocation(Optional.ofNullable(distributionParcelList.getGoodsAllocation()).orElse(null)); //库位信息
|
|
|
|
|
distributionStockListEntity.setFactory(Optional.ofNullable(distributionStockArticleEntity.getFactoryTrain()).orElse(null));//工厂车次
|
|
|
|
|
distributionStockListEntity.setDespatch(Optional.ofNullable(distributionStockArticleEntity.getTrainNumber()).orElse(null));//车次号
|
|
|
|
|
distributionStockListEntity.setStockArticleId(Optional.ofNullable(distributionParcelList.getStockArticleId()).orElse(null)); //订单ID
|
|
|
|
|
distributionStockListEntity.setOrderCode(Optional.ofNullable(distributionStockArticleEntity.getOrderCode()).orElse(null)); //订单自编号
|
|
|
|
|
//添加库存品记录
|
|
|
|
|
DistributionStockListInfoEntity distributionStockListInfo = new DistributionStockListInfoEntity(); |
|
|
|
|
BeanUtil.copyProperties(distributionStockListEntity,distributionStockListInfo); |
|
|
|
|
distributionStockListInfo.setWarehousingTime(distributionStockArticleEntity.getWarehouseEntryTime()); |
|
|
|
|
distributionStockListInfo.setStockArticleId(distributionStockArticleEntity.getId()); |
|
|
|
|
// distributionStockListInfo.setLicensePlate(distributionStockArticleEntity.get); //车牌
|
|
|
|
|
distributionStockListInfo.setDespatch(distributionStockArticleEntity.getWaybillNumber()); //物流单号
|
|
|
|
|
distributionStockListInfoService.save(distributionStockListInfo); |
|
|
|
|
return distributionStockArticleEntity; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|