Compare commits

..

No commits in common. "981d1f4a962b9b688b7ba9ca8258f75f024d62de" and "9dd7011ded58cb466667996112701c960c09cf46" have entirely different histories.

5 changed files with 58 additions and 74 deletions

View File

@ -72,8 +72,8 @@ public class NormalPGIController extends BaseController {
@Resource @Resource
private NormalPGIControllerService normalPGIControllerService; private NormalPGIControllerService normalPGIControllerService;
// @Resource @Resource
// private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository; private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository;
@Resource @Resource
private SAPCommonService sapCommonService; private SAPCommonService sapCommonService;
@ -165,7 +165,7 @@ public class NormalPGIController extends BaseController {
@GetMapping("getScanCodes") @GetMapping("getScanCodes")
@ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息") @ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息")
public ApiResult<List<PDAScanCodeVO>> getScanCodes(@RequestParam Long orderItemId) { public ApiResult<List<PDAScanCodeVO>> getScanCodes(@RequestParam Long orderItemId) {
List<SrmMaterialReceiptScanCodes> scanCodes = srmMaterialReceiptScanCodesRepository.findByOrderItemId(orderItemId); List<SrmMaterialReceiptScanCodes> scanCodes = srmMaterialReceiptCanCodesRepository.findByOrderItemId(orderItemId);
List<PDAScanCodeVO> pdas = Convert.toList(PDAScanCodeVO.class, scanCodes); List<PDAScanCodeVO> pdas = Convert.toList(PDAScanCodeVO.class, scanCodes);
return ApiResult.success(pdas); return ApiResult.success(pdas);
} }

View File

@ -20,6 +20,7 @@ import com.nflg.wms.common.pojo.vo.QrCodeItemVO;
import com.nflg.wms.common.pojo.vo.QrCodeVO; import com.nflg.wms.common.pojo.vo.QrCodeVO;
import com.nflg.wms.common.pojo.vo.StrappingVO; import com.nflg.wms.common.pojo.vo.StrappingVO;
import com.nflg.wms.common.util.NumberUtil; import com.nflg.wms.common.util.NumberUtil;
import com.nflg.wms.common.util.StringUtil;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.WmsPackageItem; import com.nflg.wms.repository.entity.WmsPackageItem;
@ -54,7 +55,6 @@ import java.util.zip.ZipOutputStream;
/** /**
* 装箱管理 * 装箱管理
*
* @author: nflg * @author: nflg
* @date: 2022/3/17 * @date: 2022/3/17
* @description: * @description:
@ -136,11 +136,9 @@ public class QrCodeMasterController extends BaseController {
List<WmsPackageItem> wmsPackageItems = wmsPackageItemService.lambdaQuery() List<WmsPackageItem> wmsPackageItems = wmsPackageItemService.lambdaQuery()
.eq(WmsPackageItem::getPackageId,request.getPackageId()) .eq(WmsPackageItem::getPackageId,request.getPackageId())
.list(); .list();
if (CollectionUtil.isEmpty(wmsPackageItems)) {
return ApiResult.success(Collections.emptyList());
}
List<String> barcodeCodes = wmsPackageItems.stream() List<String> barcodeCodes = wmsPackageItems.stream()
.map(WmsPackageItem::getBarcodeCode) .map(WmsPackageItem::getBarcodeCode)
.filter(Objects::nonNull)
.toList(); .toList();
List<WmsQrCodeMaster> qrCodeMasterList = qrCodeMasterService.lambdaQuery() List<WmsQrCodeMaster> qrCodeMasterList = qrCodeMasterService.lambdaQuery()
.in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes) .in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes)
@ -167,8 +165,7 @@ public class QrCodeMasterController extends BaseController {
*/ */
private void smallBarcodeValidation(WmsQrCodeMaster qrCodeMaster, private void smallBarcodeValidation(WmsQrCodeMaster qrCodeMaster,
List<WmsQrCodeMaster> smallQrCodeMasters, List<WmsQrCodeMaster> smallQrCodeMasters,
BarCodeProcessStage processStage, BarCodeProcessStage processStage) {
boolean equals) {
boolean hasDuplicates = smallQrCodeMasters.stream() boolean hasDuplicates = smallQrCodeMasters.stream()
.map(WmsQrCodeMaster::getBarcodeCode) .map(WmsQrCodeMaster::getBarcodeCode)
.collect(Collectors.toSet()) .collect(Collectors.toSet())
@ -186,25 +183,16 @@ public class QrCodeMasterController extends BaseController {
VUtil.trueThrowBusinessError(materialCodes.size() > 1).throwMessage("此箱码中包含多中物料"); VUtil.trueThrowBusinessError(materialCodes.size() > 1).throwMessage("此箱码中包含多中物料");
VUtil.trueThrowBusinessError(!materialCodes.get(0).equals(qrCodeMaster.getMaterialCode())).throwMessage("物料不匹配"); VUtil.trueThrowBusinessError(!materialCodes.get(0).equals(qrCodeMaster.getMaterialCode())).throwMessage("物料不匹配");
//判断小码中是否又被使用过了 //判断小码中是否又被使用过了
if (equals) { Integer count = qrCodeMasterService.lambdaQuery()
VUtil.trueThrowBusinessError(
qrCodeMasterService.lambdaQuery()
.in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes)
.ne(WmsQrCodeMaster::getProcessStage, processStage.getState())
.exists()
).throwMessage("此箱码中包含非【" + processStage.getDescription() + "】的物料二维码");
} else {
VUtil.trueThrowBusinessError(
qrCodeMasterService.lambdaQuery()
.in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes) .in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes)
.eq(WmsQrCodeMaster::getProcessStage, processStage.getState()) .eq(WmsQrCodeMaster::getProcessStage, processStage.getState())
.exists() .count().intValue();
).throwMessage("此箱码中包含【" + processStage.getDescription() + "】的物料二维码"); VUtil.trueThrowBusinessError(count > 0).throwMessage("此箱码中包含已使用的物料二维码");
} Integer count1 = qrCodeMasterService.lambdaQuery()
VUtil.trueThrowBusinessError(qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getPackagingType, 1) .eq(WmsQrCodeMaster::getPackagingType, 1)
.in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes).exists() .in(WmsQrCodeMaster::getBarcodeCode, barcodeCodes)
).throwMessage("存在箱子码(中码)"); .count().intValue();
VUtil.trueThrowBusinessError(count1 > 0).throwMessage("存在箱子码(中码)");
} }
/** /**
@ -238,10 +226,10 @@ public class QrCodeMasterController extends BaseController {
} }
} }
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(differentBatchNos)) VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(differentBatchNos))
.throwMessage("批次号不一致,不一致的物料条码号为:" + StrUtil.join(",", differentBatchNos)); .throwMessage("批次号不一致,不一致的物料条码号为:" + differentBatchNos);
// 判断箱子的物料信息是否OK // 判断箱子的物料信息是否OK
smallBarcodeValidation(qrCodeMaster, smallQrCodeMasters, BarCodeProcessStage.Packaged, false); smallBarcodeValidation(qrCodeMaster, smallQrCodeMasters, BarCodeProcessStage.Packaged);
// 修改小码的所属关系 // 修改小码的所属关系
for (WmsQrCodeMaster smallQrCodeMaster : smallQrCodeMasters) { for (WmsQrCodeMaster smallQrCodeMaster : smallQrCodeMasters) {
smallQrCodeMaster.setParentBarcodeId(qrCodeMaster.getId()); smallQrCodeMaster.setParentBarcodeId(qrCodeMaster.getId());
@ -294,7 +282,6 @@ public class QrCodeMasterController extends BaseController {
/** /**
* 换箱 * 换箱
* 针对库存地点内的物料箱合并修改物料的箱属性和库存 * 针对库存地点内的物料箱合并修改物料的箱属性和库存
*
* @param request * @param request
* @return * @return
*/ */
@ -319,7 +306,7 @@ public class QrCodeMasterController extends BaseController {
.in(WmsQrCodeMaster::getBarcodeCode, request.getItems()) .in(WmsQrCodeMaster::getBarcodeCode, request.getItems())
.list(); .list();
// 判断箱子的物料信息是否OK // 判断箱子的物料信息是否OK
smallBarcodeValidation(qrCodeMaster, smallQrCodeMasters, BarCodeProcessStage.InBound, true); smallBarcodeValidation(qrCodeMaster, smallQrCodeMasters, BarCodeProcessStage.InBound);
//校验批次号是否一致 //校验批次号是否一致
String masterbatchNo = qrCodeMaster.getBatchNo(); String masterbatchNo = qrCodeMaster.getBatchNo();
Set<String> differentBatchNos = new HashSet<>(); Set<String> differentBatchNos = new HashSet<>();
@ -333,18 +320,11 @@ public class QrCodeMasterController extends BaseController {
.throwMessage("批次号不一致,不一致的物料条码号为:" + differentBatchNos); .throwMessage("批次号不一致,不一致的物料条码号为:" + differentBatchNos);
// 只有同一个工厂的同一个库存地点的可以进行换箱 // 只有同一个工厂的同一个库存地点的可以进行换箱
// Integer count1 = qrCodeMasterService.lambdaQuery() Integer count1 = qrCodeMasterService.lambdaQuery()
// .eq(WmsQrCodeMaster::getFactoryCode, request.getFactoryCode()) .eq(WmsQrCodeMaster::getFactoryCode, request.getFactoryCode())
// .eq(WmsQrCodeMaster::getStorageLocation, request.getStorageLocation()) .eq(WmsQrCodeMaster::getStorageLocation, request.getStorageLocation())
// .count().intValue(); .count().intValue();
// VUtil.trueThrowBusinessError(count1 > 0).throwMessage("换箱只可以在相同的库存地点下进行"); VUtil.trueThrowBusinessError(count1 > 0).throwMessage("换箱只可以在相同的库存地点下进行");
Set<String> factory = smallQrCodeMasters.stream().map(WmsQrCodeMaster::getFactoryCode).collect(Collectors.toSet());
VUtil.trueThrowBusinessError(factory.size() > 1).throwMessage("换箱只可以在同一个工厂的库存地点下进行");
Set<String> warehouse = smallQrCodeMasters.stream().map(WmsQrCodeMaster::getStorageLocation).collect(Collectors.toSet());
VUtil.trueThrowBusinessError(warehouse.size() > 1).throwMessage("换箱只可以在同一个库存地点下进行");
VUtil.trueThrowBusinessError(!StrUtil.equals(factory.iterator().next(), request.getFactoryCode())
|| !StrUtil.equals(warehouse.iterator().next(), request.getStorageLocation())
).throwMessage("物料所在仓库地点与选择的仓库地点不一致");
// 区分状态 // 区分状态
// 1新箱的状态没有入过库;直接将明细物料退库重新绑定 // 1新箱的状态没有入过库;直接将明细物料退库重新绑定
if (processStage.equals(BarCodeProcessStage.Unpackaged)) { if (processStage.equals(BarCodeProcessStage.Unpackaged)) {
@ -441,8 +421,7 @@ public class QrCodeMasterController extends BaseController {
* @param request * @param request
* @return * @return
* @author * @author
* * */
*/
@PostMapping("pda/changeScan") @PostMapping("pda/changeScan")
@ApiMark(moduleName = "换箱扫码", apiName = "扫码换箱箱子扫码信息") @ApiMark(moduleName = "换箱扫码", apiName = "扫码换箱箱子扫码信息")
public ApiResult<QrCodeVO> changeScan(@Valid @RequestBody QRCodeSearchQO request) { public ApiResult<QrCodeVO> changeScan(@Valid @RequestBody QRCodeSearchQO request) {
@ -469,7 +448,6 @@ public class QrCodeMasterController extends BaseController {
/** /**
* 导出标签图片为ZIP * 导出标签图片为ZIP
*
* @param datas 二维码列表 * @param datas 二维码列表
*/ */
@PostMapping(value = "exportToZip", produces = "application/zip") @PostMapping(value = "exportToZip", produces = "application/zip")
@ -499,7 +477,6 @@ public class QrCodeMasterController extends BaseController {
/** /**
* 导出标签图片为PDF * 导出标签图片为PDF
*
* @param datas 二维码列表 * @param datas 二维码列表
*/ */
@PostMapping("exportToPdf") @PostMapping("exportToPdf")

View File

@ -9,6 +9,7 @@ import com.nflg.wms.admin.pojo.dto.QCMaterialSyncDTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository; import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository; import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository;
import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.pojo.document.SrmMaterialReceiptNoScanCodes; import com.nflg.wms.common.pojo.document.SrmMaterialReceiptNoScanCodes;
import com.nflg.wms.common.pojo.document.SrmMaterialReceiptScanCodes; import com.nflg.wms.common.pojo.document.SrmMaterialReceiptScanCodes;
import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.dto.*;

View File

@ -2,6 +2,7 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -13,6 +14,7 @@ public class StrappingAddQO {
/** /**
* 待装箱的二维码编号 * 待装箱的二维码编号
*/ */
@NotNull
@NotBlank @NotBlank
private String barcodeCode; private String barcodeCode;
@ -34,6 +36,7 @@ public class StrappingAddQO {
/** /**
* 待换箱的物料二维码 * 待换箱的物料二维码
*/ */
@NotNull
@NotEmpty @NotEmpty
private List<String> items; private List<String> items;
} }

View File

@ -3,18 +3,20 @@ package com.nflg.wms.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.dto.InventoryInDTO; import com.nflg.wms.common.pojo.dto.InventoryInDTO;
import com.nflg.wms.common.pojo.dto.InventoryOutDTO; import com.nflg.wms.common.pojo.dto.InventoryOutDTO;
import com.nflg.wms.common.pojo.qo.FilterIdSearchQO; import com.nflg.wms.common.pojo.qo.FilterIdSearchQO;
import com.nflg.wms.common.pojo.qo.QrCodeItemSearchQO; import com.nflg.wms.common.pojo.qo.QrCodeItemSearchQO;
import com.nflg.wms.common.pojo.vo.QrCodeItemVO; import com.nflg.wms.common.pojo.vo.QrCodeItemVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.WmsQrCodeMaster; import com.nflg.wms.repository.entity.WmsQrCodeMaster;
import com.nflg.wms.repository.entity.WmsTransferOrders; import com.nflg.wms.repository.entity.WmsTransferOrders;
import com.nflg.wms.repository.mapper.WmsQrCodeMasterMapper; import com.nflg.wms.repository.mapper.WmsQrCodeMasterMapper;
import com.nflg.wms.repository.service.IWmsInventoryService; import com.nflg.wms.repository.service.IWmsInventoryService;
import com.nflg.wms.repository.service.IWmsQrCodeMasterService; import com.nflg.wms.repository.service.IWmsQrCodeMasterService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.repository.service.IWmsTransferOrdersService; import com.nflg.wms.repository.service.IWmsTransferOrdersService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.retry.annotation.Backoff; import org.springframework.retry.annotation.Backoff;
@ -22,6 +24,7 @@ import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@ -97,24 +100,24 @@ public class WmsQrCodeMasterServiceImpl extends ServiceImpl<WmsQrCodeMasterMappe
if (CollectionUtil.isNotEmpty(inBoundInventory)) { if (CollectionUtil.isNotEmpty(inBoundInventory)) {
inventoryService.in(inBoundInventory); inventoryService.in(inBoundInventory);
} }
// if (CollectionUtil.isNotEmpty(changeBeforeParentBarcodeCodes)) { if (CollectionUtil.isNotEmpty(changeBeforeParentBarcodeCodes)) {
// changeBeforeParentBarcodeCodes.forEach(code -> { changeBeforeParentBarcodeCodes.forEach(code -> {
// WmsQrCodeMaster qrCodeMaster = lambdaQuery() WmsQrCodeMaster qrCodeMaster = lambdaQuery()
// .eq(WmsQrCodeMaster::getId, code) .eq(WmsQrCodeMaster::getId, code)
// .one(); .one();
//
// if (qrCodeMaster != null) { if (qrCodeMaster != null) {
// List<WmsQrCodeMaster> smallQcodeMasters = lambdaQuery() List<WmsQrCodeMaster> smallQcodeMasters = lambdaQuery()
// .eq(WmsQrCodeMaster::getParentBarcodeId, code) .eq(WmsQrCodeMaster::getParentBarcodeId, code)
// .ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) .ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
// .list(); .list();
// if (CollectionUtil.isEmpty(smallQcodeMasters)) { if (CollectionUtil.isEmpty(smallQcodeMasters)) {
// qrCodeMaster.setProcessStage(BarCodeProcessStage.OutBound.getState()); qrCodeMaster.setProcessStage(BarCodeProcessStage.OutBound.getState());
// smallQrCodeMasters.add(qrCodeMaster); smallQrCodeMasters.add(qrCodeMaster);
// } }
// } }
// }); });
// } }
//修改状态 //修改状态
updateBarCode(smallQrCodeMasters); updateBarCode(smallQrCodeMasters);
} }