Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
yf001217 2026-03-20 17:06:23 +08:00
commit bdfd9e8844
14 changed files with 481 additions and 202 deletions

View File

@ -220,8 +220,7 @@ public class ComponentOutboundController extends BaseController {
if (item.isQiTao()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
item.getBatchs()
.forEach(it -> {
item.getBatchs().forEach(it -> {
records.add(new OutMaterialScanRecord()
.setSource(7)
.setSourceId(packing.getId())
@ -233,6 +232,7 @@ public class ComponentOutboundController extends BaseController {
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(packing.getFactoryNo())
.setWarehouseNo(outboundItem.getLgort())
// .setUnit(item.getMeins())
@ -244,7 +244,8 @@ public class ComponentOutboundController extends BaseController {
VUtil.trueThrowBusinessError(outboundItem.getOutQty()
.compareTo(records.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) != 0)
.throwMessage("物料" + outboundItem.getIdnrk() + "的领取数量不等于装箱数量");
} else {
}
if (item.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()))
.throwMessage("需要提供扫码信息");
if (CollectionUtil.isNotEmpty(item.getScanCodes())) {
@ -284,6 +285,7 @@ public class ComponentOutboundController extends BaseController {
// .setLgpbe(outboundItem.getLgpbe());
// outboundScanCodes.add(scanCodes);
WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(code.getCodeId());
if (!item.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(7)
.setSourceId(packing.getId())
@ -295,6 +297,7 @@ public class ComponentOutboundController extends BaseController {
.setBatchNo(qrCodeContent.getBatchNo())
.setSerialNo(qrCodeContent.getSerialNo())
.setUniqNo(code.getCodeId())
.setQiTao(false)
.setFactoryNo(qrCodeContent.getFactoryCode())
.setWarehouseNo(qrCodeContent.getStorageLocation())
.setBinNo(qrCodeContent.getBinLocation())
@ -303,6 +306,7 @@ public class ComponentOutboundController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
//组装下库存信息
setInventoryOutDTO(inventories, outboundItem.getIdnrk(), packing.getFactoryNo()
, qrCodeContent.getStorageLocation(), qrCodeContent.getBinLocation(), qrCodeContent.getBatchNo()
@ -405,11 +409,11 @@ public class ComponentOutboundController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() :qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -262,6 +262,7 @@ public class OutAssistanceController extends BaseController {
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks())
.setWarehouseNo(order.getLgort1())
.setUnit(item.getMeins())
@ -276,7 +277,8 @@ public class OutAssistanceController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
});
} else {
}
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> {
@ -299,6 +301,7 @@ public class OutAssistanceController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
if (!qitem.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(3)
.setSourceId(order.getId())
@ -314,12 +317,14 @@ public class OutAssistanceController extends BaseController {
.setWarehouseNo(qrCodeMaster.getStorageLocation())
.setBinNo(qrCodeMaster.getBinLocation())
.setUnit(item.getMeins())
.setQiTao(false)
.setNum(qrCodeMaster.getQuantity())
.setEbeln(order.getEbeln())
.setEbelp(item.getEbelp())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
});
}
});
@ -377,11 +382,11 @@ public class OutAssistanceController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
@ -462,8 +467,7 @@ public class OutAssistanceController extends BaseController {
.eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
.in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList())
.list();
qrCodeMasters.stream()
.forEach(p -> {
qrCodeMasters.forEach(p -> {
OutMaterialScanRecord record = records.stream()
.filter(r -> r.getUniqNo().equals(p.getBarcodeCode()))
.findFirst()

View File

@ -259,6 +259,7 @@ public class OutCostCenterController extends BaseController {
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setNum(it.getNum())
@ -270,7 +271,8 @@ public class OutCostCenterController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
});
} else {
}
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> {
@ -293,6 +295,7 @@ public class OutCostCenterController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
if (!qitem.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(2)
.setSourceId(order.getId())
@ -300,6 +303,7 @@ public class OutCostCenterController extends BaseController {
.setTicketId(ticket.getId())
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setQiTao(false)
.setContent(qrCodeMaster.getBarcodeCode())
.setBatchNo(qrCodeMaster.getBatchNo())
.setSerialNo(qrCodeMaster.getSerialNo())
@ -311,6 +315,7 @@ public class OutCostCenterController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
});
}
});
@ -368,11 +373,11 @@ public class OutCostCenterController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -373,6 +373,7 @@ public class OutProduceController extends BaseController {
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getDwerk())
.setWarehouseNo(ticket.getLgort())
.setUnit(item.getMeins())
@ -389,7 +390,8 @@ public class OutProduceController extends BaseController {
});
VUtil.trueThrowBusinessError(item.getNum().compareTo(item.getSqsl()) > 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
} else {
}
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> {
@ -415,6 +417,7 @@ public class OutProduceController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
if (!qitem.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(1)
.setSourceId(order.getId())
@ -422,6 +425,7 @@ public class OutProduceController extends BaseController {
.setTicketId(ticket.getId())
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setQiTao(false)
.setContent(qrCodeMaster.getBarcodeCode())
.setBatchNo(qrCodeMaster.getBatchNo())
.setSerialNo(qrCodeMaster.getSerialNo())
@ -435,6 +439,7 @@ public class OutProduceController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
});
}
});
@ -492,11 +497,11 @@ public class OutProduceController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -283,8 +283,8 @@ public class OutPurchaseController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -2,12 +2,17 @@ package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.PdfGeneratorUtil;
import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.UserType;
import com.nflg.wms.common.pojo.ApiResult;
@ -22,20 +27,16 @@ import com.nflg.wms.repository.service.*;
import com.nflg.wms.starter.BaseController;
import com.nflg.wms.starter.annotation.ApiMark;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -66,6 +67,9 @@ public class PurchaseReturnController extends BaseController {
@Resource
private IUserService userService;
@Resource
private IUserSupplierService userSupplierService;
/**
* 获取送货单的入库信息
@ -452,4 +456,28 @@ public class PurchaseReturnController extends BaseController {
return ApiResult.success(qrCodeVO);
}
/**
* 导出采购退货申请单
*/
@GetMapping("exportTicket")
public void exportTicket(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
WmsReturnRequest order = returnRequestService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("申请单不存在");
VUtil.trueThrowBusinessError(order.getApprovalStatus()!=1).throwMessage("申请单未审核通过");
UserSupplier supplier=userSupplierService.getByCode(order.getSupplierCode());
List<WmsReturnRequestItem> list = returnRequestItemService.lambdaQuery()
.eq(WmsReturnRequestItem::getApplicationId, id)
.list();
Map<String, String> base = new HashMap<>();
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getApplicationNo(), 100, 100));
base.put("supplier", supplier.getSupplierName());
Map<String, Object> variables = new HashMap<>();
variables.put("info", order);
variables.put("base", base);
variables.put("pages", PdfPageDTO.create(list, 11, new WmsReturnRequestItem()));
String html = ThymeleafUtil.generator("/template/", "采购退货申请单", ".html", variables);
PdfGeneratorUtil.generatePdf("采购入(退)库单" + order.getApplicationNo(), html, response);
}
}

View File

@ -292,7 +292,9 @@ public class TransferCompanyController extends BaseController {
.setContent("")
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setBinNo(it.getBinNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getReswk())
.setWarehouseNo(request.getLgort())
.setNum(it.getNum())
@ -307,7 +309,8 @@ public class TransferCompanyController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
});
} else {
}
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> {
@ -329,6 +332,7 @@ public class TransferCompanyController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
if (!qitem.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(5)
.setSourceId(order.getId())
@ -337,6 +341,7 @@ public class TransferCompanyController extends BaseController {
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setQiTao(false)
.setContent(qrCodeMaster.getBarcodeCode())
.setBatchNo(qrCodeMaster.getBatchNo())
.setSerialNo(qrCodeMaster.getSerialNo())
@ -351,6 +356,7 @@ public class TransferCompanyController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
});
}
});
@ -413,11 +419,11 @@ public class TransferCompanyController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -275,7 +275,6 @@ public class TransferFactoryController extends BaseController {
.list();
qrCodeMasters.addAll(tempList);
}
request.getItems().forEach(qitem -> {
WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qitem.getItemId())).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + qitem.getMaterialNo() + "不需要出库");
@ -310,6 +309,7 @@ public class TransferFactoryController extends BaseController {
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo())
.setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setNum(it.getNum())
@ -321,7 +321,8 @@ public class TransferFactoryController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的领取数量超出申请限制");
});
} else {
}
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> {
@ -342,6 +343,7 @@ public class TransferFactoryController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now());
if (!qitem.isQiTao()) {
records.add(new OutMaterialScanRecord()
.setSource(4)
.setSourceId(order.getId())
@ -350,6 +352,7 @@ public class TransferFactoryController extends BaseController {
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setQiTao(false)
.setRspos(item.getRspos())
.setContent(qrCodeMaster.getBarcodeCode())
.setBatchNo(qrCodeMaster.getBatchNo())
@ -362,6 +365,7 @@ public class TransferFactoryController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
});
}
});
@ -405,11 +409,11 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
@ -497,11 +501,11 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream()
.setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -107,7 +107,7 @@
}
.package-logo {
width: 150px;
width: 250px;
margin: 0 auto;
margin-bottom: 20px;
}

