feat(barcode): 添加越库处理状态并优化入库流程
- 在 BarCodeProcessStage 枚举中添加 Cross 越库状态 - 移除枚举类中未使用的 EnumValue 注解 - 修改 NormalPGIController 中的入库逻辑,将二维码状态设置为越库 - 更新库存记录的锁定数量为零,并添加正确的数量字段 - 优化生产订单项目的ID生成和关联关系 - 更新二维码主数据和服务层批量处理逻辑 - 修复入库单据查询的时间条件关联表问题 - 移除 QRCodeQO1 中不再需要的数量验证字段
This commit is contained in:
parent
e8609eca0c
commit
6eb9ec648e
|
|
@ -1265,39 +1265,40 @@ public class NormalPGIController extends BaseController {
|
|||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到二维码对应的订单");
|
||||
item.setInQty(item.getInQty().add(code.getNum()));
|
||||
item.setCrossQty(item.getCrossQty().add(code.getNum()));
|
||||
// item.setInQty(item.getInQty().add(qrCodeMaster.getQuantity()));
|
||||
item.setCrossQty(item.getCrossQty().add(qrCodeMaster.getQuantity()));
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.Cross.getState());
|
||||
});
|
||||
});
|
||||
List<PoReceiveTaskConfirmQO> qos = new ArrayList<>();
|
||||
receiptItems.forEach(item -> {
|
||||
PoReceiveTaskConfirmQO qo = qos.stream()
|
||||
.filter(q -> q.getTaskId().equals(item.getReceiveId()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(qo)) {
|
||||
qo = new PoReceiveTaskConfirmQO()
|
||||
.setTaskId(item.getReceiveId())
|
||||
.setItems(new ArrayList<>());
|
||||
qos.add(qo);
|
||||
}
|
||||
qo.getItems().add(new PoReceiveTaskItemConfirmQO()
|
||||
.setId(item.getId())
|
||||
.setReceivedWarehouse(item.getReceivedWarehouse())
|
||||
.setItems(
|
||||
qrCodeMasters.stream()
|
||||
.filter(qit -> qit.getReceiptItemId().equals(item.getId()))
|
||||
.toList()
|
||||
.stream()
|
||||
.map(qit -> new InCostCenterBackSubmitItemQRQO()
|
||||
.setBinNo(item.getStorageLocation())
|
||||
.setQrCode(qit.getBarcodeCode())
|
||||
)
|
||||
.toList()
|
||||
)
|
||||
);
|
||||
});
|
||||
qos.forEach(this::takeDeliveryConfirm);
|
||||
// List<PoReceiveTaskConfirmQO> qos = new ArrayList<>();
|
||||
// receiptItems.forEach(item -> {
|
||||
// PoReceiveTaskConfirmQO qo = qos.stream()
|
||||
// .filter(q -> q.getTaskId().equals(item.getReceiveId()))
|
||||
// .findFirst()
|
||||
// .orElse(null);
|
||||
// if (Objects.isNull(qo)) {
|
||||
// qo = new PoReceiveTaskConfirmQO()
|
||||
// .setTaskId(item.getReceiveId())
|
||||
// .setItems(new ArrayList<>());
|
||||
// qos.add(qo);
|
||||
// }
|
||||
// qo.getItems().add(new PoReceiveTaskItemConfirmQO()
|
||||
// .setId(item.getId())
|
||||
// .setReceivedWarehouse(item.getReceivedWarehouse())
|
||||
// .setItems(
|
||||
// qrCodeMasters.stream()
|
||||
// .filter(qit -> qit.getReceiptItemId().equals(item.getId()))
|
||||
// .toList()
|
||||
// .stream()
|
||||
// .map(qit -> new InCostCenterBackSubmitItemQRQO()
|
||||
// .setBinNo(item.getStorageLocation())
|
||||
// .setQrCode(qit.getBarcodeCode())
|
||||
// )
|
||||
// .toList()
|
||||
// )
|
||||
// );
|
||||
// });
|
||||
// qos.forEach(this::takeDeliveryConfirm);
|
||||
Map<String, List<Zwm3a07VO>> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2));
|
||||
List<WmsOutProduce> pOrders = new ArrayList<>();
|
||||
List<WmsOutProduceTicket> tickets = new ArrayList<>();
|
||||
|
|
@ -1323,10 +1324,13 @@ public class NormalPGIController extends BaseController {
|
|||
items.forEach(item -> {
|
||||
RLock lock = redissonClient.getLock(StrUtil.format("lock:inventory:{}:{}:{}", item.getDwerk(), item.getLgort2(), item.getMatnr()));
|
||||
try {
|
||||
Long itemId=IdUtil.getSnowflakeNextId();
|
||||
// 等待5秒获取锁,10秒后自动释放
|
||||
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
|
||||
WmsOutProduceItem data = Convert.convert(WmsOutProduceItem.class, item);
|
||||
data.setLockNum(item.getSqsl());
|
||||
data.setId(itemId);
|
||||
data.setLockNum(BigDecimal.ZERO);
|
||||
data.setNum(item.getSqsl());
|
||||
data.setOrderId(order.getId());
|
||||
outProduceItemService.save(data);
|
||||
} else {
|
||||
|
|
@ -1335,7 +1339,7 @@ public class NormalPGIController extends BaseController {
|
|||
ticketItems.add(
|
||||
new WmsOutProduceTicketItem()
|
||||
.setTicketId(ticket.getId())
|
||||
.setProduceItemId(order.getId())
|
||||
.setProduceItemId(itemId)
|
||||
.setNum(item.getSqsl())
|
||||
);
|
||||
} catch (Exception e) {
|
||||
|
|
@ -1348,6 +1352,8 @@ public class NormalPGIController extends BaseController {
|
|||
}
|
||||
});
|
||||
});
|
||||
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||
wmsPoReceiptItemService.updateBatchById(receiptItems);
|
||||
outProduceService.saveBatch(pOrders);
|
||||
outProduceTicketService.saveBatch(tickets);
|
||||
outProduceTicketItemService.saveBatch(ticketItems);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.nflg.wms.common.constant;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
|
|
@ -56,7 +55,11 @@ public enum BarCodeProcessStage {
|
|||
/**
|
||||
* 已拒收
|
||||
*/
|
||||
Reject((short) 11, "拒收");
|
||||
Reject((short) 11, "拒收"),
|
||||
/**
|
||||
* 已拒收
|
||||
*/
|
||||
Cross((short) 12, "已越库");
|
||||
|
||||
private final short state;
|
||||
private final String description;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Positive;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class QRCodeQO1 {
|
||||
|
||||
|
|
@ -16,10 +12,10 @@ public class QRCodeQO1 {
|
|||
@NotBlank
|
||||
private String codeId;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@NotNull
|
||||
@Positive(message = "数量必须大于0")
|
||||
private BigDecimal num;
|
||||
// /**
|
||||
// * 数量
|
||||
// */
|
||||
// @NotNull
|
||||
// @Positive(message = "数量必须大于0")
|
||||
// private BigDecimal num;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@
|
|||
INNER JOIN wms_in_produce_order_surplus ipos ON ipost.order_id=ipos."id"
|
||||
<where>
|
||||
<if test="request.startDate!=null">
|
||||
and ipost.create_time >= #{request.startDate}
|
||||
and ipos.create_time >= #{request.startDate}
|
||||
</if>
|
||||
<if test="request.endDate!=null">
|
||||
and ipost.create_time <= #{request.endDate}
|
||||
and ipos.create_time <= #{request.endDate}
|
||||
</if>
|
||||
<if test="request.no != null and request.no!=''">
|
||||
AND ipost."no" ilike CONCAT('%',#{request.no},'%')
|
||||
|
|
|
|||
Loading…
Reference in New Issue