|
|
|
@ -57,6 +57,10 @@ import org.springblade.common.constant.reservation.ReservationOrderStatusConstan
|
|
|
|
|
import org.springblade.common.constant.reservation.ReservationPackageStatusConstant; |
|
|
|
|
import org.springblade.common.constant.reservation.ReservationSigningStatusConstant; |
|
|
|
|
import org.springblade.common.constant.stockup.StockupTypeStatusConstant; |
|
|
|
|
import org.springblade.common.enums.BizOperationEnums; |
|
|
|
|
import org.springblade.common.enums.PackageTypeEnums; |
|
|
|
|
import org.springblade.common.model.NodeFanoutMsg; |
|
|
|
|
import org.springblade.common.model.PackageData; |
|
|
|
|
import org.springblade.common.utils.CommonUtil; |
|
|
|
|
import org.springblade.core.boot.ctrl.BladeController; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
@ -68,8 +72,6 @@ import org.springblade.core.tool.utils.Func;
|
|
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
|
import org.springframework.amqp.rabbit.core.RabbitTemplate; |
|
|
|
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
|
|
|
|
import org.springframework.transaction.TransactionDefinition; |
|
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Field; |
|
|
|
@ -118,6 +120,7 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
|
|
|
|
|
private final BladeRedis redis; |
|
|
|
|
private final ITrunklinePackageTrackLogClient trunklinePackageTrackLogClient; |
|
|
|
|
private final IDistributionNodeWorkService distributionNodeWorkService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -711,37 +714,6 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
case 3: |
|
|
|
|
return R.data(200, distributionStockListEntities.getId(), "扫描成功!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//判断是否可以继续备货
|
|
|
|
|
// if (ObjectUtils.isNull(distributionStockListEntities)) {
|
|
|
|
|
// return R.data(60003, "", "该包件还未上架!");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 通过当前预约单和货物定位当前计划的库存品批次
|
|
|
|
|
// List<DistributionStockListEntity> planDistributionStockListEntities = getPlanDistributionStockListEntities(stockupDTO);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //是否更新计划
|
|
|
|
|
// boolean isUpdate = false;
|
|
|
|
|
// Long updateStockListId = null;
|
|
|
|
|
|
|
|
|
|
// 验证当前货位的货位和计划批次是否相同
|
|
|
|
|
// 验证当前扫描的库存品包件是否属于该计划的库存品批次
|
|
|
|
|
// List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(stockupDTO.getReservationId());
|
|
|
|
|
// distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).filter(drs->)
|
|
|
|
|
// for (DistributionStockListEntity planDistributionStockListEntity : planDistributionStockListEntities) {
|
|
|
|
|
// if (planDistributionStockListEntity.getSourceType().equals("2")) {
|
|
|
|
|
// if (planDistributionStockListEntity.getOrderCode().equals(distributionStockListEntities.getIncomingBatch())) {
|
|
|
|
|
// isUpdate = true;
|
|
|
|
|
// updateStockListId = distributionStockListEntities.getId();
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if (isUpdate) {
|
|
|
|
|
// return R.data(60002, updateStockListId, "当前包件批次号与入库批次号不符,是否确认修改计划批次");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
return R.data(200, "", "扫描成功!"); |
|
|
|
|
} |
|
|
|
@ -757,27 +729,6 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
.eq(DistributionStockListEntity::getWarehouseId, warehouseId) |
|
|
|
|
.eq(DistributionStockListEntity::getCargoNumber, cargoNumber) |
|
|
|
|
); |
|
|
|
|
//判断该库存品包件是否属于计划库存品的物料
|
|
|
|
|
//首先判断包件的物料和此计划中的物料是否一致
|
|
|
|
|
// if (!stockListEntityList.getCargoNumber().equals(distributionParcelListEntity.getMaterialCode())){
|
|
|
|
|
// return 1;
|
|
|
|
|
// }
|
|
|
|
|
// //查看是否和当前页的计划批次一致
|
|
|
|
|
// if (!stockListEntityList.getIncomingBatch().equals(distributionParcelListEntity.getOrderCode())){
|
|
|
|
|
// //查看计划下是否存在该包件对应批次的计划
|
|
|
|
|
// List<DistributionReservationStocklistEntity> reservationStocklistEntityList = distributionReservationMapper.selectStockListByReservationIdAndCargoNumber(reservationId, cargoNumber, stockListId);
|
|
|
|
|
// if (Func.isNotEmpty(reservationStocklistEntityList)){
|
|
|
|
|
// List<Long> stockListIds = reservationStocklistEntityList.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList());
|
|
|
|
|
// List<DistributionStockListEntity> distributionStockListEntities = distributionStockListService.listByIds(stockListIds);
|
|
|
|
|
// boolean isHave = distributionStockListEntities.stream().map(DistributionStockListEntity::getIncomingBatch).allMatch(s -> s.contains(distributionParcelListEntity.getOrderCode()));
|
|
|
|
|
// if (isHave){
|
|
|
|
|
// return 3;
|
|
|
|
|
// }
|
|
|
|
|
// }else {
|
|
|
|
|
// return 2;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean isHave = stockListEntityList.stream().map(DistributionStockListEntity::getCargoNumber).anyMatch(s -> s.contains(distributionParcelListEntity.getMaterialCode())); |
|
|
|
|
if (!isHave) { |
|
|
|
@ -794,25 +745,7 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
return 3; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取计划中库存品 |
|
|
|
|
* |
|
|
|
|
* @param stockupDTO |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private List<DistributionStockListEntity> getPlanDistributionStockListEntities(StockupDTO stockupDTO) { |
|
|
|
|
LambdaQueryWrapper<DistributionReservationStocklistEntity> lambdaQueryWrapper = new LambdaQueryWrapper(); |
|
|
|
|
lambdaQueryWrapper.eq(DistributionReservationStocklistEntity::getReservationId, stockupDTO.getReservationId()); |
|
|
|
|
lambdaQueryWrapper.eq(DistributionReservationStocklistEntity::getStockListStatus, 1); |
|
|
|
|
List<DistributionReservationStocklistEntity> list1 = distributionReservationStocklistService.list(lambdaQueryWrapper); |
|
|
|
|
|
|
|
|
|
// 通过计划的上的库存品id 查询库存品信息
|
|
|
|
|
List<Long> collect = list1.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList()); |
|
|
|
|
List<DistributionStockListEntity> planDistributionStockListEntities = distributionStockListService.listByIds(collect); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return planDistributionStockListEntities; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//todo 这里代码没有写完 等TJJ 和CYZ 空了来写
|
|
|
|
@ -1489,6 +1422,14 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
.set(DistributionParcelListEntity::getOrderPackageStockupStatus, OrderPackageStockupStatusConstant.yibeihu.getValue()) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// todo 这里需要完善
|
|
|
|
|
// 备货作业节点
|
|
|
|
|
NodeFanoutMsg nodeFanoutMsg = sendStockUpNodeData(distributionStockupEntity, parcelListEntity); |
|
|
|
|
if(ObjectUtils.isNotNull(nodeFanoutMsg)){ |
|
|
|
|
distributionNodeWorkService.planStock(nodeFanoutMsg,user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//扫码成功
|
|
|
|
|
return Resp.scanSuccess(PdaAudioLingoStatus.saomiaochenggong.getName(), audioValue); |
|
|
|
|
case 2: |
|
|
|
@ -1687,9 +1628,14 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
parcelListEntity.setId(entity.getParcelListId()); |
|
|
|
|
parcelListEntity.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue()); |
|
|
|
|
distributionParcelListService.updateById(parcelListEntity); |
|
|
|
|
if (!aaa.isEmpty()) { |
|
|
|
|
trunklinePackageTrackLogClient.addPackageTrackLog(aaa); |
|
|
|
|
trunklinePackageTrackLogClient.addPackageTrackLog(aaa); |
|
|
|
|
parcelListEntity = distributionParcelListService.getById(entity.getParcelListId()); |
|
|
|
|
// 备货作业节点
|
|
|
|
|
NodeFanoutMsg nodeFanoutMsg = sendStockUpNodeData(distributionStockupEntity, parcelListEntity); |
|
|
|
|
if(ObjectUtils.isNotNull(nodeFanoutMsg)){ |
|
|
|
|
distributionNodeWorkService.planStock(nodeFanoutMsg,user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return Resp.scanSuccess(PdaAudioLingoStatus.saomiaochenggong.getName(), audioValue); |
|
|
|
|
case 2: |
|
|
|
|
//重复扫描
|
|
|
|
@ -1714,6 +1660,58 @@ public class DistributionStockupAppController extends BladeController {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private NodeFanoutMsg sendStockUpNodeData(DistributionStockupEntity distributionStockupEntity, DistributionParcelListEntity parcelListEntity) { |
|
|
|
|
try { |
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
|
NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg(); |
|
|
|
|
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD); |
|
|
|
|
nodeFanoutMsg.setNode(WorkNodeEnums.STOCKING_OPERATION); |
|
|
|
|
BasicdataWarehouseEntity entityWarehouse = basicdataWarehouseClient.getEntityWarehouseId(distributionStockupEntity.getWarehouseId()); |
|
|
|
|
if(entityWarehouse != null){ |
|
|
|
|
nodeFanoutMsg.setWarehouse(entityWarehouse.getName()); |
|
|
|
|
} |
|
|
|
|
nodeFanoutMsg.setWarehouseId(distributionStockupEntity.getWarehouseId()); |
|
|
|
|
nodeFanoutMsg.setOperator(user.getTenantId()); |
|
|
|
|
nodeFanoutMsg.setOperatorTime(distributionStockupEntity.getCreateTime()); |
|
|
|
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
|
jsonObject.put("id", distributionStockupEntity.getId()); |
|
|
|
|
jsonObject.put("stockupCode", distributionStockupEntity.getStockupCode()); |
|
|
|
|
jsonObject.put("typeService", distributionStockupEntity.getTypeService()); |
|
|
|
|
jsonObject.put("stockupDate", distributionStockupEntity.getStockupDate()); |
|
|
|
|
|
|
|
|
|
String jsonString = jsonObject.toJSONString(); |
|
|
|
|
nodeFanoutMsg.setMain(jsonString); |
|
|
|
|
nodeFanoutMsg.setTenantId(AuthUtil.getTenantId()); |
|
|
|
|
|
|
|
|
|
List<PackageData> packageDataList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
PackageData packageData = getPackageData(parcelListEntity); |
|
|
|
|
|
|
|
|
|
packageDataList.add(packageData); |
|
|
|
|
nodeFanoutMsg.setDetails(packageDataList); |
|
|
|
|
return nodeFanoutMsg; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("备货扫描:发送备货节点消息失败", e); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@NotNull |
|
|
|
|
private static PackageData getPackageData(DistributionParcelListEntity parcelListEntity) { |
|
|
|
|
PackageData packageData = new PackageData(); |
|
|
|
|
|
|
|
|
|
packageData.setWaybillNumber(parcelListEntity.getWaybillNumber()); |
|
|
|
|
packageData.setBrand(parcelListEntity.getBrandName()); |
|
|
|
|
packageData.setPackageCode(parcelListEntity.getOrderPackageCode()); |
|
|
|
|
packageData.setMaterialCode(parcelListEntity.getMaterialCode()); |
|
|
|
|
packageData.setMaterialName(parcelListEntity.getMaterialName()); |
|
|
|
|
packageData.setNumber(1); |
|
|
|
|
packageData.setOrderCode(parcelListEntity.getOrderCode()); |
|
|
|
|
packageData.setPackageType(PackageTypeEnums.CMP); |
|
|
|
|
return packageData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject handleLogJSONObject(BasicdataWarehouseEntity warehouse, BladeUser user, String orderPackageCode, String content, Integer node) { |
|
|
|
|