feat(inventory): 重构入库功能并优化物料扫描处理
- 移除 NoUtil 和 MaterialQRCodeContentDTO 依赖 - 重命名 InCostcenterBackSubmitItemQO 等类名,统一命名规范 - 添加新的库存入库相关 QO 类 (InventoryInQO, InventoryInItemQO, InventoryInItemQRCodeQO) - 修复 WmsWarehouseService 注入和使用问题 - 更新提交接口参数验证和逻辑处理 - 优化二维码集合处理和物料扫描记录创建 - 添加储位禁用状态判断和设置功能 - 重构物料扫描记录分组逻辑,新增 getKey9 方法支持更精确的分组 - 统一更新多个控制器中的相关实现以保持一致性 - 修复批量更新二维码主数据的方法调用
This commit is contained in:
parent
e8116fe2dd
commit
fa4c26dc10
|
|
@ -9,7 +9,6 @@ import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
|
||||||
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
|
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
|
||||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||||
import com.nflg.wms.admin.service.SapService;
|
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.PdfGeneratorUtil;
|
||||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
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.C_MaterialReturnDTO;
|
||||||
import com.nflg.wms.common.pojo.dto.DepartmentMaterialReturnSlipDTO;
|
import com.nflg.wms.common.pojo.dto.DepartmentMaterialReturnSlipDTO;
|
||||||
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
|
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.qo.*;
|
||||||
import com.nflg.wms.common.pojo.vo.*;
|
import com.nflg.wms.common.pojo.vo.*;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
|
|
@ -81,8 +79,8 @@ public class InCostCenterBackController extends BaseController {
|
||||||
@Resource
|
@Resource
|
||||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||||
|
|
||||||
// @Resource
|
@Resource
|
||||||
// private IWmsWarehouseService
|
private IWmsWarehouseService warehouseService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询SAP领料订单数据
|
* 查询SAP领料订单数据
|
||||||
|
|
@ -186,7 +184,7 @@ public class InCostCenterBackController extends BaseController {
|
||||||
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
||||||
}
|
}
|
||||||
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
||||||
// vo.setIsDisableLocation();
|
vo.setIsDisableLocation(warehouseService.isEnableLocation(order.getWerks(), order.getLgort()));
|
||||||
return vo;
|
return vo;
|
||||||
}).toList()
|
}).toList()
|
||||||
)
|
)
|
||||||
|
|
@ -198,80 +196,83 @@ public class InCostCenterBackController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
@PostMapping("pda/submit")
|
@PostMapping("pda/submit")
|
||||||
public ApiResult<Void> submit(@Valid @RequestBody InCostcenterBackSubmitQO request) {
|
public ApiResult<Void> submit(@Valid @RequestBody InventoryInQO request) {//InCostCenterBackSubmitQO
|
||||||
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery().eq(WmsInCostcenterBack::getNo, request.getNo()).one();
|
WmsInCostcenterBack order = inCostcenterBackService.getById(request.getId());
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||||
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
|
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
|
||||||
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
|
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
.setNo(serialNumberControllerService.generateSerialNumber(11))
|
.setNo(serialNumberControllerService.generateSerialNumber(11))
|
||||||
.setOrderId(order.getId())
|
.setOrderId(order.getId())
|
||||||
.setLgort(request.getLgort())
|
.setLgort(request.getWarehouseNo())
|
||||||
.setCreateBy(UserUtil.getUserName())
|
.setCreateBy(UserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
List<WmsInCostcenterBackItem> datas = inCostcenterBackItemService.getList(order.getId());
|
List<WmsInCostcenterBackItem> datas = inCostcenterBackItemService.getList(order.getId());
|
||||||
List<InMaterialScanRecord> records = new ArrayList<>();
|
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||||
List<WmsInCostcenterBackTicketItem> ticketItems = new ArrayList<>();
|
List<WmsInCostcenterBackTicketItem> ticketItems = new ArrayList<>();
|
||||||
Set<String> allQrCodes = new HashSet<>();
|
Set<String> allQrCodes = request.getItems().stream()
|
||||||
request.getItems().forEach(it -> {
|
.map(InventoryInItemQO::getQrCodes)
|
||||||
it.getItems().forEach(item -> {
|
.flatMap(Collection::stream)
|
||||||
allQrCodes.addAll(item.getQrCodes());
|
.map(InventoryInItemQRCodeQO::getQrCode)
|
||||||
});
|
.collect(Collectors.toSet());
|
||||||
});
|
|
||||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
|
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
|
||||||
.ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
.ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||||
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
||||||
.list();
|
.list();
|
||||||
request.getItems().forEach(it -> {
|
request.getItems().forEach(it -> {
|
||||||
WmsInCostcenterBackItem item = datas.stream().filter(d -> Objects.equals(it.getOrderItemId(), d.getId())).findFirst().orElse(null);
|
WmsInCostcenterBackItem item = datas.stream()
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效");
|
.filter(d -> Objects.equals(it.getItemId(), d.getId()))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效:" + it.getItemId());
|
||||||
WmsInCostcenterBackTicketItem ti = new WmsInCostcenterBackTicketItem()
|
WmsInCostcenterBackTicketItem ti = new WmsInCostcenterBackTicketItem()
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
.setTicketId(ticket.getId())
|
.setTicketId(ticket.getId())
|
||||||
.setOrderItemId(item.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);
|
.setNum(BigDecimal.ZERO);
|
||||||
ticketItems.add(ti);
|
ticketItems.add(ti);
|
||||||
it.getItems().forEach(iit -> {
|
it.getQrCodes().forEach(iit -> {
|
||||||
iit.getQrCodes().forEach(qrCode -> {
|
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||||
WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(qrCode);
|
.filter(q -> StrUtil.equals(q.getBarcodeCode(), iit.getQrCode()))
|
||||||
String materialNo = qrCodeContent.getMaterialCode();
|
.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()))
|
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||||
.throwMessage("订单项与物料不符");
|
.throwMessage("订单项与物料不符");
|
||||||
item.setLeft(item.getLeft().subtract(qrCodeContent.getQuantity()));
|
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)
|
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
|
||||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||||
ti.setNum(ti.getNum().add(qrCodeContent.getQuantity()));
|
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()
|
records.add(new InMaterialScanRecord()
|
||||||
.setSource(2)
|
.setSource(2)
|
||||||
.setSourceId(order.getId())
|
.setSourceId(order.getId())
|
||||||
.setSourceItemId(item.getId())
|
.setSourceItemId(item.getId())
|
||||||
.setTicketItemId(ti.getId())
|
.setTicketItemId(ti.getId())
|
||||||
.setMaterialNo(materialNo)
|
.setMaterialNo(materialNo)
|
||||||
.setContent(qrCode)
|
.setContent(iit.getQrCode())
|
||||||
.setBatchNo(qrCodeContent.getBatchNo())
|
.setBatchNo(qrCodeMaster.getBatchNo())
|
||||||
.setSerialNo(qrCodeContent.getSerialNo())
|
.setSerialNo(qrCodeMaster.getSerialNo())
|
||||||
.setFactoryNo(order.getWerks())
|
.setFactoryNo(qrCodeMaster.getFactoryCode())
|
||||||
.setWarehouseNo(request.getLgort())
|
.setWarehouseNo(qrCodeMaster.getStorageLocation())
|
||||||
.setBinNo(iit.getBinNo())
|
.setBinNo(qrCodeMaster.getBinLocation())
|
||||||
.setUniqNo(qrCodeContent.getBarcodeCode())
|
.setUniqNo(qrCodeMaster.getBarcodeCode())
|
||||||
.setNum(qrCodeContent.getQuantity())
|
.setNum(iit.getNum())
|
||||||
.setCreateBy(UserUtil.getUserName())
|
.setCreateBy(UserUtil.getUserName())
|
||||||
.setCreateTime(Instant.now())
|
.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());
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
inCostcenterBackItemService.updateBatchById(datas);
|
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)
|
.set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2)
|
||||||
.eq(WmsInCostcenterBack::getId, order.getId())
|
.eq(WmsInCostcenterBack::getId, order.getId())
|
||||||
.update();
|
.update();
|
||||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||||
inventoryService.in(records.stream()
|
inventoryService.in(records.stream()
|
||||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(list -> new InventoryInDTO()
|
.map(list -> new InventoryInDTO()
|
||||||
|
|
@ -295,6 +296,7 @@ public class InCostCenterBackController extends BaseController {
|
||||||
.setSerialNo(list.get(0).getSerialNo())
|
.setSerialNo(list.get(0).getSerialNo())
|
||||||
.setFactoryNo(order.getWerks())
|
.setFactoryNo(order.getWerks())
|
||||||
.setWarehouseNo(order.getLgort())
|
.setWarehouseNo(order.getLgort())
|
||||||
|
.setBinLocation(list.get(0).getBinNo())
|
||||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
|
|
@ -307,7 +309,7 @@ public class InCostCenterBackController extends BaseController {
|
||||||
.setResbRspos(item.getRspos())
|
.setResbRspos(item.getRspos())
|
||||||
.setResbMatnr(item.getMatnr())
|
.setResbMatnr(item.getMatnr())
|
||||||
.setMaktx(item.getMaktx())
|
.setMaktx(item.getMaktx())
|
||||||
.setResbLgort(request.getLgort())
|
.setResbLgort(request.getWarehouseNo())
|
||||||
.setResbWerks(order.getWerks())
|
.setResbWerks(order.getWerks())
|
||||||
.setResbMeins(item.getMeins())
|
.setResbMeins(item.getMeins())
|
||||||
.setErfmg(its.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setErfmg(its.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ public class InProduceBackController extends BaseController {
|
||||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||||
inProduceBackTicketItemService.saveBatch(ticketItems);
|
inProduceBackTicketItemService.saveBatch(ticketItems);
|
||||||
inventoryService.in(records.stream()
|
inventoryService.in(records.stream()
|
||||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(list -> new InventoryInDTO()
|
.map(list -> new InventoryInDTO()
|
||||||
|
|
@ -303,6 +303,7 @@ public class InProduceBackController extends BaseController {
|
||||||
.setSerialNo(list.get(0).getSerialNo())
|
.setSerialNo(list.get(0).getSerialNo())
|
||||||
.setFactoryNo(order.getDwerk())
|
.setFactoryNo(order.getDwerk())
|
||||||
.setWarehouseNo(order.getLgort2())
|
.setWarehouseNo(order.getLgort2())
|
||||||
|
.setBinLocation(list.get(0).getBinNo())
|
||||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -372,6 +372,7 @@ public class InProduceOrderController extends BaseController {
|
||||||
child.setMustScan(false);
|
child.setMustScan(false);
|
||||||
}
|
}
|
||||||
child.setBinNo(binService.getBinNo(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
|
child.setBinNo(binService.getBinNo(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
|
||||||
|
child.setIsDisableLocation(warehouseService.isEnableLocation(child.getFactoryNo(), child.getWarehouseNo()));
|
||||||
});
|
});
|
||||||
datas.addAll(children);
|
datas.addAll(children);
|
||||||
});
|
});
|
||||||
|
|
@ -379,6 +380,7 @@ public class InProduceOrderController extends BaseController {
|
||||||
} else {
|
} else {
|
||||||
list.forEach(it -> {
|
list.forEach(it -> {
|
||||||
it.setBinNo(binService.getBinNo(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
|
it.setBinNo(binService.getBinNo(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
|
||||||
|
it.setIsDisableLocation(warehouseService.isEnableLocation(it.getFactoryNo(), it.getWarehouseNo()));
|
||||||
});
|
});
|
||||||
return ApiResult.success(list);
|
return ApiResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
@ -551,6 +553,7 @@ public class InProduceOrderController extends BaseController {
|
||||||
.setWarehouseNo(it.getWarehouseNo())
|
.setWarehouseNo(it.getWarehouseNo())
|
||||||
.setBatchNo(it.getBatchNo())
|
.setBatchNo(it.getBatchNo())
|
||||||
.setSerialNo(it.getSernr())
|
.setSerialNo(it.getSernr())
|
||||||
|
.setBinLocation(it.getBinNo())
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {
|
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import com.nflg.wms.common.pojo.ApiResult;
|
||||||
import com.nflg.wms.common.pojo.PageData;
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
||||||
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
|
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.dto.QrCodeMasterPrintDTO;
|
||||||
import com.nflg.wms.common.pojo.qo.*;
|
import com.nflg.wms.common.pojo.qo.*;
|
||||||
import com.nflg.wms.common.pojo.vo.*;
|
import com.nflg.wms.common.pojo.vo.*;
|
||||||
|
|
@ -84,6 +83,9 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
@Resource
|
@Resource
|
||||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IWmsWarehouseService warehouseService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从SAP查询订单信息
|
* 从SAP查询订单信息
|
||||||
*/
|
*/
|
||||||
|
|
@ -210,7 +212,9 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
.setMaktx2(item.getMaktx2())
|
.setMaktx2(item.getMaktx2())
|
||||||
.setMatnr(item.getMatnr())
|
.setMatnr(item.getMatnr())
|
||||||
.setMeins(item.getMeins())
|
.setMeins(item.getMeins())
|
||||||
.setNum(item.getLeftNum()))
|
.setNum(item.getLeftNum())
|
||||||
|
.setIsDisableLocation(warehouseService.isEnableLocation(order.getDwerk(), order.getLgort2()))
|
||||||
|
)
|
||||||
.toList()
|
.toList()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -221,7 +225,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
@PostMapping("pda/submit")
|
@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();
|
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery().eq(WmsInProduceOrderSurplus::getNo, request.getNo()).one();
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||||
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
|
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
|
||||||
|
|
@ -241,7 +245,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
.setTicketId(ticket.getId())
|
.setTicketId(ticket.getId())
|
||||||
.setOrderItemId(item.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);
|
.setNum(BigDecimal.ZERO);
|
||||||
ticketItems.add(ti);
|
ticketItems.add(ti);
|
||||||
it.getItems().forEach(iit -> {
|
it.getItems().forEach(iit -> {
|
||||||
|
|
@ -287,7 +291,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
.eq(WmsInProduceOrderSurplus::getId, order.getId())
|
.eq(WmsInProduceOrderSurplus::getId, order.getId())
|
||||||
.update();
|
.update();
|
||||||
inventoryService.in(records.stream()
|
inventoryService.in(records.stream()
|
||||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(list -> new InventoryInDTO()
|
.map(list -> new InventoryInDTO()
|
||||||
|
|
@ -297,6 +301,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
.setSerialNo(list.get(0).getSerialNo())
|
.setSerialNo(list.get(0).getSerialNo())
|
||||||
.setFactoryNo(order.getDwerk())
|
.setFactoryNo(order.getDwerk())
|
||||||
.setWarehouseNo(ticket.getLgort())
|
.setWarehouseNo(ticket.getLgort())
|
||||||
|
.setBinLocation(list.get(0).getBinNo())
|
||||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -472,7 +472,7 @@ public class NormalPGIController extends BaseController {
|
||||||
.setLastScanTime(LocalDateTime.now());
|
.setLastScanTime(LocalDateTime.now());
|
||||||
qrCodeMasters.add(wmsQrCodeMaster);
|
qrCodeMasters.add(wmsQrCodeMaster);
|
||||||
if (CollectionUtil.isNotEmpty(qo.getItems())) {
|
if (CollectionUtil.isNotEmpty(qo.getItems())) {
|
||||||
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
|
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(iit -> iit.getQrCodes().contains(code.getCodeId()))
|
.filter(iit -> iit.getQrCodes().contains(code.getCodeId()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
|
|
@ -1256,7 +1256,7 @@ public class NormalPGIController extends BaseController {
|
||||||
.setItems(
|
.setItems(
|
||||||
new ArrayList<>() {
|
new ArrayList<>() {
|
||||||
{
|
{
|
||||||
add(new InCostcenterBackSubmitItemQRQO()
|
add(new InCostCenterBackSubmitItemQRQO()
|
||||||
.setBinNo(item.getStorageLocation())
|
.setBinNo(item.getStorageLocation())
|
||||||
.setQrCodes(
|
.setQrCodes(
|
||||||
qrCodeMasters.stream()
|
qrCodeMasters.stream()
|
||||||
|
|
|
||||||
|
|
@ -516,7 +516,7 @@ public class TransferCompanyController extends BaseController {
|
||||||
List<InMaterialScanRecord> records = new ArrayList<>();
|
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||||
List<WmsQrCodeMaster> qrCodeMasters = new ArrayList<>();
|
List<WmsQrCodeMaster> qrCodeMasters = new ArrayList<>();
|
||||||
records1.forEach(record -> {
|
records1.forEach(record -> {
|
||||||
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
|
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||||
.stream()
|
.stream()
|
||||||
.map(InSubmitItemQO::getItems)
|
.map(InSubmitItemQO::getItems)
|
||||||
.flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
|
|
@ -561,7 +561,7 @@ public class TransferCompanyController extends BaseController {
|
||||||
.setBinNos1(
|
.setBinNos1(
|
||||||
StrUtil.join(",", q.getItems()
|
StrUtil.join(",", q.getItems()
|
||||||
.stream()
|
.stream()
|
||||||
.map(InCostcenterBackSubmitItemQRQO::getQrCodes)
|
.map(InCostCenterBackSubmitItemQRQO::getQrCodes)
|
||||||
.flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
.toList()
|
.toList()
|
||||||
)
|
)
|
||||||
|
|
@ -571,7 +571,7 @@ public class TransferCompanyController extends BaseController {
|
||||||
transferCompanyTicketItemService.updateBatchById(ticketItems);
|
transferCompanyTicketItemService.updateBatchById(ticketItems);
|
||||||
}
|
}
|
||||||
inventoryService.in(records.stream()
|
inventoryService.in(records.stream()
|
||||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(list -> new InventoryInDTO()
|
.map(list -> new InventoryInDTO()
|
||||||
|
|
@ -580,6 +580,7 @@ public class TransferCompanyController extends BaseController {
|
||||||
.setSerialNo(list.get(0).getSerialNo())
|
.setSerialNo(list.get(0).getSerialNo())
|
||||||
.setFactoryNo(list.get(0).getFactoryNo())
|
.setFactoryNo(list.get(0).getFactoryNo())
|
||||||
.setWarehouseNo(list.get(0).getWarehouseNo())
|
.setWarehouseNo(list.get(0).getWarehouseNo())
|
||||||
|
.setBinLocation(list.get(0).getBinNo())
|
||||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import com.nflg.wms.admin.repository.InventoryForOutRepository;
|
||||||
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
||||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||||
import com.nflg.wms.admin.service.SapService;
|
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.PdfGeneratorUtil;
|
||||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||||
|
|
@ -509,7 +508,14 @@ public class TransferFactoryController extends BaseController {
|
||||||
.setSerialNo(record.getSerialNo())
|
.setSerialNo(record.getSerialNo())
|
||||||
.setFactoryNo(ticket.getWerks())
|
.setFactoryNo(ticket.getWerks())
|
||||||
.setWarehouseNo(qo.getLgort1())
|
.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())
|
.setUniqNo(record.getUniqNo())
|
||||||
.setRspos(record.getRspos())
|
.setRspos(record.getRspos())
|
||||||
.setNum(record.getNum())
|
.setNum(record.getNum())
|
||||||
|
|
@ -531,7 +537,7 @@ public class TransferFactoryController extends BaseController {
|
||||||
// .setBinNos1(it.getBinNos())
|
// .setBinNos1(it.getBinNos())
|
||||||
// ).toList());
|
// ).toList());
|
||||||
inventoryService.in(records.stream()
|
inventoryService.in(records.stream()
|
||||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(list -> new InventoryInDTO()
|
.map(list -> new InventoryInDTO()
|
||||||
|
|
@ -540,6 +546,7 @@ public class TransferFactoryController extends BaseController {
|
||||||
.setSerialNo(list.get(0).getSerialNo())
|
.setSerialNo(list.get(0).getSerialNo())
|
||||||
.setFactoryNo(list.get(0).getFactoryNo())
|
.setFactoryNo(list.get(0).getFactoryNo())
|
||||||
.setWarehouseNo(list.get(0).getWarehouseNo())
|
.setWarehouseNo(list.get(0).getWarehouseNo())
|
||||||
|
.setBinLocation(list.get(0).getBinNo())
|
||||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||||
).toList()
|
).toList()
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -170,4 +170,11 @@ public class InMaterialScanRecord {
|
||||||
public String getKey8() {
|
public String getKey8() {
|
||||||
return batchNo + "|" + factoryNo + "|" + unit + "|" + warehouseNo;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -9,7 +8,7 @@ import lombok.Data;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class InCostcenterBackSubmitItemQO {
|
public class InCostCenterBackSubmitItemQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单项ID
|
* 订单项ID
|
||||||
|
|
@ -22,5 +21,5 @@ public class InCostcenterBackSubmitItemQO {
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
@ -8,7 +8,7 @@ import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class InCostcenterBackSubmitItemQRQO {
|
public class InCostCenterBackSubmitItemQRQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实际入库储位编号列表
|
* 实际入库储位编号列表
|
||||||
|
|
@ -8,7 +8,7 @@ import lombok.Data;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class InCostcenterBackSubmitQO {
|
public class InCostCenterBackSubmitQO {
|
||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String no;
|
private String no;
|
||||||
|
|
@ -24,5 +24,5 @@ public class InCostcenterBackSubmitQO {
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private List<InCostcenterBackSubmitItemQO> items;
|
private List<InCostCenterBackSubmitItemQO> items;
|
||||||
}
|
}
|
||||||
|
|
@ -24,5 +24,5 @@ public class InProduceBackSubmitQO {
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -26,5 +25,5 @@ public class InProduceOrderReceiveMaterialQO {
|
||||||
* 二维码列表
|
* 二维码列表
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -20,5 +19,5 @@ public class InSubmitItemQO {
|
||||||
* 二维码列表
|
* 二维码列表
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
@ -39,5 +37,5 @@ public class PoReceiveTaskItemConfirmQO {
|
||||||
* 二维码列表
|
* 二维码列表
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,9 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
@ -56,5 +53,5 @@ public class QCReceiveTaskConfirmQO {
|
||||||
* 二维码列表
|
* 二维码列表
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,4 +77,10 @@ public class InProduceOrderItemVO {
|
||||||
* 是否必须扫码,如果为false的话可以不扫码
|
* 是否必须扫码,如果为false的话可以不扫码
|
||||||
*/
|
*/
|
||||||
private boolean mustScan = true;
|
private boolean mustScan = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否启用储位管理,true为启用,false为不启用
|
||||||
|
*/
|
||||||
|
@JsonProperty("isDisableLocation")
|
||||||
|
private Boolean isDisableLocation = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue