Browse Source

fix:增加包件的备货信息作业节点数据推送

dist.1.3.0
pref_mail@163.com 6 months ago
parent
commit
c3c4c5f797
  1. 1
      blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java
  2. 10
      blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java
  3. 22
      blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
  4. 146
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java
  5. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java
  6. 30
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java

1
blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java

@ -60,7 +60,6 @@ public enum WorkNodeEnums implements Serializable {
PLANNED_RESERVATION(301010, "计划预约"),
PLAN_DELIVERY(301020, "计划配送"),
DISTRIBUTION_EDIT(301025, "配送计划编辑"),
CANCEL_DELIVERY(301030, "计划取消"),
PLAN_BILLOFLADING(301040, "计划自提"),
EDIT_BILLOFLADING(301045, "自提计划编辑"),

10
blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java

@ -170,6 +170,16 @@ public abstract class FanoutConstants {
}
}
// 备货节点
interface stock {
String EXCHANGE = "fanout.distribution.stock" + ModuleNameConstant.DEVAUTH;
// main: {"distributionCompany":"承运商", "driverName":"司机姓名", "id":"任务ID", "kind":"任务类型 1-自主 2-外协", "taskTime":"任务时间", "trainNumber":"车次号","type":"配送类型 1商配 2市配", "vehicleName":"车牌号"}
interface QUEUE {
}
}

22
blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java

@ -51,19 +51,19 @@ public class LauncherServiceImpl implements LauncherService {
PropsUtil.setProperty(props, "spring.cloud.nacos.config.username","nacos");
PropsUtil.setProperty(props, "spring.cloud.nacos.config.password","Nacos123123");
// dubbo注册
// PropsUtil.setProperty(props, "dubbo.application.name", appName);
// PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false");
// PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo");
// PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile));
// PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION);
// PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES);
PropsUtil.setProperty(props, "dubbo.application.name", appName);
PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false");
PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo");
PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile));
PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION);
PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES);
// seata注册地址
// PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
// // seata注册group格式
// PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
// // seata配置服务group
// PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
// seata注册group格式
PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
// seata配置服务group
PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
// seata注册模式配置
// PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE);
// PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile));

146
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java

@ -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) {

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java

@ -3,6 +3,7 @@ package com.logpm.distribution.service;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.core.secure.BladeUser;
/**
@ -24,7 +25,7 @@ public interface IDistributionNodeWorkService {
/**
* 备货计划节点
*/
// void planStock();
void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user);
// 签收作业节点

30
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java

@ -5,14 +5,12 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.entity.DistributionDeliverySelfEntity;
import com.logpm.distribution.entity.DistributionDeliveryTripartiteEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.service.IDistributionDeliveryListService;
import com.logpm.distribution.service.IDistributionDeliverySelfService;
import com.logpm.distribution.service.IDistributionDeliveryTripartiteService;
import com.logpm.distribution.service.IDistributionNodeWorkService;
import com.logpm.distribution.vo.DistributionStockupVO;
import com.logpm.factorydata.enums.BrandEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
@ -48,19 +46,19 @@ import java.util.*;
public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkService {
@Autowired
private RabbitTemplate rabbitTemplate;
private RabbitTemplate rabbitTemplate;
@Autowired
private FactoryDataMessageSender factoryDataMessageSender;
private FactoryDataMessageSender factoryDataMessageSender;
@Autowired
@Lazy
private IDistributionDeliveryListService distributionDeliveryListService;
private IDistributionDeliveryListService distributionDeliveryListService;
@Autowired
private IDistributionDeliverySelfService distributionDeliverySelfService;
private IDistributionDeliverySelfService distributionDeliverySelfService;
@Autowired
private IDistributionDeliveryTripartiteService distributionDeliveryTripartiteService;
private IDistributionDeliveryTripartiteService distributionDeliveryTripartiteService;
@Override
public void planDelivery(DistributionDeliveryListEntity distributionDeliveryListEntity, BladeUser user,BizOperationEnums bizOperation) {
public void planDelivery(DistributionDeliveryListEntity distributionDeliveryListEntity, BladeUser user, BizOperationEnums bizOperation) {
try {
NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg();
@ -183,6 +181,18 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
return packageDataList;
}
@Override
public void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
// 备货信息主表
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.stock.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", e);
}
}
@Override
public void nodeLoad() {

Loading…
Cancel
Save