中码和小码打印的部分bug修复

This commit is contained in:
zhangke 2026-03-09 17:38:57 +08:00
parent 628b21e344
commit 49e245b69b
22 changed files with 182 additions and 54 deletions

View File

@ -9,6 +9,7 @@ import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.*;
import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.BarCodeType;
import com.nflg.wms.common.constant.UserType;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.QrCodeMasterPrintDTO;
@ -18,10 +19,7 @@ import com.nflg.wms.common.pojo.vo.DeliverNormalOrderVO;
import com.nflg.wms.common.util.NumberUtil;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.UserSupplier;
import com.nflg.wms.repository.entity.WmsNormalPrintOrder;
import com.nflg.wms.repository.entity.WmsQrCodeMaster;
import com.nflg.wms.repository.entity.WmsSrmOrder;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
@ -75,6 +73,9 @@ public class NormalOrderController extends BaseController {
@Resource
private IWmsQrCodeMasterService qrCodeMasterService;
@Resource
private IWmsWarehouseService warehouseService;
/**
* 保存
*/
@ -111,14 +112,25 @@ public class NormalOrderController extends BaseController {
WmsNormalPrintOrder item = Convert.convert(WmsNormalPrintOrder.class, it);
// item.setWorkbenchId(workbenches.stream().filter(w->Objects.equals(w.getNo(),it.getWorkbenchNo())).findFirst().get().getId());
UserSupplier supplier = userSupplierService.getByCode(it.getSupplierNo());
VUtil.trueThrowBusinessError(Objects.isNull(supplier)).throwMessage("供应商不存在");
// WmsWarehouse warehouse = warehouseService.lambdaQuery()
// .eq(WmsWarehouse::getNo, it.getWarehouseNo())
// .one();
// VUtil.trueThrowBusinessError(Objects.isNull(warehouse)).throwMessage("工厂信息不存在");
if (Objects.isNull(item.getId())) {
item.setId(IdUtil.getSnowflakeNextId());
item.setOrderNo(orderNo);
item.setSupplierId(supplier.getId());
item.setCreateBy(UserUtil.getUserName());
item.setCreateTime(LocalDateTime.now());
item.setSupplierCode(supplier.getSupplierCode());
item.setStorageLocation(it.getWarehouseNo());
item.setFactoryCode(it.getWerks());
item.setUnit(it.getUnit());
forAdd.add(item);
} else {
item.setUpdateBy(UserUtil.getUserName());
item.setUpdateTime(LocalDateTime.now());
@ -131,24 +143,28 @@ public class NormalOrderController extends BaseController {
forAdd.stream()
.map(it -> Stream.iterate(1, n -> n + 1)
.limit(it.getLableNum())
.map(index -> new WmsQrCodeMaster()
.setBarcodeCode(KeyUtil.next())
.setProcessStage(BarCodeProcessStage.Unpackaged.getState())
.setBarcodeType(BarCodeType.Purchase.getState())
.setMaterialCode(it.getMaterialNo())
.setMaterialDescription(it.getMaterialDesc())
.setPackagingType((short) 0)
.setQuantity(NumberUtil.getPackageNum(it.getBatchNum(), it.getMinPackageNum(), it.getLableNum(), index))
.setUnit(null)
.setSupplierId(it.getSupplierId())
.setPoNumber(it.getExternalOrderNo())
.setBatchNo(it.getBatchNo())
.setSerialNo(it.getIndexNo())
.setPoLineNumber(it.getRowNo())
.setExtendId(it.getId())
.setCreateUserId(UserUtil.getUserId())
.setCreateUserName(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
.map(index ->
new WmsQrCodeMaster()
.setBarcodeCode(KeyUtil.next())
.setProcessStage(BarCodeProcessStage.Unpackaged.getState())
.setBarcodeType(BarCodeType.Purchase.getState())
.setMaterialCode(it.getMaterialNo())
.setMaterialDescription(it.getMaterialDesc())
.setPackagingType((short) 0)
.setQuantity(NumberUtil.getPackageNum(it.getBatchNum(), it.getMinPackageNum(), it.getLableNum(), index))
.setUnit(it.getUnit())
.setSupplierId(it.getSupplierId())
.setSupplierCode(it.getSupplierCode())
.setStorageLocation(it.getStorageLocation())
.setFactoryCode(it.getFactoryCode())
.setPoNumber(it.getExternalOrderNo())
.setBatchNo(it.getBatchNo())
.setSerialNo(getSerialNumber(it.getIndexNo(), index))
.setPoLineNumber(it.getRowNo())
.setExtendId(it.getId())
.setCreateUserId(UserUtil.getUserId())
.setCreateUserName(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
)
.toList()
)
@ -165,6 +181,15 @@ public class NormalOrderController extends BaseController {
return ApiResult.success();
}
private String getSerialNumber(String serialNumber, int index) {
String[] serialNumbers = serialNumber.split(",");
if (serialNumbers.length <= 0)
return serialNumber;
else {
return serialNumbers[index - 1];
}
}
/**
* 搜索
* @param request 请求参数
@ -258,6 +283,10 @@ public class NormalOrderController extends BaseController {
*/
@PostMapping("searchDeliverOrder")
public ApiResult<PageData<WmsSrmOrder>> searchDeliverOrder(@Valid @RequestBody @NotNull SearchDeliverOrderQO request) {
//判断当前的用户是否是供应商如果是供应商只能查找自己的送货单
if (UserUtil.getType().equals(UserType.Supplier)) {
request.setSupplierCode(UserUtil.getUserNo());
}
return ApiResult.success(srmOrderService.search(request));
}
@ -401,6 +430,7 @@ public class NormalOrderController extends BaseController {
*/
@PostMapping("exportBoxImageZip")
public ResponseEntity<byte[]> exportBoxImageZip(@RequestBody @NotEmpty List<MaterialMinQO> materials) throws Exception {
//TODO 箱子码
List<WmsQrCodeMaster> qrCodeMasters = materials.stream()
.map(it -> new WmsQrCodeMaster()
.setBarcodeCode(KeyUtil.next())
@ -410,6 +440,9 @@ public class NormalOrderController extends BaseController {
.setMaterialDescription(it.getMaterialDes())
.setPackagingType((short) 1)
.setCreateUserId(UserUtil.getUserId())
.setUnit("")
.setSupplierCode(it.getSupplierCode())
.setSupplierId(it.getSupplierId())
.setCreateUserName(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now()))
.toList();

View File

@ -203,7 +203,7 @@ public class NormalPGIController extends BaseController {
.setOrderNo(order.getNoteNum())
.setCreateUserName(UserUtil.getUserName())
.setFactoryCode(order.getIuCode())
.setIsCheck(false)
.setIsCheck((short) 0)
.setSourceType(0)
.setCreateUserId(UserUtil.getUserId());
@ -229,12 +229,11 @@ public class NormalPGIController extends BaseController {
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "");
if (qrCodeMaster.getPackagingType().equals(1)) {
code.setCodeNum(BigDecimal.ZERO);
List<WmsQrCodeMaster> childCode= qrCodeMasterService.lambdaQuery()
List<WmsQrCodeMaster> childCode = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId())
.list();
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱");
for (WmsQrCodeMaster child : childCode)
{
for (WmsQrCodeMaster child : childCode) {
item.getScanCodes().add(new PDAScanCodeQO()
.setBatchNumber(child.getBatchNo())
.setSerialNumbers(child.getSerialNo())
@ -418,7 +417,7 @@ public class NormalPGIController extends BaseController {
// )
// .toList()
// );
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
List<GoodReceiptDTO> dtos = new ArrayList<>();
GoodReceiptDTO dto = new GoodReceiptDTO()
.setWmsPoReceipt(wmsPoReceipt)
@ -955,6 +954,7 @@ public class NormalPGIController extends BaseController {
qo.setSerialNumbers("");
qo.setIuCode(order.getIuCode());
qo.setSupplierNum(order.getSupplierNum());
qo.setSupplierName(order.getSupplierName());
qo.setReceiptQty(item.getDeliveryQty().subtract(item.getReceiptQty()));
// 获取当前订单的物料属性
SAPSyncParamsDTO materialInfoInOrder = sapCommonService.getMaterialInfoInOrder(item.getPoNum(),
@ -1118,7 +1118,7 @@ public class NormalPGIController extends BaseController {
.setOrderNo(order.getNoteNum())
.setCreateUserName(UserUtil.getUserName())
.setFactoryCode(order.getIuCode())
.setIsCheck(false)
.setIsCheck((short) 0)
.setSourceType(1)
.setCreateUserId(UserUtil.getUserId());
wmsQcReceives.add(wmsQcReceive);
@ -1667,7 +1667,7 @@ public class NormalPGIController extends BaseController {
.setOrderNo(order.getNoteNum())
.setCreateUserName(UserUtil.getUserName())
.setFactoryCode(order.getIuCode())
.setIsCheck(false)
.setIsCheck((short) 0)
.setSourceType(0)
.setCreateUserId(UserUtil.getUserId());
for (SrmMaterialReceiptQO item : request.getReceiptQOS()) {
@ -1858,12 +1858,11 @@ public class NormalPGIController extends BaseController {
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "");
if (qrCodeMaster.getPackagingType().equals(1)) {
code.setCodeNum(BigDecimal.ZERO);
List<WmsQrCodeMaster> childCode= qrCodeMasterService.lambdaQuery()
List<WmsQrCodeMaster> childCode = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId())
.list();
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱");
for (WmsQrCodeMaster child : childCode)
{
for (WmsQrCodeMaster child : childCode) {
item.getScanCodes().add(new PDAScanCodeQO()
.setBatchNumber(child.getBatchNo())
.setSerialNumbers(child.getSerialNo())

View File

@ -154,6 +154,8 @@ public class StructuralPackageOrderController extends BaseController {
.setTransportNum(order.getTransportNum())
.setLbprt(order.getLbprt())
.setUnit(order.getMeins())
.setWerks(order.getWerks())
.setWarehouseNo(order.getWarehouseNo())
.setKzkri(order.getKzkri());
}
)

View File

@ -80,6 +80,7 @@ public class SAPCommonService {
SAPSyncParamsDTO syncParams = new SAPSyncParamsDTO();
syncParams.setMaktx(materialInfoInOrder.getMaktx());
syncParams.setWarehouseNo(materialInfoInOrder.getWarehouseNo());
syncParams.setEbelp(materialInfoInOrder.getEbelp());
syncParams.setMatnr(materialInfoInOrder.getMatnr());
syncParams.setMenge(materialInfoInOrder.getMenge());

View File

@ -103,6 +103,7 @@ public class SsoServerController {
StpUtil.login(user.getId(), new SaLoginParameter()
// .setDeviceType(devieType)
.setExtra(Constant.LOGIN_EXTRA_USER_NAME, Objects.equals(userType, UserType.Internal) ? user.getUserName() : supplier.getSupplierName())
.setExtra(Constant.LOGIN_EXTRA_PURCHASING_GROUP,Objects.equals(userType, UserType.Internal)?user.getPurchasingGroup():null)
.setExtra(Constant.LOGIN_EXTRA_USER_CODE, Objects.equals(userType, UserType.Internal) ? user.getUserCode() : supplier.getSupplierCode())
// .setExtra(Constant.LOGIN_EXTRA_USER_DEPARTMENT_ID, user.getDeptId())
.setExtra(Constant.LOGIN_EXTRA_USER_EMAIL, user.getEmail())

View File

@ -30,5 +30,7 @@ public class Constant {
public static final String DICTIONARY_FACTORY = "Factory";
public static String DICTIONARY_SUPPLIERS_CATEGORY="SuppliersCategory";
public static String DICTIONARY_SUPPLIERS_CATEGORY = "SuppliersCategory";
public static String LOGIN_EXTRA_PURCHASING_GROUP = "purchasing_group";
}

View File

@ -85,6 +85,7 @@ public class SAPOrderDTO {
/**
* 单位
*/
@JsonProperty("MEMINS")
private String unit;
/**
@ -101,4 +102,14 @@ public class SAPOrderDTO {
* 送货单行号
*/
private String lineNumber;
/**
* 仓库号
*/
private String warehouseNo;
/**
* 所属工厂
*/
private String werks;
}

View File

@ -82,6 +82,20 @@ public class DeliverNormalOrderSaveItemQO {
*/
private String indexNo;
/**
* 单位
*/
private String unit;
/**
* 仓库
*/
private String warehouseNo;
/**
* 所属工厂
*/
private String werks;
/**
* 标志
*/

View File

@ -14,4 +14,14 @@ public class MaterialMinQO {
* 物料描述
*/
private String materialDes;
/**
* 供应商code
*/
private String supplierCode;
/**
* 供应商Id
*/
private Long supplierId;
}

View File

@ -60,4 +60,8 @@ public class QCReceiptQO extends SearchBaseQO {
*/
private String inNum;
/**
* 是否质检 0 待检1 已检2 质检不良
*/
private Short isCheck;
}

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
@Data
@ -14,4 +15,11 @@ public class SearchDeliverOrderQO extends SearchBaseQO {
* 完成状态
*/
private Boolean completed;
/**
* 供应商编码
*/
@JsonIgnore
private String supplierCode;
}

View File

@ -1,6 +1,7 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
@ -13,7 +14,6 @@ public class Zwm3a07QO {
/**
* 工厂
* */
@NotBlank
private String i_werks;
/**
@ -24,6 +24,8 @@ public class Zwm3a07QO {
/**
* 订单号 多个订单号
* */
@NotNull
private List<String> aufnr;
/**

View File

@ -94,6 +94,11 @@ public class BarcodeLessReceivingVO {
private String supplierNum;
/**
* 供应商名称
*/
private String supplierName;
/**
* 是否质检
*/

View File

@ -74,7 +74,7 @@ public class QCReceiptVO {
/**
* 是否已开检
*/
private Boolean isCheck;
private Short isCheck;
/**
* 入库单来源类型

View File

@ -31,4 +31,8 @@ public class UserUtil {
public static UserType getType() {
return UserType.findByValue(Integer.parseInt(StpUtil.getExtra(Constant.LOGIN_EXTRA_USER_TYPE).toString()));
}
public static String getPurchaseGropu(){
return (String) StpUtil.getExtra(Constant.LOGIN_EXTRA_PURCHASING_GROUP);
}
}

View File

@ -18,7 +18,7 @@ import java.time.LocalDateTime;
* </p>
*
* @author 代码生成器生成
* @since 2025
* @since 2026
*/
@Getter
@Setter
@ -57,10 +57,10 @@ public class WmsNormalPrintOrder implements Serializable {
*/
private String rowNo;
// /**
// * 机台id
// */
// private Long workbenchId;
/**
* 机台id
*/
private Long workbenchId;
/**
* 物料编号
@ -108,7 +108,7 @@ public class WmsNormalPrintOrder implements Serializable {
private String batchNo;
/**
* 序列号
* 序列号多个用逗号分隔
*/
private String indexNo;
@ -136,4 +136,24 @@ public class WmsNormalPrintOrder implements Serializable {
* 标志
*/
private String lbprt;
/**
* 单位
*/
private String unit;
/**
* 供应商编号
*/
private String supplierCode;
/**
* 仓库
*/
private String storageLocation;
/**
* 所属工厂
*/
private String factoryCode;
}

View File

@ -78,13 +78,13 @@ public class WmsQcReceive implements Serializable {
*/
private Short isCompleted;
/**
* 是否已开检测
*/
private Boolean isCheck;
/**
* 收货属性 0 来源于扫码收货1 无码收货
*/
private Integer sourceType;
/**
* 0 待检1 已检2 质检不良
*/
private Short isCheck;
}

View File

@ -30,12 +30,13 @@ public class WmsSrmOrderServiceImpl extends ServiceImpl<WmsSrmOrderMapper, WmsSr
@Override
public IPage<WmsSrmOrder> search(SearchDeliverOrderQO request) {
return lambdaQuery()
.eq(StrUtil.isNotBlank(request.getOrderNo()),WmsSrmOrder::getNoteNum, request.getOrderNo())
.eq(StrUtil.isNotBlank(request.getOrderNo()), WmsSrmOrder::getNoteNum, request.getOrderNo())
.ge(Objects.nonNull(request.getStartDate()), WmsSrmOrder::getCreateTime, request.getStartDate())
.le(Objects.nonNull(request.getEndDate()), WmsSrmOrder::getCreateTime, request.getEndDate())
.eq(Objects.nonNull(request.getCompleted()), WmsSrmOrder::getIsCompleted, request.getCompleted())
.eq(StrUtil.isNotBlank(request.getSupplierCode()), WmsSrmOrder::getSupplierNum, request.getSupplierCode())
.eq(Objects.nonNull(request.getCompleted()), WmsSrmOrder::getIsCompleted, false)
.orderByDesc(WmsSrmOrder::getId)
.page(new Page<>(request.getPage(),request.getPageSize()));
.page(new Page<>(request.getPage(), request.getPageSize()));
}
@Override
@ -45,7 +46,7 @@ public class WmsSrmOrderServiceImpl extends ServiceImpl<WmsSrmOrderMapper, WmsSr
@Override
public List<PoReceiveTaskVO> getTask(String orederNo) {
return baseMapper.getTask(orederNo);
return baseMapper.getTask(orederNo);
}
// @Override

View File

@ -43,6 +43,7 @@
left join
wms_srm_order b on a.order_no = b.note_num
left join user_supplier c on b.supplier_num = c.supplier_code
<where>
<if test="request.inNum !=null and request.inNum !=''">
and a.in_no ilike concat('%', #{request.inNum}, '%')
@ -53,6 +54,9 @@
<if test="request.supplierNum !=null and request.supplierNum !=''">
and b.supplier_num =#{request.supplierNum}
</if>
<if test="request.isCheck !=null and request.isCheck !=''">
and a.is_check =#{request.isCheck}
</if>
<if test="request.poNumber !=null and request.poNumber !='' ">
and EXISTS (SELECT 1 FROM wms_qc_receive_item WHERE wms_qc_receive_item.receive_id = a.id and
wms_qc_receive_item.po_num ilike concat('%', #{request.poNumber}, '%'))

View File

@ -29,7 +29,8 @@
a.delivery_line_no,
sum(case when a.packaging_type = 0 then a.quantity else f.quantity end) as quantity
from wms_qr_code_master a
left join wms_warehouse b on a.storage_location = b."no"
left join dictionary_item x on a.factory_code=x.code
left join wms_warehouse b on a.storage_location = b."no" and x.id=b.factory_id
left join wms_bin c on a.bin_location = c."no"
left join user_supplier d on a.supplier_id = d."id"
left join wms_qr_code_master f on f.parent_barcode_id = a.id and f.process_stage = 6
@ -82,7 +83,8 @@
a.delivery_line_no,
a.quantity
from wms_qr_code_master a
left join wms_warehouse b on a.storage_location = b."no"
left join dictionary_item x on a.factory_code = x.code
left join wms_warehouse b on a.storage_location = b."no" and x.id = b.factory_id
left join wms_bin c on a.bin_location = c."no"
left join user_supplier d on a.supplier_id = d."id"
where a.parent_barcode_id = #{request.id}

View File

@ -33,7 +33,7 @@ public class CodeGeneratorTest {
)
.strategyConfig(builder -> {
builder
.addInclude("wms_package") //只生成指定表
.addInclude("wms_qc_receive") //只生成指定表
.entityBuilder().idType(IdType.ASSIGN_ID)
.enableLombok()
.enableChainModel()

View File

@ -171,9 +171,14 @@ public class SRMController extends BaseController {
.setAcceptTime(LocalDateTime.now());
try {
srmQualityInspectionService.save(inspect);
short isCheck = 1;
if (!inspect.getInspectionResult().equals("合格")) {
isCheck = 2;
}
qcReceiveService.lambdaUpdate()
.eq(WmsQcReceive::getOrderNo, inspect.getNoteNum())
.set(WmsQcReceive::getIsCheck, true)
.set(WmsQcReceive::getIsCheck, isCheck)
.update();
qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), inspect.getReceiveNum());
log.error("质检单生成上架任务成功");