feat: 添加柜格关联主板ID字段并更新相关逻辑

在CabinetCellDTO和CabinetCellEntity中添加mainboardId字段,用于关联柜格与主板。更新CabinetCellController和OrderApplicationService中的逻辑,使用主板ID获取锁控编号,确保开柜指令的正确生成。
This commit is contained in:
dzq 2025-05-15 16:59:17 +08:00
parent 63e2797ed9
commit b11f1640a7
4 changed files with 23 additions and 3 deletions

View File

@ -7,6 +7,8 @@ import com.agileboot.common.exception.ApiException;
import com.agileboot.common.exception.error.ErrorCode;
import com.agileboot.domain.cabinet.cell.model.CabinetCellModel;
import com.agileboot.domain.cabinet.cell.model.CabinetCellModelFactory;
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModel;
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModelFactory;
import com.agileboot.domain.cabinet.operation.command.AddCabinetCellOperationCommand;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModel;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModelFactory;
@ -36,6 +38,7 @@ public class CabinetCellController {
private final CabinetCellModelFactory cabinetCellModelFactory;
private final GoodsModelFactory goodsModelFactory;
private final SmartCabinetModelFactory smartCabinetModelFactory;
private final CabinetMainboardModelFactory cabinetMainboardModelFactory;
@GetMapping("/detail")
public ResponseDTO<List<CabinetDetailDTO>> getCabinetDetail() {
@ -54,7 +57,11 @@ public class CabinetCellController {
CabinetCellOperationModel cellOperationModel = cabinetCellOperationModelFactory.create();
SmartCabinetModel smartCabinetModel = smartCabinetModelFactory.loadById(cabinetId);
Integer lockControlNo = smartCabinetModel.getLockControlNo();
CabinetCellModel cabinetCellModel = cabinetCellModelFactory.loadById(operationCommand.getCellId());
CabinetMainboardModel cabinetMainboardModel = cabinetMainboardModelFactory.loadById(cabinetCellModel.getMainboardId());
Integer lockControlNo = cabinetMainboardModel.getLockControlNo();
// 发送指令
String mqttDate = "8A";
mqttDate += String.format("%02X", lockControlNo);
@ -72,7 +79,6 @@ public class CabinetCellController {
if (operationCommand.getCellId() == null) {
log.error("openCabinet 格口ID为空");
} else {
CabinetCellModel cabinetCellModel = cabinetCellModelFactory.loadById(operationCommand.getCellId());
operationCommand.setGoodsId(cabinetCellModel.getGoodsId());
operationCommand.setGoodsName("");

View File

@ -35,6 +35,10 @@ public class CabinetCellEntity extends BaseEntity<CabinetCellEntity> {
@TableField("cabinet_id")
private Long cabinetId;
@ApiModelProperty("关联主板ID")
@TableField("mainboard_id")
private Long mainboardId;
@ApiModelProperty("格口号")
@TableField("cell_no")
private Integer cellNo;

View File

@ -37,6 +37,9 @@ public class CabinetCellDTO {
@ExcelColumn(name = "关联柜机ID")
private Long cabinetId;
@ExcelColumn(name = "关联主板ID")
private Long mainboardId;
@ExcelColumn(name = "格口号")
private Integer cellNo;

View File

@ -8,6 +8,10 @@ import com.agileboot.common.exception.ApiException;
import com.agileboot.common.exception.error.ErrorCode;
import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity;
import com.agileboot.domain.cabinet.cell.db.CabinetCellService;
import com.agileboot.domain.cabinet.mainboard.db.CabinetMainboardEntity;
import com.agileboot.domain.cabinet.mainboard.db.CabinetMainboardService;
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModel;
import com.agileboot.domain.cabinet.mainboard.model.CabinetMainboardModelFactory;
import com.agileboot.domain.cabinet.operation.command.AddCabinetCellOperationCommand;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModel;
import com.agileboot.domain.cabinet.operation.model.CabinetCellOperationModelFactory;
@ -75,6 +79,7 @@ public class OrderApplicationService {
private final QyUserModelFactory qyUserModelFactory;
private final CabinetCellOperationModelFactory cabinetCellOperationModelFactory;
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
private final CabinetMainboardService cabinetMainboardService;
public PageDTO<OrderWithGoodsDTO> getOrderList(SearchShopOrderQuery<OrderWithGoodsDTO> query) {
Page<OrderWithGoodsDTO> page = orderService.getOrderList(query);
@ -111,6 +116,8 @@ public class OrderApplicationService {
throw new ApiException(ErrorCode.Client.COMMON_FORBIDDEN_TO_CALL, "柜子不存在");
}
CabinetMainboardEntity cabinetMainboard = cabinetMainboardService.getById(cabinetCellEntity.getMainboardId());
operationCommand.setCellId(goodsEntity.getCellId());
operationCommand.setGoodsId(goodsEntity.getGoodsId());
operationCommand.setGoodsName(goodsEntity.getGoodsName());
@ -120,7 +127,7 @@ public class OrderApplicationService {
// 构造MQTT开柜指令
// 指令格式8A + 锁控编号(2位HEX) + 引脚号(2位HEX) + 操作码11
String mqttDate = "8A";
mqttDate += String.format("%02X", smartCabinet.getLockControlNo());
mqttDate += String.format("%02X", cabinetMainboard.getLockControlNo());
mqttDate += String.format("%02X", cabinetCellEntity.getPinNo());
mqttDate += "11";
try {