View File

@ -0,0 +1,202 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>采购退货申请单</title>
<style>
@page {
size: A4 landscape; /* 横向 A4 */
margin: 10mm; /* 页边距 */
}
body {
font-family: SimSun, serif;
font-size: 12px;
margin: 10px;
}
.container {
max-width: 100%;
margin: 0 auto;
background-color: white;
padding: 10px;
border: 1px solid #ccc;
page-break-after: always;
}
.container:last-child {
page-break-after: auto;
}
.company-name {
text-align: center;
font-size: 18px;
margin: 10px 0;
}
.title {
text-align: center;
font-size: 25px;
font-weight: bold;
margin: 20px 0;
}
.info-item label {
display: inline-block;
width: 80px;
font-weight: bold;
}
.table-data {
clear: both;
margin: 5px 0;
}
.table-data table {
width: 100%;
border-collapse: collapse;
border: 1px solid #000;
}
.table-desc table {
width: 100%;
border: 0;
}
.table-desc td {
text-align: left;
border: 0;
}
th, td {
border: 1px solid #000;
padding: 5px;
text-align: center;
font-size: 12px;
}
th {
background-color: #f0f0f0;
font-weight: bold;
height: 20px;
}
td {
height: 15px;
}
.footer {
margin-top: 10px;
overflow: hidden;
}
.footer-item {
float: left;
width: 33%;
font-size: 12px;
text-align: center;
}
.footer-item label {
margin-right: 10px;
}
.filled-row {
background-color: #fff;
}
.package-logo {
width: 250px;
margin: 0 auto;
margin-bottom: 20px;
}
.package-logo img {
width: 100%;
}
.qrcode {
width: 100px;
position: absolute;
right: 0;
top: 0;
}
.qrcode img {
width: 100%;
}
.col-left {
text-align: left;
}
</style>
</head>
<body>
<div class="container" th:each="page,pageStat : ${pages}">
<div style="position:relative;">
<div class="package-logo" style="margin: 5px;position:absolute;"><img src="../img/logo1.png"/></div>
<div class="qrcode"><img th:src="${base.qrcode}" src="../img/qrcode.png"/></div>
<div>
<div class="company-name">福建南方路面机械股份有限公司</div>
<div class="title">采购入(退)库单</div>
</div>
</div>
<div class="table-desc">
<table>
<tr>
<td style="width: 30%;">采购订单号:<span th:text="${info.poNum}"></span></td>
<td style="text-align: center">过账日期:<span th:text="${base.date}"></span></td>
<td style="width: 25%;">页码:<span th:text="${pageStat.count}">1</span>/<span
th:text="${pageStat.size}">1</span></td>
</tr>
<tr>
<td colspan="2">&nbsp;&nbsp;商:<span th:text="${base.supplier}"></span></td>
<td>物料凭证号:<span></span></td>
</tr>
</table>
</div>
<div style="clear: both;"></div>
<div class="table-data">
<table>
<tr>
<td style="width: 30px">订单<br/>项次</td>
<td style="width: 70px">移动<br/>类型</td>
<td style="width: 70px">物料号</td>
<td>物料描述</td>
<td style="width: 30px">单位</td>
<td style="width: 50px">数量</td>
<td style="width: 60px">工厂</td>
<td style="width: 60px">仓库</td>
<td style="width: 50px">仓位</td>
</tr>
<tr class="filled-row" th:each="item,iterStat : ${page.datas}">
<td th:text="${iterStat.count}">1</td>
<td></td>
<td th:text="${item.materialCode}">物料号</td>
<td th:text="${item.materialDescription}" class="col-left">非金属联件和紧固件等 M6 DIN 982 不锈钢304</td>
<td th:text="${item.unit}">PC</td>
<td th:text="${item.requestQuantity}">10.00</td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div class="footer">
<div class="footer-item">
<label>品质检验:</label>
</div>
<div class="footer-item">
<label>收料部门主管:</label>
</div>
<div class="footer-item">
<label>收料经办人:</label>
</div>
</div>
</div>
</body>
</html>

View File

@ -123,6 +123,11 @@ public class OutMaterialScanRecord {
*/
private String ext;
/**
* 是否是齐套物料
*/
private boolean isQiTao = false;
/**
* 创建人
*/

View File

@ -35,6 +35,11 @@ public class ComponentOutboundItemInputQO {
@JsonProperty("isQiTao")
private boolean isQiTao;
/**
* 是否扫码子项
*/
private boolean useChildren = true;
/**
* 批次列表
*/

View File

@ -3,6 +3,8 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.util.Objects;
@Data
public class InventoryInItemQRCodeQO {
@ -16,4 +18,8 @@ public class InventoryInItemQRCodeQO {
* 储位编号
*/
private String binNo;
public String getBinNo() {
return Objects.isNull(binNo) ? "" : binNo;
}
}

View File

@ -30,6 +30,11 @@ public class OutProduceSubmitItemQO {
@JsonProperty("isQiTao")
private boolean isQiTao;
/**
* 是否扫码子项
*/
private boolean useChildren;
/**
* 批次列表
*/