Compare commits
2 Commits
3a6161fb93
...
adf80b96e6
| Author | SHA1 | Date |
|---|---|---|
|
|
adf80b96e6 | |
|
|
2a5a58b163 |
|
|
@ -487,7 +487,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
List<WmsInProduceOrderSurplusItem> list = inProduceOrderSurplusItemService.getList(id);
|
||||
list.forEach(it -> it.setNum(null));
|
||||
Map<String, String> base = new HashMap<>();
|
||||
base.put("title", "副产品退料单");
|
||||
base.put("title", "返修退料单");
|
||||
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
|
||||
base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getNo(), 100, 100));
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
|
|
@ -495,7 +495,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
variables.put("base", base);
|
||||
variables.put("pages", PdfPageDTO.create(list, 17, new WmsInProduceOrderSurplusItem()));
|
||||
String html = ThymeleafUtil.generator("/template/", "生产退料单", ".html", variables);
|
||||
PdfGeneratorUtil.generatePdf("副产品退料单" + order.getNo(), html, response);
|
||||
PdfGeneratorUtil.generatePdf("返修退料单" + order.getNo(), html, response);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1160,7 +1160,7 @@ public class NormalPGIController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(!wmsPoReceipt.getSourceType().equals(1)).throwMessage("不属于无码收货的采购单");
|
||||
|
||||
//首先判断是否已经确认
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||
// VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
||||
|
||||
|
||||
|
|
@ -1207,6 +1207,8 @@ public class NormalPGIController extends BaseController {
|
|||
|
||||
if (CollectionUtil.isNotEmpty(scanCode)) {
|
||||
scanCode.forEach(code -> {
|
||||
WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.getByCode(code.getCodeId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("条码不存在:" + code.getCodeId());
|
||||
// 库存
|
||||
InventoryInDTO inventoryDTO = inventories.stream()
|
||||
.filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode())
|
||||
|
|
@ -1214,6 +1216,7 @@ public class NormalPGIController extends BaseController {
|
|||
&& inventoriesDTO.getSerialNo().equals(Objects.isNull(code.getSerialNumbers()) ? "" : code.getSerialNumbers())
|
||||
&& inventoriesDTO.getFactoryNo().equals(wmsPoReceipt.getFactoryCode())
|
||||
&& inventoriesDTO.getWarehouseNo().equals(item.getReceivedWarehouse())
|
||||
&& StrUtil.equals(inventoriesDTO.getBinLocation(), qrCodeMaster.getBinLocation())
|
||||
).findFirst().orElse(null);
|
||||
|
||||
if (Objects.isNull(inventoryDTO)) {
|
||||
|
|
@ -1221,6 +1224,7 @@ public class NormalPGIController extends BaseController {
|
|||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBinLocation(qrCodeMaster.getBinLocation())
|
||||
.setBatchNo(Objects.isNull(code.getBatchNumber()) ? "" : code.getBatchNumber())
|
||||
.setSerialNo(Objects.isNull(code.getSerialNumbers()) ? "" : code.getSerialNumbers())
|
||||
.setNum(code.getCodeNum());
|
||||
|
|
@ -1265,6 +1269,7 @@ public class NormalPGIController extends BaseController {
|
|||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBinLocation("")
|
||||
.setBatchNo("")
|
||||
.setSerialNo("")
|
||||
.setNum(item.getInQty());
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ import java.time.LocalDate;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -144,6 +145,77 @@ public class NormalQMController extends BaseController {
|
|||
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("不存在待入库的物料(或此物料已入库)");
|
||||
|
||||
List<String> qrCodes = CollectionUtil.unionAll(
|
||||
request.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(QCReceiveTaskConfirmQO::getReceiveItems)
|
||||
.flatMap(List::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.map(InCostCenterBackSubmitItemQRQO::getQrCode)
|
||||
.toList()
|
||||
, request.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(QCReceiveTaskConfirmQO::getRejectItems)
|
||||
.flatMap(List::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.map(InCostCenterBackSubmitItemQRQO::getQrCode)
|
||||
.toList()
|
||||
);
|
||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.getChildrenWithParent(qrCodes);
|
||||
request.forEach(rit -> {
|
||||
if (CollectionUtil.isNotEmpty(rit.getReceiveItems())) {
|
||||
rit.getReceiveItems().forEach(item -> {
|
||||
WmsQrCodeMaster p = qrCodeMasters.stream()
|
||||
.filter(q -> q.getBarcodeCode().equals(item.getQrCode()))
|
||||
.findFirst()
|
||||
.get();
|
||||
p.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
p.setFactoryCode(rit.getFactoryCode());
|
||||
p.setStorageLocation(rit.getReceivedWarehouse());
|
||||
p.setBinLocation(item.getBinNo());
|
||||
p.setLastScanBy(UserUtil.getUserId());
|
||||
p.setLastScanByname(UserUtil.getUserName());
|
||||
p.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMasters.stream()
|
||||
.filter(q -> q.getParentBarcodeId().equals(p.getId()))
|
||||
.forEach(c -> {
|
||||
c.setProcessStage(p.getProcessStage());
|
||||
c.setLastScanBy(UserUtil.getUserId());
|
||||
c.setLastScanByname(UserUtil.getUserName());
|
||||
c.setLastScanTime(LocalDateTime.now());
|
||||
c.setFactoryCode(p.getFactoryCode());
|
||||
c.setStorageLocation(p.getStorageLocation());
|
||||
c.setBinLocation(p.getBinLocation());
|
||||
// c.setReceiptItemId(p.getReceiptItemId());
|
||||
});
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(rit.getRejectItems())) {
|
||||
rit.getRejectItems().forEach(item -> {
|
||||
WmsQrCodeMaster p = qrCodeMasters.stream()
|
||||
.filter(q -> q.getBarcodeCode().equals(item.getQrCode()))
|
||||
.findFirst()
|
||||
.get();
|
||||
p.setProcessStage(BarCodeProcessStage.Reject.getState());
|
||||
p.setBinLocation(item.getBinNo());
|
||||
p.setLastScanBy(UserUtil.getUserId());
|
||||
p.setLastScanByname(UserUtil.getUserName());
|
||||
p.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMasters.stream()
|
||||
.filter(q -> q.getParentBarcodeId().equals(p.getId()))
|
||||
.forEach(c -> {
|
||||
c.setProcessStage(p.getProcessStage());
|
||||
c.setLastScanBy(UserUtil.getUserId());
|
||||
c.setLastScanByname(UserUtil.getUserName());
|
||||
c.setLastScanTime(LocalDateTime.now());
|
||||
c.setFactoryCode(p.getFactoryCode());
|
||||
c.setStorageLocation(p.getStorageLocation());
|
||||
c.setBinLocation(p.getBinLocation());
|
||||
// c.setReceiptItemId(p.getReceiptItemId());
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
//首先根据采购单的编号进行分类
|
||||
List<String> poNums = request.stream()
|
||||
.map(QCReceiveTaskConfirmQO::getPoNum) // 提取每个对象的 ID
|
||||
|
|
@ -258,109 +330,36 @@ public class NormalQMController extends BaseController {
|
|||
.setEbelp(Integer.valueOf(code.getPoLineNumber()))
|
||||
.setMenge(code.getRejectQty())
|
||||
.setMatDoc(code.getReceiveNum())
|
||||
.setDocYear(DateTimeUtil.format(LocalDate.now(),"yyyy"))
|
||||
.setDocYear(DateTimeUtil.format(LocalDate.now(), "yyyy"))
|
||||
);
|
||||
}
|
||||
if (code.getReceiveQty().compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 合格品数量大于0时的处理逻辑
|
||||
InventoryInDTO inventoryDTO = qcReceiveDTO.getQualifiednventories()
|
||||
.stream()
|
||||
.filter(inventoryDTO1 ->
|
||||
inventoryDTO1.getMaterialNo().equals(code.getItemCode())
|
||||
&& inventoryDTO1.getWarehouseNo().equals(item.getReceivedWarehouse())
|
||||
&& inventoryDTO1.getBatchNo().equals(code.getMaterialBatch())
|
||||
&& inventoryDTO1.getSerialNo().equals(code.getSerialNum())
|
||||
&& inventoryDTO1.getFactoryNo().equals(code.getFactory()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (Objects.isNull(inventoryDTO)) {
|
||||
List<WmsQrCodeMaster> itemQrCodeMasters = qrCodeMasters.stream()
|
||||
.filter(qr -> Objects.equals(qr.getProcessStage(), BarCodeProcessStage.InBound.getState())
|
||||
&& qr.getMaterialCode().equals(code.getItemCode())
|
||||
)
|
||||
.toList();
|
||||
Map<String, List<WmsQrCodeMaster>> qrCodeMastersMap = itemQrCodeMasters.stream()
|
||||
.collect(Collectors.groupingBy(WmsQrCodeMaster::getKey1));
|
||||
qrCodeMastersMap.values().forEach(vqrs -> {
|
||||
WmsQrCodeMaster qf = vqrs.get(0);
|
||||
qcReceiveDTO.getQualifiednventories().add(new InventoryInDTO()
|
||||
.setMaterialNo(code.getItemCode())
|
||||
.setFactoryNo(code.getFactory())
|
||||
.setWarehouseNo(item.getReceivedWarehouse()) // 不合格仓固定
|
||||
.setNum(code.getReceiveQty())
|
||||
.setBatchNo(code.getMaterialBatch())
|
||||
.setSerialNo(code.getSerialNum())
|
||||
.setMaterialNo(qf.getMaterialCode())
|
||||
.setFactoryNo(qf.getFactoryCode())
|
||||
.setWarehouseNo(qf.getStorageLocation()) // 不合格仓固定
|
||||
.setBinLocation(qf.getBinLocation())
|
||||
.setBatchNo(qf.getBatchNo())
|
||||
.setSerialNo(qf.getSerialNo())
|
||||
.setNum(vqrs.stream().map(WmsQrCodeMaster::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
);
|
||||
} else {
|
||||
inventoryDTO.setNum(inventoryDTO.getNum().add(code.getReceiveQty()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
qcReceiveDTOS.add(qcReceiveDTO);
|
||||
}
|
||||
List<String> qrCodes = CollectionUtil.unionAll(
|
||||
request.stream()
|
||||
.map(QCReceiveTaskConfirmQO::getReceiveItems)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(List::stream)
|
||||
.map(InCostCenterBackSubmitItemQRQO::getQrCode)
|
||||
.filter(Objects::nonNull)
|
||||
.toList()
|
||||
, request.stream()
|
||||
.map(QCReceiveTaskConfirmQO::getRejectItems)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(List::stream)
|
||||
.map(InCostCenterBackSubmitItemQRQO::getQrCode)
|
||||
.filter(Objects::nonNull)
|
||||
.toList()
|
||||
);
|
||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.getChildrenWithParent(qrCodes);
|
||||
request.forEach(rit -> {
|
||||
if (CollectionUtil.isNotEmpty(rit.getReceiveItems())) {
|
||||
rit.getReceiveItems().forEach(item -> {
|
||||
WmsQrCodeMaster p = qrCodeMasters.stream()
|
||||
.filter(q -> q.getBarcodeCode().equals(item.getQrCode()))
|
||||
.findFirst()
|
||||
.get();
|
||||
p.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
p.setBinLocation(item.getBinNo());
|
||||
p.setLastScanBy(UserUtil.getUserId());
|
||||
p.setLastScanByname(UserUtil.getUserName());
|
||||
p.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMasters.stream()
|
||||
.filter(q -> q.getParentBarcodeId().equals(p.getId()))
|
||||
.forEach(c -> {
|
||||
c.setProcessStage(p.getProcessStage());
|
||||
c.setLastScanBy(UserUtil.getUserId());
|
||||
c.setLastScanByname(UserUtil.getUserName());
|
||||
c.setLastScanTime(LocalDateTime.now());
|
||||
c.setFactoryCode(p.getFactoryCode());
|
||||
c.setStorageLocation(p.getStorageLocation());
|
||||
c.setBinLocation(p.getBinLocation());
|
||||
c.setReceiptItemId(p.getReceiptItemId());
|
||||
});
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(rit.getRejectItems())) {
|
||||
rit.getRejectItems().forEach(item -> {
|
||||
WmsQrCodeMaster p = qrCodeMasters.stream()
|
||||
.filter(q -> q.getBarcodeCode().equals(item.getQrCode()))
|
||||
.findFirst()
|
||||
.get();
|
||||
p.setProcessStage(BarCodeProcessStage.Reject.getState());
|
||||
p.setBinLocation(item.getBinNo());
|
||||
p.setLastScanBy(UserUtil.getUserId());
|
||||
p.setLastScanByname(UserUtil.getUserName());
|
||||
p.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMasters.stream()
|
||||
.filter(q -> q.getParentBarcodeId().equals(p.getId()))
|
||||
.forEach(c -> {
|
||||
c.setProcessStage(p.getProcessStage());
|
||||
c.setLastScanBy(UserUtil.getUserId());
|
||||
c.setLastScanByname(UserUtil.getUserName());
|
||||
c.setLastScanTime(LocalDateTime.now());
|
||||
c.setFactoryCode(p.getFactoryCode());
|
||||
c.setStorageLocation(p.getStorageLocation());
|
||||
c.setBinLocation(p.getBinLocation());
|
||||
c.setReceiptItemId(p.getReceiptItemId());
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||
normalQMControllerService.confirmReceive(qcReceiveDTOS);
|
||||
return ApiResult.success();
|
||||
|
|
@ -390,7 +389,7 @@ public class NormalQMController extends BaseController {
|
|||
//VUtil.trueThrowBusinessError(!qcReceive.getSourceType().equals(1)).throwMessage("不属于无码收货的采购单");
|
||||
//根据ID获取到任务单
|
||||
List<QCReceiveTaskConfirmQO> taskConfirmQOS = new ArrayList<>();
|
||||
List<InCostCenterBackSubmitItemQRQO> qrCodes=new ArrayList<>();
|
||||
List<InCostCenterBackSubmitItemQRQO> qrCodes = new ArrayList<>();
|
||||
for (WmsQcReceive qcReceive : qcReceives) {
|
||||
List<QCTaskItemVO> tasks = normalQMControllerService.getTaskItem(qcReceive.getId());
|
||||
if (CollectionUtil.isNotEmpty(tasks)) {
|
||||
|
|
@ -398,7 +397,7 @@ public class NormalQMController extends BaseController {
|
|||
.anyMatch(task -> task.getUnqualifiedQty().compareTo(BigDecimal.ZERO) > 0)
|
||||
).throwMessage("含有质检不合格物料,请扫码入库!");
|
||||
qrCodeMasterService.getByExtendIds(tasks.stream().map(QCTaskItemVO::getId).toList())
|
||||
.forEach(code->{
|
||||
.forEach(code -> {
|
||||
qrCodes.add(new InCostCenterBackSubmitItemQRQO()
|
||||
.setBinNo("")
|
||||
.setQrCode(code.getBarcodeCode())
|
||||
|
|
@ -457,7 +456,7 @@ public class NormalQMController extends BaseController {
|
|||
zwm3A18DTO.getItem1().add(item1DTO);
|
||||
} else {
|
||||
item1DTO.setErfmg1(item1DTO.getErfmg1().add(code.getQualifiedQty()));
|
||||
item1DTO.setErfmg2(BigDecimal.ZERO);
|
||||
item1DTO.setErfmg2(BigDecimal.ZERO);
|
||||
}
|
||||
if (StrUtil.isNotBlank(code.getSerialNum())) {
|
||||
String flag = code.getInspectionResult().equals("合格") ? "X" : "";
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ public class OutPurchaseController extends BaseController {
|
|||
items.add(item);
|
||||
input1.add(new ZWM3A06Input1DTO()
|
||||
.setEbelp(it.getEbelp())
|
||||
.setRetpo(it.getRetpo())
|
||||
.setRetpo("X")
|
||||
.setMatnr(it.getMatnr())
|
||||
.setMaktx(it.getMaktx())
|
||||
.setErfmg(item.getNum())
|
||||
|
|
|
|||
|
|
@ -201,8 +201,8 @@ public class PurchaseReturnController extends BaseController {
|
|||
User user = userService.getById(UserUtil.getUserId());
|
||||
VUtil.trueThrowBusinessError(StrUtil.equals(user.getPurchasingGroup(), returnRequest.getPurchaseGroup()))
|
||||
.throwMessage("无权限审核此单");
|
||||
VUtil.trueThrowBusinessError(returnRequest.getApprovalStatus() == 1)
|
||||
.throwMessage("此单已审核通过,不可以再此审核");
|
||||
// VUtil.trueThrowBusinessError(returnRequest.getApprovalStatus() == 1)
|
||||
// .throwMessage("此单已审核通过,不可以再此审核");
|
||||
|
||||
if (request.getApprovalStatus().equals(2)) {
|
||||
VUtil.trueThrowBusinessError(returnRequest.getApprovalStatus() == 2)
|
||||
|
|
@ -280,6 +280,7 @@ public class PurchaseReturnController extends BaseController {
|
|||
}
|
||||
//修改状态
|
||||
returnRequestService.lambdaUpdate()
|
||||
.set(WmsReturnRequest::getPoNumberNew, returnRequest.getPoNumberNew())
|
||||
.set(WmsReturnRequest::getApprovalStatus, request.getApprovalStatus())
|
||||
.set(WmsReturnRequest::getDocumentType, request.getDocumentType())
|
||||
.set(WmsReturnRequest::getApproveTime, LocalDateTime.now())
|
||||
|
|
|
|||
|
|
@ -111,12 +111,7 @@ public class ApplyReturnRequestItemVO {
|
|||
private String unit;
|
||||
|
||||
/**
|
||||
* sap过账的行号
|
||||
* 新采购单行号
|
||||
*/
|
||||
private Integer poLineNumberNew;
|
||||
|
||||
/**
|
||||
* 新的采购单号
|
||||
*/
|
||||
private String poNumberNew;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,4 +99,9 @@ public class ApplyReturnRequestVO {
|
|||
* 0 PC端,1 PDA端
|
||||
*/
|
||||
private Short dataSource;
|
||||
|
||||
/**
|
||||
* 新的采购单号
|
||||
*/
|
||||
private String poNumberNew;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.wms.repository.entity;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
|
@ -14,6 +15,7 @@ import java.time.LocalDateTime;
|
|||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
|
|
@ -74,11 +76,19 @@ public class WmsQrCodeMaster implements Serializable {
|
|||
*/
|
||||
private String batchNo;
|
||||
|
||||
public String getBatchNo() {
|
||||
return StrUtil.isBlank(batchNo) ? "" : batchNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 序列号
|
||||
*/
|
||||
private String serialNo;
|
||||
|
||||
public String getSerialNo() {
|
||||
return StrUtil.isBlank(serialNo) ? "" : serialNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商编号
|
||||
*/
|
||||
|
|
@ -109,6 +119,10 @@ public class WmsQrCodeMaster implements Serializable {
|
|||
*/
|
||||
private String binLocation;
|
||||
|
||||
public String getBinLocation() {
|
||||
return StrUtil.isBlank(binLocation) ? "" : binLocation;
|
||||
}
|
||||
|
||||
/**
|
||||
* 最后扫描时间
|
||||
*/
|
||||
|
|
@ -190,6 +204,13 @@ public class WmsQrCodeMaster implements Serializable {
|
|||
private String key;
|
||||
|
||||
public String getKey() {
|
||||
return factoryCode + "|" + storageLocation + "|";
|
||||
return factoryCode + "|" + storageLocation;
|
||||
}
|
||||
|
||||
@TableField(exist = false)
|
||||
private String key1;
|
||||
|
||||
public String getKey1() {
|
||||
return factoryCode + "|" + storageLocation + "|" + getBinLocation() + "|" + getBatchNo() + "|" + getSerialNo();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue