暂存版本

This commit is contained in:
zhangke 2025-08-18 18:15:20 +08:00
parent 0430e35af3
commit d77c8669a1
18 changed files with 449 additions and 126 deletions

View File

@ -0,0 +1,53 @@
package com.nflg.wms.admin.pojo.document;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
@Document(collection = "SrmMaterialReceiptScanCodes")
public class SrmMaterialReceiptScanCodes{
@Id
private String id;
/**
* 收货单的单号
*/
private String orderNo;
/***
* 收货单的单行ID号
*
*/
private String orderItemId;
/**
* 二维码编号
*/
private String codeId;
/**
* 数量
*/
@NotNull
private BigDecimal codeNum;
/**
* 批次号
*/
private String batchNumber;
/**
* 序列号
*/
private String serialNumbers;
/**
* 二维码内容
*/
private String codeContent;
}

View File

@ -0,0 +1,9 @@
package com.nflg.wms.admin.repository;
import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface SrmMaterialReceiptCanCodesRepository extends MongoRepository<SrmMaterialReceiptScanCodes, String> {
}

View File

@ -98,7 +98,6 @@ public class NormalPGIControllerService {
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).one();
if (Objects.isNull(order))
return null;
PDAOrderVO pdaOrderVO = new PDAOrderVO();
// 设置订单头基本信息
pdaOrderVO.setNoteNum(order.getNoteNum());
@ -164,7 +163,7 @@ public class NormalPGIControllerService {
if ("3".equals(lbprt) || "4".equals(lbprt)) {
VUtil.trueThrowBusinessError(
CollectionUtil.isEmpty(item.getScanCodes()) ||
item.getScanCodes().stream().anyMatch(code -> CollectionUtil.isEmpty(code.getSerialNumbers()))
item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getSerialNumbers()))
).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum());
}
}
@ -208,21 +207,25 @@ public class NormalPGIControllerService {
receipt.setCreateUserId(UserUtil.getUserId());
receipt.setCreateUserName(UserUtil.getUserName());
//条码内容
WmsSrmMaterialReceiptItem receiptItem = new WmsSrmMaterialReceiptItem();
receiptItem.setCodeId(scanCode.getCodeId());
receiptItem.setCodeNum(scanCode.getCodeNum());
receiptItem.setBatchNumber(scanCode.getBatchNumber());
receiptItem.setSerialNumber(scanCode.getSerialNumbers());
receiptItem.setCodeContent(scanCode.getCodeContent());
receiptItem.setOrderItemId(item.getOrderItemId());
receiptItem.setCreateUserId(UserUtil.getUserId());
receiptItem.setCreateUserName(UserUtil.getUserName());
receiptItem.setCreateTime(LocalDateTime.now());
receiptItem.setReceiptId(receiptId);
receiptItem.setId(IdUtil.getSnowflakeNextId());
receiptItems.add(receiptItem);
if (CollectionUtil.isNotEmpty(item.getScanCodes())) {
item.getScanCodes().forEach(scanCode -> {
WmsSrmMaterialReceiptItem receiptItem = new WmsSrmMaterialReceiptItem();
receiptItem.setCodeId(scanCode.getCodeId());
receiptItem.setCodeNum(scanCode.getCodeNum());
receiptItem.setBatchNumber(scanCode.getBatchNumber());
receiptItem.setSerialNumber(StrUtil.join(";", scanCode.getSerialNumbers()));
receiptItem.setCodeContent(scanCode.getCodeContent());
receiptItem.setOrderItemId(item.getOrderItemId());
receiptItem.setCreateUserId(UserUtil.getUserId());
receiptItem.setCreateUserName(UserUtil.getUserName());
receiptItem.setCreateTime(LocalDateTime.now());
receiptItem.setReceiptId(receiptId);
receiptItem.setId(IdUtil.getSnowflakeNextId());
receiptItems.add(receiptItem);
if (isQuality) {
//质检物料发送到质检单
@ -291,8 +294,9 @@ public class NormalPGIControllerService {
//序列号和批次号验证
validateScanCodes(item, materialInfoInOrder);
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
// 生成相关单据
// 生成收货单任务单质检单 数据集合
generyReceipt(item, isQuality, materialInfoInOrder, receipts, receiptitems, tasks, srmLineVOListItems);
generateSAPData(item, materialInfoInOrder, zwm3A17DTOS);
});
//生成wms的单据

View File

@ -29,7 +29,7 @@ public class PDAScanCodeQO {
/**
* 序列号
*/
private List<String> serialNumbers;
private String serialNumbers;
/**
* 二维码内容

View File

@ -0,0 +1,119 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("wms_srm_material_qms_receipt_item")
public class WmsSrmMaterialQmsReceiptItem implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 收货单的ID
*/
private Long receiptId;
/**
* 订单id
*/
private Long orderId;
/**
* 送货单行号
*/
private String lineNumber;
/**
* 采购订单号
*/
private String poNum;
/**
* 采购订单行号
*/
private String poLineNumber;
/**
* 物料编码
*/
private String itemCode;
/**
* 物料描述
*/
private String itemName;
/**
* 单位
*/
private String uomCode;
/**
* 收货人编号
*/
private Long createUserId;
/**
* 收货人名称
*/
private String createUserName;
/**
* 扫描时间
*/
private LocalDateTime createTime;
/**
* 收货数量
*/
private BigDecimal receiptNum;
/**
* 仓库编号
*/
private String receivedWarehouse;
/**
* 储位
*/
private String storageLocation;
/**
* 已入库数量
*/
private BigDecimal inQty;
/**
* 已检数量
*/
private BigDecimal checkQty;
/**
* 送货单号
*/
private String noteNum;
}

View File

@ -1,5 +1,7 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
@ -7,7 +9,6 @@ import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -27,33 +28,59 @@ public class WmsSrmMaterialReceipt implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 普通物料送货单的详情ID
* 工厂
*/
private Long orderItemId;
private String iuCode;
/**
* 收货数量如果是需要质检的数量为0
* 送货单号
*/
private BigDecimal receiptNum;
private String noteNum;
/**
* 是否质检
* 采购组
*/
private Boolean isQuality;
private String purchaseGroup;
/**
* 越库数量
* 运单号
*/
private BigDecimal crossNumber;
private String waybillNum;
/**
* 收货数量
* 供应商编码
*/
private String supplierNum;
/**
* 供应商名称
*/
private String supplierName;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 公司
*/
private String ouCode;
/**
* 发货时间
*/
private LocalDateTime deliveryNoteDate;
/**
* 收货单编号
*/
private String receiptNo;
/**
* 收货人编号
*/
@ -63,4 +90,19 @@ public class WmsSrmMaterialReceipt implements Serializable {
* 收货人名称
*/
private String createUserName;
/**
* 是否存在质检的物料
*/
private Boolean isQuality;
/**
* 质检物料的入库状态 0 未完成1 已完成
*/
private Short qualitySapStatus;
/**
* 未质检物料的入库状态
*/
private Short sapStatus;
}

View File

@ -33,34 +33,44 @@ public class WmsSrmMaterialReceiptItem implements Serializable {
private Long id;
/**
* 收货信息ID
* 收货单的ID
*/
private Long receiptId;
/**
* 二维码编号
* 订单id
*/
private String codeId;
private Long orderId;
/**
* 数量
* 送货单行号
*/
private BigDecimal codeNum;
private String lineNumber;
/**
* 批次
* 采购订单
*/
private String batchNumber;
private String poNum;
/**
* 序列号,多个序列号使用;号隔开
* 采购订单行号
*/
private String serialNumber;
private String poLineNumber;
/**
* 二维码内容
* 物料编码
*/
private String codeContent;
private String itemCode;
/**
* 物料描述
*/
private String itemName;
/**
* 单位
*/
private String uomCode;
/**
* 收货人编号
@ -78,7 +88,27 @@ public class WmsSrmMaterialReceiptItem implements Serializable {
private LocalDateTime createTime;
/**
* 送货单的单号ID
* 收货数量
*/
private Long orderItemId;
private BigDecimal receiptNum;
/**
* 仓库编号
*/
private String receivedWarehouse;
/**
* 储位
*/
private String storageLocation;
/**
* 已入库数量
*/
private BigDecimal inQty;
/**
* 送货单号
*/
private String noteNum;
}

View File

@ -13,7 +13,7 @@ import java.math.BigDecimal;
/**
* <p>
*
*
* </p>
*
* @author 代码生成器生成
@ -95,4 +95,9 @@ public class WmsSrmOrderItem implements Serializable {
* 是否质检
*/
private Boolean isQuality;
/**
* 收货数量
*/
private BigDecimal receiptQty;
}

View File

@ -146,4 +146,9 @@ public class WmsSrmQualityInspection implements Serializable {
* 最后修改时间
*/
private LocalDateTime lastModifyTime;
/**
* SAP同步状态 0 已同步1 未同步
*/
private Short sapStatus;
}

View File

@ -0,0 +1,16 @@
package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface WmsSrmMaterialQmsReceiptItemMapper extends BaseMapper<WmsSrmMaterialQmsReceiptItem> {
}

View File

@ -0,0 +1,16 @@
package com.nflg.wms.repository.service;
import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface IWmsSrmMaterialQmsReceiptItemService extends IService<WmsSrmMaterialQmsReceiptItem> {
}

View File

@ -19,4 +19,6 @@ import jakarta.validation.Valid;
public interface IWmsSrmQualityInspectionService extends IService<WmsSrmQualityInspection> {
IPage<QualityInspectionVO> search(@Valid NomalQMOrderSearchQO request);
boolean saveQualityInspection(@Valid WmsSrmQualityInspection request);
}

View File

@ -0,0 +1,20 @@
package com.nflg.wms.repository.service.impl;
import com.nflg.wms.repository.entity.WmsSrmMaterialQmsReceiptItem;
import com.nflg.wms.repository.mapper.WmsSrmMaterialQmsReceiptItemMapper;
import com.nflg.wms.repository.service.IWmsSrmMaterialQmsReceiptItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Service
public class WmsSrmMaterialQmsReceiptItemServiceImpl extends ServiceImpl<WmsSrmMaterialQmsReceiptItemMapper, WmsSrmMaterialQmsReceiptItem> implements IWmsSrmMaterialQmsReceiptItemService {
}

View File

@ -2,24 +2,31 @@ package com.nflg.wms.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.NomalQMOrderSearchQO;
import com.nflg.wms.common.pojo.vo.QualityInspectionVO;
import com.nflg.wms.common.pojo.vo.StorageVO;
import com.nflg.wms.repository.entity.WmsBin;
import com.nflg.wms.repository.entity.WmsSrmQualityInspection;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.mapper.WmsSrmQualityInspectionMapper;
import com.nflg.wms.repository.service.IWmsSrmMaterialQmsReceiptItemService;
import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptItemService;
import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptService;
import com.nflg.wms.repository.service.IWmsSrmQualityInspectionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.postgresql.core.Utils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 服务实现类
* 服务实现类
* </p>
*
* @author 代码生成器生成
@ -28,8 +35,42 @@ import java.util.List;
@Service
public class WmsSrmQualityInspectionServiceImpl extends ServiceImpl<WmsSrmQualityInspectionMapper, WmsSrmQualityInspection> implements IWmsSrmQualityInspectionService {
@Resource
private IWmsSrmMaterialQmsReceiptItemService wmsSrmMaterialQmsReceiptItemService;
@Resource
private IWmsSrmMaterialReceiptService wmsSrmMaterialReceiptService;
@Override
public IPage<QualityInspectionVO> search(NomalQMOrderSearchQO request) {
return baseMapper.search(request,new Page<>(request.getPage(),request.getPageSize()));
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
}
@Override
@Transactional
public boolean saveQualityInspection(WmsSrmQualityInspection request) {
boolean result = this.save(request);
if (result) {
result = wmsSrmMaterialQmsReceiptItemService.update(
new LambdaUpdateWrapper<WmsSrmMaterialQmsReceiptItem>()
.setSql("check_qty = check_qty + " + request.getUnqualifiedQty().add(request.getQualifiedQty()))
.eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum())
.eq(WmsSrmMaterialQmsReceiptItem::getLineNumber, request.getLineNumber())
);
//修改状态
List<WmsSrmMaterialQmsReceiptItem> receiptItems = wmsSrmMaterialQmsReceiptItemService.lambdaQuery()
.eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum())
.apply("check_qty>in_qty")
.list();
//修改下状态
if (CollectionUtil.isNotEmpty(receiptItems)) {
// result =wmsSrmMaterialReceiptService.update(
// new LambdaUpdateWrapper<WmsSrmMaterialQmsReceiptItem>()
// .setSql("check_qty = check_qty + " + request.getUnqualifiedQty().add(request.getQualifiedQty()))
// .eq(WmsSrmMaterialQmsReceiptItem::getNoteNum, request.getNoteNum())
// .eq(WmsSrmMaterialQmsReceiptItem::getLineNumber, request.getLineNumber())
// );
}
return result;
}
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmMaterialQmsReceiptItemMapper">
</mapper>

View File

@ -17,10 +17,8 @@
select
a.inspection_num,a.factory,a.suppler_num as supplier_num,c.supplier_name,a.delivery_qty,a.inspection_result,a.item_code,a.inspection_type,
a.po_line_number,a.inspection_qty,a.item_name,a.unit,a.received_warehouse,a.unqualified_reason,a.po_num,a.receive_num,a.unqualified_qty,
a.qualified_qty,a.material_batch as receive_batch_num,a.serial_num,a.line_number,a.note_num,COALESCE(b.data_status,0) as
in_status
from wms_srm_quality_inspection a left join wms_in_task_item b on a.note_num=b.note_num and
a.line_number=b.line_number
a.qualified_qty,a.material_batch as receive_batch_num,a.serial_num,a.line_number,a.note_num,,a.sap_status as in_status
from wms_srm_quality_inspection a
left join user_supplier c on a.suppler_num=c.supplier_code
<where>
<if test="request.poNum !=null and request.poNum !='' ">

View File

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

View File

@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
@ -80,6 +81,7 @@ public class SRMController extends BaseController {
srmOrderItemService.saveBatch(request.getResultSet().stream().map(it -> {
WmsSrmOrderItem item = Convert.convert(WmsSrmOrderItem.class, it);
item.setOrderId(finalOrder.getId());
item.setReceiptQty(new BigDecimal(0));
return item;
}).toList());
return 0;
@ -97,82 +99,38 @@ public class SRMController extends BaseController {
@PostMapping("/SendNFInspect")
public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) {
Integer result = 1;
WmsSrmQualityInspection inspect = new WmsSrmQualityInspection()
.setId(IdUtil.getSnowflakeNextId())
.setInspectionNum(request.getInspectionNum())
.setFactory(request.getFactory())
.setDeliveryQty(request.getDeliveryQty())
.setInspectionResult(request.getInspectionResult())
.setItemCode(request.getItemCode())
.setSupplerNum(request.getSupplierNum())
.setInspectionType(request.getInspectionType())
.setPoLineNumber(String.valueOf(request.getPoLineNumber()))
.setInspectionQty(request.getInspectionQty())
.setItemName(request.getItemName())
.setUnit(request.getUnit())
.setReceivedWarehouse(request.getReceivedWarehouse())
.setUnqualifiedReason(request.getUnqualifiedReason())
.setReceiveNum(request.getReceiveNum())
.setPoNum(request.getPoNum())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setQualifiedQty(request.getQualifiedQty())
.setMaterialBatch(request.getMaterialBatch())
.setSerialNum(request.getSerialNum())
.setLineNumber(request.getLineNumber())
.setNoteNum(request.getNoteNum())
.setSapStatus((short) 0)
.setAcceptTime(LocalDateTime.now());
try {
WmsSrmQualityInspection inspect = srmQualityInspectionService.lambdaQuery()
.eq(WmsSrmQualityInspection::getInspectionNum, request.getInspectionNum())
.one();
List<WmsInTaskItem> tasks = new ArrayList<WmsInTaskItem>();
if (Objects.nonNull(inspect)) {
inspect.setFactory(request.getFactory())
.setDeliveryQty(request.getDeliveryQty())
.setInspectionResult(request.getInspectionResult())
.setItemCode(request.getItemCode())
.setItemName(request.getItemName())
.setSupplerNum(request.getSupplierNum())
.setInspectionType(request.getInspectionType())
.setPoLineNumber(String.valueOf(request.getPoLineNumber()))
.setInspectionQty(request.getInspectionQty())
.setUnit(request.getUnit())
.setReceivedWarehouse(request.getReceivedWarehouse())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setPoNum(request.getPoNum())
.setQualifiedQty(request.getQualifiedQty())
.setMaterialBatch(request.getMaterialBatch())
.setSerialNum(request.getSerialNum())
.setLineNumber(request.getLineNumber())
.setNoteNum(request.getNoteNum())
.setLastModifyTime(LocalDateTime.now());
result = srmQualityInspectionService.updateById(inspect) ? 0 : 1;
} else {
inspect = new WmsSrmQualityInspection()
.setId(IdUtil.getSnowflakeNextId())
.setInspectionNum(request.getInspectionNum())
.setFactory(request.getFactory())
.setDeliveryQty(request.getDeliveryQty())
.setInspectionResult(request.getInspectionResult())
.setItemCode(request.getItemCode())
.setItemName(request.getItemName())
.setSupplerNum(request.getSupplierNum())
.setInspectionType(request.getInspectionType())
.setPoLineNumber(String.valueOf(request.getPoLineNumber()))
.setInspectionQty(request.getInspectionQty())
.setUnit(request.getUnit())
.setReceivedWarehouse(request.getReceivedWarehouse())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setPoNum(request.getPoNum())
.setQualifiedQty(request.getQualifiedQty())
.setMaterialBatch(request.getMaterialBatch())
.setSerialNum(request.getSerialNum())
.setLineNumber(request.getLineNumber())
.setNoteNum(request.getNoteNum())
.setAcceptTime(LocalDateTime.now());
result = srmQualityInspectionService.save(inspect) ? 0 : 1;
}
tasks.add(
new WmsInTaskItem().setItemCode(request.getItemCode())
.setItemName(request.getItemName())
.setReceivedWarehouse(request.getReceivedWarehouse())
.setInspectionQty(request.getInspectionQty())
.setIsQuality(true)
.setFactory(request.getFactory())
.setFailResult(request.unqualifiedReason)
.setPoLineNumber(String.valueOf(request.getPoLineNumber()))
.setPoNum(request.getPoNum())
.setUnit(request.getUnit())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setQualifiedQty(request.getQualifiedQty())
.setSerialNumber(String.valueOf(request.getSerialNum()))
.setSerialNumber(String.valueOf(request.getSerialNum()))
.setLineNumber(String.valueOf(request.getLineNumber()))
.setNoteNum(request.getNoteNum())
.setInspectionOrder(request.receiveNum)
);
if (result == 0 && CollectionUtil.isNotEmpty(tasks))
if (!taskService.generateTask(tasks, (short) 1))
log.error("质检单生成上架任务失败");
return result;
result = srmQualityInspectionService.saveQualityInspection(inspect) ? 0 : 1;
if (result == 0) {
log.error("质检单生成上架任务成功");
return result;
} else
return "质检单生成上架任务失败";
} catch (Exception ex) {
log.error("SRM送货单保存失败", ex);
return ex.getMessage();