feat(inventory): 重构入库功能并优化物料扫描处理

- 移除 NoUtil 和 MaterialQRCodeContentDTO 依赖
- 重命名 InCostcenterBackSubmitItemQO 等类名,统一命名规范
- 添加新的库存入库相关 QO 类 (InventoryInQO, InventoryInItemQO, InventoryInItemQRCodeQO)
- 修复 WmsWarehouseService 注入和使用问题
- 更新提交接口参数验证和逻辑处理
- 优化二维码集合处理和物料扫描记录创建
- 添加储位禁用状态判断和设置功能
- 重构物料扫描记录分组逻辑,新增 getKey9 方法支持更精确的分组
- 统一更新多个控制器中的相关实现以保持一致性
- 修复批量更新二维码主数据的方法调用
This commit is contained in:
曹鹏飞 2026-03-19 09:24:23 +08:00
parent e8116fe2dd
commit fa4c26dc10
20 changed files with 196 additions and 92 deletions

View File

@ -9,7 +9,6 @@ import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.NoUtil;
import com.nflg.wms.admin.util.PdfGeneratorUtil;
import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil;
@ -20,7 +19,6 @@ import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
import com.nflg.wms.common.pojo.dto.C_MaterialReturnDTO;
import com.nflg.wms.common.pojo.dto.DepartmentMaterialReturnSlipDTO;
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.UserUtil;
@ -81,8 +79,8 @@ public class InCostCenterBackController extends BaseController {
@Resource
private IWmsQrCodeMasterService qrCodeMasterService;
// @Resource
// private IWmsWarehouseService
@Resource
private IWmsWarehouseService warehouseService;
/**
* 查询SAP领料订单数据
@ -186,7 +184,7 @@ public class InCostCenterBackController extends BaseController {
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
}
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
// vo.setIsDisableLocation();
vo.setIsDisableLocation(warehouseService.isEnableLocation(order.getWerks(), order.getLgort()));
return vo;
}).toList()
)
@ -198,80 +196,83 @@ public class InCostCenterBackController extends BaseController {
*/
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody InCostcenterBackSubmitQO request) {
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery().eq(WmsInCostcenterBack::getNo, request.getNo()).one();
public ApiResult<Void> submit(@Valid @RequestBody InventoryInQO request) {//InCostCenterBackSubmitQO
WmsInCostcenterBack order = inCostcenterBackService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
.setId(IdUtil.getSnowflakeNextId())
.setNo(serialNumberControllerService.generateSerialNumber(11))
.setOrderId(order.getId())
.setLgort(request.getLgort())
.setLgort(request.getWarehouseNo())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
List<WmsInCostcenterBackItem> datas = inCostcenterBackItemService.getList(order.getId());
List<InMaterialScanRecord> records = new ArrayList<>();
List<WmsInCostcenterBackTicketItem> ticketItems = new ArrayList<>();
Set<String> allQrCodes = new HashSet<>();
request.getItems().forEach(it -> {
it.getItems().forEach(item -> {
allQrCodes.addAll(item.getQrCodes());
});
});
Set<String> allQrCodes = request.getItems().stream()
.map(InventoryInItemQO::getQrCodes)
.flatMap(Collection::stream)
.map(InventoryInItemQRCodeQO::getQrCode)
.collect(Collectors.toSet());
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
.ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
.list();
request.getItems().forEach(it -> {
WmsInCostcenterBackItem item = datas.stream().filter(d -> Objects.equals(it.getOrderItemId(), d.getId())).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效");
WmsInCostcenterBackItem item = datas.stream()
.filter(d -> Objects.equals(it.getItemId(), d.getId()))
.findFirst()
.orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效:" + it.getItemId());
WmsInCostcenterBackTicketItem ti = new WmsInCostcenterBackTicketItem()
.setId(IdUtil.getSnowflakeNextId())
.setTicketId(ticket.getId())
.setOrderItemId(item.getId())
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
.setLgpbe(StrUtil.join(",", it.getQrCodes().stream().map(InventoryInItemQRCodeQO::getBinNo).collect(Collectors.toSet())))
.setNum(BigDecimal.ZERO);
ticketItems.add(ti);
it.getItems().forEach(iit -> {
iit.getQrCodes().forEach(qrCode -> {
WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(qrCode);
String materialNo = qrCodeContent.getMaterialCode();
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
.throwMessage("订单项与物料不符");
item.setLeft(item.getLeft().subtract(qrCodeContent.getQuantity()));
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
ti.setNum(ti.getNum().add(qrCodeContent.getQuantity()));
records.add(new InMaterialScanRecord()
.setSource(2)
.setSourceId(order.getId())
.setSourceItemId(item.getId())
.setTicketItemId(ti.getId())
.setMaterialNo(materialNo)
.setContent(qrCode)
.setBatchNo(qrCodeContent.getBatchNo())
.setSerialNo(qrCodeContent.getSerialNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setBinNo(iit.getBinNo())
.setUniqNo(qrCodeContent.getBarcodeCode())
.setNum(qrCodeContent.getQuantity())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
.filter(q -> StrUtil.equals(q.getBarcodeCode(), qrCode))
.findFirst()
.orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("二维码" + qrCode + "无效");
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
qrCodeMaster.setFactoryCode(order.getWerks());
qrCodeMaster.setStorageLocation(request.getLgort());
qrCodeMaster.setBinLocation(iit.getBinNo());
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
});
it.getQrCodes().forEach(iit -> {
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
.filter(q -> StrUtil.equals(q.getBarcodeCode(), iit.getQrCode()))
.findFirst()
.orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效的二维码:"+iit.getQrCode());
VUtil.trueThrowBusinessError(Objects.equals(qrCodeMaster.getProcessStage(),BarCodeProcessStage.InBound.getState()))
.throwMessage("二维码" + iit.getQrCode() + "已入库");
String materialNo = qrCodeMaster.getMaterialCode();
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
.throwMessage("订单项与物料不符");
VUtil.trueThrowBusinessError(iit.getNum().compareTo(qrCodeMaster.getQuantity())>0)
.throwMessage("二维码" + iit.getQrCode() + "数量"+iit.getNum()+"不能大于实际数量"+qrCodeMaster.getQuantity());
item.setLeft(item.getLeft().subtract(iit.getNum()));
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
ti.setNum(ti.getNum().add(iit.getNum()));
qrCodeMaster.setFactoryCode(order.getWerks());
qrCodeMaster.setStorageLocation(request.getWarehouseNo());
qrCodeMaster.setBinLocation(iit.getBinNo());
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new InMaterialScanRecord()
.setSource(2)
.setSourceId(order.getId())
.setSourceItemId(item.getId())
.setTicketItemId(ti.getId())
.setMaterialNo(materialNo)
.setContent(iit.getQrCode())
.setBatchNo(qrCodeMaster.getBatchNo())
.setSerialNo(qrCodeMaster.getSerialNo())
.setFactoryNo(qrCodeMaster.getFactoryCode())
.setWarehouseNo(qrCodeMaster.getStorageLocation())
.setBinNo(qrCodeMaster.getBinLocation())
.setUniqNo(qrCodeMaster.getBarcodeCode())
.setNum(iit.getNum())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
});
});
inCostcenterBackItemService.updateBatchById(datas);
@ -284,9 +285,9 @@ public class InCostCenterBackController extends BaseController {
.set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2)
.eq(WmsInCostcenterBack::getId, order.getId())
.update();
qrCodeMasterService.updateBatchById(qrCodeMasters);
qrCodeMasterService.updateBarCode(qrCodeMasters);
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
.values()
.stream()
.map(list -> new InventoryInDTO()
@ -295,6 +296,7 @@ public class InCostCenterBackController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(order.getLgort())
.setBinLocation(list.get(0).getBinNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
@ -307,7 +309,7 @@ public class InCostCenterBackController extends BaseController {
.setResbRspos(item.getRspos())
.setResbMatnr(item.getMatnr())
.setMaktx(item.getMaktx())
.setResbLgort(request.getLgort())
.setResbLgort(request.getWarehouseNo())
.setResbWerks(order.getWerks())
.setResbMeins(item.getMeins())
.setErfmg(its.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))

View File

@ -294,7 +294,7 @@ public class InProduceBackController extends BaseController {
qrCodeMasterService.updateBatchById(qrCodeMasters);
inProduceBackTicketItemService.saveBatch(ticketItems);
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
.values()
.stream()
.map(list -> new InventoryInDTO()
@ -303,6 +303,7 @@ public class InProduceBackController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(order.getDwerk())
.setWarehouseNo(order.getLgort2())
.setBinLocation(list.get(0).getBinNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -372,6 +372,7 @@ public class InProduceOrderController extends BaseController {
child.setMustScan(false);
}
child.setBinNo(binService.getBinNo(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
child.setIsDisableLocation(warehouseService.isEnableLocation(child.getFactoryNo(), child.getWarehouseNo()));
});
datas.addAll(children);
});
@ -379,6 +380,7 @@ public class InProduceOrderController extends BaseController {
} else {
list.forEach(it -> {
it.setBinNo(binService.getBinNo(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
it.setIsDisableLocation(warehouseService.isEnableLocation(it.getFactoryNo(), it.getWarehouseNo()));
});
return ApiResult.success(list);
}
@ -551,6 +553,7 @@ public class InProduceOrderController extends BaseController {
.setWarehouseNo(it.getWarehouseNo())
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSernr())
.setBinLocation(it.getBinNo())
).toList()
);
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {

View File

@ -17,7 +17,6 @@ import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.dto.QrCodeMasterPrintDTO;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
@ -84,6 +83,9 @@ public class InProduceOrderSurplusController extends BaseController {
@Resource
private IWmsQrCodeMasterService qrCodeMasterService;
@Resource
private IWmsWarehouseService warehouseService;
/**
* 从SAP查询订单信息
*/
@ -210,7 +212,9 @@ public class InProduceOrderSurplusController extends BaseController {
.setMaktx2(item.getMaktx2())
.setMatnr(item.getMatnr())
.setMeins(item.getMeins())
.setNum(item.getLeftNum()))
.setNum(item.getLeftNum())
.setIsDisableLocation(warehouseService.isEnableLocation(order.getDwerk(), order.getLgort2()))
)
.toList()
)
);
@ -221,7 +225,7 @@ public class InProduceOrderSurplusController extends BaseController {
*/
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody InCostcenterBackSubmitQO request) {
public ApiResult<Void> submit(@Valid @RequestBody InCostCenterBackSubmitQO request) {
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery().eq(WmsInProduceOrderSurplus::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
@ -241,7 +245,7 @@ public class InProduceOrderSurplusController extends BaseController {
.setId(IdUtil.getSnowflakeNextId())
.setTicketId(ticket.getId())
.setOrderItemId(item.getId())
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostCenterBackSubmitItemQRQO::getBinNo).toList()))
.setNum(BigDecimal.ZERO);
ticketItems.add(ti);
it.getItems().forEach(iit -> {
@ -287,7 +291,7 @@ public class InProduceOrderSurplusController extends BaseController {
.eq(WmsInProduceOrderSurplus::getId, order.getId())
.update();
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
.values()
.stream()
.map(list -> new InventoryInDTO()
@ -297,6 +301,7 @@ public class InProduceOrderSurplusController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(order.getDwerk())
.setWarehouseNo(ticket.getLgort())
.setBinLocation(list.get(0).getBinNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -472,7 +472,7 @@ public class NormalPGIController extends BaseController {
.setLastScanTime(LocalDateTime.now());
qrCodeMasters.add(wmsQrCodeMaster);
if (CollectionUtil.isNotEmpty(qo.getItems())) {
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
.stream()
.filter(iit -> iit.getQrCodes().contains(code.getCodeId()))
.findFirst()
@ -1256,7 +1256,7 @@ public class NormalPGIController extends BaseController {
.setItems(
new ArrayList<>() {
{
add(new InCostcenterBackSubmitItemQRQO()
add(new InCostCenterBackSubmitItemQRQO()
.setBinNo(item.getStorageLocation())
.setQrCodes(
qrCodeMasters.stream()

View File

@ -516,7 +516,7 @@ public class TransferCompanyController extends BaseController {
List<InMaterialScanRecord> records = new ArrayList<>();
List<WmsQrCodeMaster> qrCodeMasters = new ArrayList<>();
records1.forEach(record -> {
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
.stream()
.map(InSubmitItemQO::getItems)
.flatMap(Collection::stream)
@ -561,7 +561,7 @@ public class TransferCompanyController extends BaseController {
.setBinNos1(
StrUtil.join(",", q.getItems()
.stream()
.map(InCostcenterBackSubmitItemQRQO::getQrCodes)
.map(InCostCenterBackSubmitItemQRQO::getQrCodes)
.flatMap(Collection::stream)
.toList()
)
@ -571,7 +571,7 @@ public class TransferCompanyController extends BaseController {
transferCompanyTicketItemService.updateBatchById(ticketItems);
}
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
.values()
.stream()
.map(list -> new InventoryInDTO()
@ -580,6 +580,7 @@ public class TransferCompanyController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(list.get(0).getBinNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -11,7 +11,6 @@ import com.nflg.wms.admin.repository.InventoryForOutRepository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.NoUtil;
import com.nflg.wms.admin.util.PdfGeneratorUtil;
import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil;
@ -509,7 +508,14 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(record.getSerialNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setBinNo("")
.setBinNo(qo.getItems().stream()
.map(InSubmitItemQO::getItems)
.flatMap(Collection::stream)
.filter(q -> q.getQrCodes().contains(record.getUniqNo()))
.findFirst()
.map(InCostCenterBackSubmitItemQRQO::getBinNo)
.orElse("")
)
.setUniqNo(record.getUniqNo())
.setRspos(record.getRspos())
.setNum(record.getNum())
@ -531,7 +537,7 @@ public class TransferFactoryController extends BaseController {
// .setBinNos1(it.getBinNos())
// ).toList());
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
.values()
.stream()
.map(list -> new InventoryInDTO()
@ -540,6 +546,7 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(list.get(0).getBinNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -170,4 +170,11 @@ public class InMaterialScanRecord {
public String getKey8() {
return batchNo + "|" + factoryNo + "|" + unit + "|" + warehouseNo;
}
@Transient
private String key9;
public String getKey9() {
return this.materialNo + "|" + this.batchNo + "|" + this.getSerialNo() + "|" + this.factoryNo + "|" + this.warehouseNo + "|" + this.binNo;
}
}

View File

@ -1,7 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -9,7 +8,7 @@ import lombok.Data;
import java.util.List;
@Data
public class InCostcenterBackSubmitItemQO {
public class InCostCenterBackSubmitItemQO {
/**
* 订单项ID
@ -22,5 +21,5 @@ public class InCostcenterBackSubmitItemQO {
*/
@Valid
@NotEmpty
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -8,7 +8,7 @@ import java.util.List;
@Data
@Accessors(chain = true)
public class InCostcenterBackSubmitItemQRQO {
public class InCostCenterBackSubmitItemQRQO {
/**
* 实际入库储位编号列表

View File

@ -8,7 +8,7 @@ import lombok.Data;
import java.util.List;
@Data
public class InCostcenterBackSubmitQO {
public class InCostCenterBackSubmitQO {
@NotBlank
private String no;
@ -24,5 +24,5 @@ public class InCostcenterBackSubmitQO {
*/
@Valid
@NotEmpty
private List<InCostcenterBackSubmitItemQO> items;
private List<InCostCenterBackSubmitItemQO> items;
}

View File

@ -24,5 +24,5 @@ public class InProduceBackSubmitQO {
*/
@Valid
@NotEmpty
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -2,7 +2,6 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.List;
@ -26,5 +25,5 @@ public class InProduceOrderReceiveMaterialQO {
* 二维码列表
*/
@Valid
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -1,7 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -20,5 +19,5 @@ public class InSubmitItemQO {
* 二维码列表
*/
@Valid
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -0,0 +1,20 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class InventoryInItemQO {
/**
* 项id
*/
@NotNull
private Long itemId;
@Valid
private List<InventoryInItemQRCodeQO> qrCodes;
}

View File

@ -0,0 +1,28 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class InventoryInItemQRCodeQO {
/**
* 二维码唯一码
*/
@NotBlank
private String qrCode;
/**
* 数量
*/
@NotNull
private BigDecimal num;
/**
* 储位编号
*/
private String binNo;
}

View File

@ -0,0 +1,32 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class InventoryInQO {
/**
* 单据id
*/
@NotNull
private Long id;
/**
* 仓库编号
*/
@NotBlank
private String warehouseNo;
/**
* 订单项列表
*/
@Valid
@NotEmpty
private List<InventoryInItemQO> items;
}

View File

@ -1,11 +1,9 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.List;
@Data
@ -39,5 +37,5 @@ public class PoReceiveTaskItemConfirmQO {
* 二维码列表
*/
@Valid
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -1,12 +1,9 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.List;
@Data
@ -56,5 +53,5 @@ public class QCReceiveTaskConfirmQO {
* 二维码列表
*/
@Valid
private List<InCostcenterBackSubmitItemQRQO> items;
private List<InCostCenterBackSubmitItemQRQO> items;
}

View File

@ -77,4 +77,10 @@ public class InProduceOrderItemVO {
* 是否必须扫码如果为false的话可以不扫码
*/
private boolean mustScan = true;
/**
* 是否启用储位管理true为启用,false为不启用
*/
@JsonProperty("isDisableLocation")
private Boolean isDisableLocation = true;
}