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()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到二维码对应的订单");
|
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到二维码对应的订单");
|
||||||
item.setInQty(item.getInQty().add(code.getNum()));
|
// item.setInQty(item.getInQty().add(qrCodeMaster.getQuantity()));
|
||||||
item.setCrossQty(item.getCrossQty().add(code.getNum()));
|
item.setCrossQty(item.getCrossQty().add(qrCodeMaster.getQuantity()));
|
||||||
|
qrCodeMaster.setProcessStage(BarCodeProcessStage.Cross.getState());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
List<PoReceiveTaskConfirmQO> qos = new ArrayList<>();
|
// List<PoReceiveTaskConfirmQO> qos = new ArrayList<>();
|
||||||
receiptItems.forEach(item -> {
|
// receiptItems.forEach(item -> {
|
||||||
PoReceiveTaskConfirmQO qo = qos.stream()
|
// PoReceiveTaskConfirmQO qo = qos.stream()
|
||||||
.filter(q -> q.getTaskId().equals(item.getReceiveId()))
|
// .filter(q -> q.getTaskId().equals(item.getReceiveId()))
|
||||||
.findFirst()
|
// .findFirst()
|
||||||
.orElse(null);
|
// .orElse(null);
|
||||||
if (Objects.isNull(qo)) {
|
// if (Objects.isNull(qo)) {
|
||||||
qo = new PoReceiveTaskConfirmQO()
|
// qo = new PoReceiveTaskConfirmQO()
|
||||||
.setTaskId(item.getReceiveId())
|
// .setTaskId(item.getReceiveId())
|
||||||
.setItems(new ArrayList<>());
|
// .setItems(new ArrayList<>());
|
||||||
qos.add(qo);
|
// qos.add(qo);
|
||||||
}
|
// }
|
||||||
qo.getItems().add(new PoReceiveTaskItemConfirmQO()
|
// qo.getItems().add(new PoReceiveTaskItemConfirmQO()
|
||||||
.setId(item.getId())
|
// .setId(item.getId())
|
||||||
.setReceivedWarehouse(item.getReceivedWarehouse())
|
// .setReceivedWarehouse(item.getReceivedWarehouse())
|
||||||
.setItems(
|
// .setItems(
|
||||||
qrCodeMasters.stream()
|
// qrCodeMasters.stream()
|
||||||
.filter(qit -> qit.getReceiptItemId().equals(item.getId()))
|
// .filter(qit -> qit.getReceiptItemId().equals(item.getId()))
|
||||||
.toList()
|
// .toList()
|
||||||
.stream()
|
// .stream()
|
||||||
.map(qit -> new InCostCenterBackSubmitItemQRQO()
|
// .map(qit -> new InCostCenterBackSubmitItemQRQO()
|
||||||
.setBinNo(item.getStorageLocation())
|
// .setBinNo(item.getStorageLocation())
|
||||||
.setQrCode(qit.getBarcodeCode())
|
// .setQrCode(qit.getBarcodeCode())
|
||||||
)
|
// )
|
||||||
.toList()
|
// .toList()
|
||||||
)
|
// )
|
||||||
);
|
// );
|
||||||
});
|
// });
|
||||||
qos.forEach(this::takeDeliveryConfirm);
|
// qos.forEach(this::takeDeliveryConfirm);
|
||||||
Map<String, List<Zwm3a07VO>> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2));
|
Map<String, List<Zwm3a07VO>> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2));
|
||||||
List<WmsOutProduce> pOrders = new ArrayList<>();
|
List<WmsOutProduce> pOrders = new ArrayList<>();
|
||||||
List<WmsOutProduceTicket> tickets = new ArrayList<>();
|
List<WmsOutProduceTicket> tickets = new ArrayList<>();
|
||||||
|
|
@ -1323,10 +1324,13 @@ public class NormalPGIController extends BaseController {
|
||||||
items.forEach(item -> {
|
items.forEach(item -> {
|
||||||
RLock lock = redissonClient.getLock(StrUtil.format("lock:inventory:{}:{}:{}", item.getDwerk(), item.getLgort2(), item.getMatnr()));
|
RLock lock = redissonClient.getLock(StrUtil.format("lock:inventory:{}:{}:{}", item.getDwerk(), item.getLgort2(), item.getMatnr()));
|
||||||
try {
|
try {
|
||||||
|
Long itemId=IdUtil.getSnowflakeNextId();
|
||||||
// 等待5秒获取锁,10秒后自动释放
|
// 等待5秒获取锁,10秒后自动释放
|
||||||
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
|
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
|
||||||
WmsOutProduceItem data = Convert.convert(WmsOutProduceItem.class, item);
|
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());
|
data.setOrderId(order.getId());
|
||||||
outProduceItemService.save(data);
|
outProduceItemService.save(data);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1335,7 +1339,7 @@ public class NormalPGIController extends BaseController {
|
||||||
ticketItems.add(
|
ticketItems.add(
|
||||||
new WmsOutProduceTicketItem()
|
new WmsOutProduceTicketItem()
|
||||||
.setTicketId(ticket.getId())
|
.setTicketId(ticket.getId())
|
||||||
.setProduceItemId(order.getId())
|
.setProduceItemId(itemId)
|
||||||
.setNum(item.getSqsl())
|
.setNum(item.getSqsl())
|
||||||
);
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -1348,6 +1352,8 @@ public class NormalPGIController extends BaseController {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||||
|
wmsPoReceiptItemService.updateBatchById(receiptItems);
|
||||||
outProduceService.saveBatch(pOrders);
|
outProduceService.saveBatch(pOrders);
|
||||||
outProduceTicketService.saveBatch(tickets);
|
outProduceTicketService.saveBatch(tickets);
|
||||||
outProduceTicketItemService.saveBatch(ticketItems);
|
outProduceTicketItemService.saveBatch(ticketItems);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.nflg.wms.common.constant;
|
package com.nflg.wms.common.constant;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
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 short state;
|
||||||
private final String description;
|
private final String description;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,8 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Positive;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class QRCodeQO1 {
|
public class QRCodeQO1 {
|
||||||
|
|
||||||
|
|
@ -16,10 +12,10 @@ public class QRCodeQO1 {
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String codeId;
|
private String codeId;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 数量
|
// * 数量
|
||||||
*/
|
// */
|
||||||
@NotNull
|
// @NotNull
|
||||||
@Positive(message = "数量必须大于0")
|
// @Positive(message = "数量必须大于0")
|
||||||
private BigDecimal num;
|
// private BigDecimal num;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@
|
||||||
INNER JOIN wms_in_produce_order_surplus ipos ON ipost.order_id=ipos."id"
|
INNER JOIN wms_in_produce_order_surplus ipos ON ipost.order_id=ipos."id"
|
||||||
<where>
|
<where>
|
||||||
<if test="request.startDate!=null">
|
<if test="request.startDate!=null">
|
||||||
and ipost.create_time >= #{request.startDate}
|
and ipos.create_time >= #{request.startDate}
|
||||||
</if>
|
</if>
|
||||||
<if test="request.endDate!=null">
|
<if test="request.endDate!=null">
|
||||||
and ipost.create_time <= #{request.endDate}
|
and ipos.create_time <= #{request.endDate}
|
||||||
</if>
|
</if>
|
||||||
<if test="request.no != null and request.no!=''">
|
<if test="request.no != null and request.no!=''">
|
||||||
AND ipost."no" ilike CONCAT('%',#{request.no},'%')
|
AND ipost."no" ilike CONCAT('%',#{request.no},'%')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue