refactor(qms): 重构质检回调WMS服务以支持多种质检场景

- 在InspectionCompleteNotification中新增updateQty字段用于控制数量更新
- 重写IQcWmsCallbackService接口,分离质检完成、让步接收等不同回调场景
- 实现新的回调逻辑,根据质检结果更新WMS的不同inspectionType状态
- 添加对让步接收通过和不通过两种场景的分别处理
- 重构WMS回调服务实现,支持同时更新质检状态和分摊数量
- 弃用旧的回调方法并提供新的统一入口方法
- 优化代码结构,提高可维护性和扩展性
master
zangch@mesnac.com 4 days ago
parent 61bbadae25
commit 0263258f3e

@ -92,4 +92,13 @@ public class InspectionCompleteNotification implements Serializable {
*/
private String inspectionEndTime;
/**
*
* <p>
* 0=1=qualifiedQty
* <p>
* 使
*/
private String updateQty;
}

@ -1,80 +1,112 @@
package org.dromara.qms.service;
import org.dromara.qms.domain.vo.QcInspectionMainVo;
import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
import java.math.BigDecimal;
/**
* QMS WMS
* <p>
* QMS WMS
* 便
* <p>
* QcPDAServiceImpl
* 2026-01-15
* 1. PDA QMS WMS inspectionType
* 2. 便 Dubbo REST API
* 3. WMS inspectionType=4
* <p>
*
* - inspectionType: 0=, 1=, 2=, 3=
* - inspectionRequest: 0=, 1=
*
* @author zch
* @date 2026-01-15
*/
public interface IQcWmsCallbackService {
/**
* WMS
* <p>
*
* 1.
* 2. InspectionCompleteNotification
* 3. WMS Dubbo
* 4. inspection_type
* <p>
*
* - PDA QcPDAServiceImpl.submitInspection
* - QcUnqualifiedReviewServiceImpl.completeTask
* <p>
* @GlobalTransactional
*
* @param main
* @return true=false=
*/
boolean notifyWmsForQualified(QcInspectionMainVo main);
// ==================== 质检完成回调 ====================
/**
* WMS
* PDAWMS
* <p>
*
* 1.
* 2.
* 3. WMS Dubbo "合格"
* 4.
* WMS inspectionType
* - (qualifiedQty == inspectionQty) -> inspectionType='2'
* - (qualifiedQty == 0) -> inspectionType='3'
* - -> inspectionType='1'
* <p>
*
* - "让步接收"reviewResult='4'
* <p>
* @GlobalTransactional
*
* - (4)(7) WMS
* - PDA
*
* @param inspectionNo
* @param concessionQty
* @param batchCode
* @param main
* @return true=false=
*/
boolean notifyWmsInspectionComplete(QcInspectionMainVo main);
/**
* WMS
* <p>
*
* 1. qc_inspection_type='4'
* 2. qc_inspection_type='7'
* 3. remark
*
* @param main
* @return true=WMSfalse=
*/
boolean isFromWmsInspection(QcInspectionMainVo main);
// ==================== 让步接收回调 ====================
/**
* WMS
* <p>
*
* 1.
* 2. WMS inspectionType='2'
* 3. apportion_qty
*
* @param review
* @return true=false=
*/
boolean notifyWmsForConcession(String inspectionNo, java.math.BigDecimal concessionQty, String batchCode);
boolean notifyWmsForConcessionAccepted(QcUnqualifiedReviewVo review);
/**
* WMS
* <p>
*
* 1. WMS inspectionType='2'
* 2. apportion_qty qualifiedQty
*
* @param review
* @param qualifiedQty
* @return true=false=
*/
boolean notifyWmsForConcessionRejected(QcUnqualifiedReviewVo review, BigDecimal qualifiedQty);
// ==================== 工具方法 ====================
/**
*
* <p>
* QcInspectionMainVo InspectionCompleteNotification
*
* @param main
* @param concessionQty null
* @param isConcession
* @return
*/
Object buildNotification(QcInspectionMainVo main, java.math.BigDecimal concessionQty, boolean isConcession);
/**
* WMS
* <p>
* "入库检"typeCode='7'
*
* @param main
* @return true=WMSfalse=
* @param qty null=使
* @param isConcession
* @return InspectionCompleteNotification
*/
boolean isFromWmsInspection(QcInspectionMainVo main);
Object buildNotification(QcInspectionMainVo main, BigDecimal qty, boolean isConcession);
// ==================== 兼容旧接口(保留但标记废弃) ====================
/**
* @deprecated 使 {@link #notifyWmsInspectionComplete(QcInspectionMainVo)}
*/
@Deprecated
boolean notifyWmsForQualified(QcInspectionMainVo main);
/**
* @deprecated 使 {@link #notifyWmsForConcessionAccepted(QcUnqualifiedReviewVo)}
*/
@Deprecated
boolean notifyWmsForConcession(String inspectionNo, BigDecimal concessionQty, String batchCode);
}

@ -10,6 +10,7 @@ import org.dromara.qms.api.dto.InspectionCompleteNotification;
import org.dromara.qms.domain.bo.QcInspectionMainBo;
import org.dromara.qms.domain.vo.QcInspectionMainVo;
import org.dromara.qms.domain.vo.QcInspectionTypeVo;
import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
import org.dromara.qms.service.IQcInspectionMainService;
import org.dromara.qms.service.IQcInspectionTypeService;
import org.dromara.qms.service.IQcWmsCallbackService;
@ -17,18 +18,27 @@ import org.dromara.wms.api.RemoteWmsInstockService;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* QMS WMS
* QMS WMS
* <p>
* QMS WMS
* QMS WMS inspectionType
* <p>
*
* 1. QcPDAServiceImpl
* 2. qcInspectionMainService
* 3. 便
* 2026-01-15
* 1. PDA QMS WMS
* 2. private 便
* - Dubbo REST API
* - 使
* -
* 3. WMS inspectionType=4
* <p>
*
* - -> inspectionType='2'
* - -> inspectionType='3'
* - -> inspectionType='1'
* - -> inspectionType='2'
* - -> inspectionType='2' + apportion_qty
*
* @author zch
* @date 2026-01-15
@ -39,178 +49,195 @@ import java.util.List;
public class QcWmsCallbackServiceImpl implements IQcWmsCallbackService {
/**
* WMS Dubbo
* WMS Dubbo
* <p>
* WMS RemoteWmsInspectionCallbackServiceImpl
* Dubbo REST API
*/
@DubboReference(timeout = 300000)
private RemoteWmsInstockService remoteWmsInstockService;
/**
*
*/
private final IQcInspectionMainService qcInspectionMainService;
/**
*
*/
private final IQcInspectionTypeService qcInspectionTypeService;
// ==================== 核心方法:质检完成回调 ====================
/**
* WMS
* PDAWMS
* <p>
* @GlobalTransactional
* WMS inspectionType
* - -> inspectionType='2'
* - -> inspectionType='3'
* - -> inspectionType='1'
*/
@Override
public boolean notifyWmsForQualified(QcInspectionMainVo main) {
// 1. 检查是否来自 WMS 入库
public boolean notifyWmsInspectionComplete(QcInspectionMainVo main) {
// 1. 检查是否需要回调 WMS
if (!isFromWmsInspection(main)) {
log.info("质检单 {} 不是来自 WMS 入库,跳过回调", main.getInspectionNo());
return false;
return true; // 无需回调视为成功
}
// 2. 检查是否有合格数量
if (main.getQualifiedQty() == null || main.getQualifiedQty().compareTo(BigDecimal.ZERO) <= 0) {
log.info("质检单 {} 无合格数量,跳过回调", main.getInspectionNo());
return false;
}
// 2. 获取质检类型(用于判断是否回调)
String qcInspectionType = getQcInspectionType(main);
// 3. 判断质检结果并调用对应的回调方法
BigDecimal qualifiedQty = main.getQualifiedQty() != null ? main.getQualifiedQty() : BigDecimal.ZERO;
BigDecimal unqualifiedQty = main.getUnqualifiedQty() != null ? main.getUnqualifiedQty() : BigDecimal.ZERO;
BigDecimal inspectionQty = main.getInspectionQty() != null ? main.getInspectionQty() : BigDecimal.ZERO;
// 全部合格:合格数量等于质检数量
if (qualifiedQty.compareTo(inspectionQty) >= 0 && unqualifiedQty.compareTo(BigDecimal.ZERO) == 0) {
log.info("质检单 {} 全部合格,回调 WMS 更新为'合格'", main.getInspectionNo());
return callbackWmsUpdateStatus(main, "2", null, qcInspectionType);
}
// 全部不合格合格数量为0
else if (qualifiedQty.compareTo(BigDecimal.ZERO) == 0) {
log.info("质检单 {} 全部不合格,回调 WMS 更新为'不合格'", main.getInspectionNo());
return callbackWmsUpdateStatus(main, "3", null, qcInspectionType);
}
// 部分合格部分不合格:保持质检中,等待评审
else {
log.info("质检单 {} 部分合格部分不合格,保持'质检中'等待评审。合格: {}, 不合格: {}",
main.getInspectionNo(), qualifiedQty, unqualifiedQty);
// 不回调 WMS保持原状态 inspectionType='1'
return true;
}
}
// ==================== 让步接收回调 ====================
/**
* WMS
* <p>
* inspectionType='2'apportion_qty
*/
@Override
public boolean notifyWmsForConcessionAccepted(QcUnqualifiedReviewVo review) {
try {
// 3. 构建通知参数
InspectionCompleteNotification notification = (InspectionCompleteNotification) buildNotification(
main, null, false
);
// 4. 调用 WMS Dubbo 接口
R<Void> result = remoteWmsInstockService.completeInstockAfterInspection(notification);
if (result == null || result.getCode() != R.SUCCESS) {
log.error("质检单 {} 回调 WMS 失败: {}", main.getInspectionNo(), result != null ? result.getMsg() : "null");
// 1. 获取质检主表
QcInspectionMainVo main = queryByInspectionNo(review.getInspectionNo());
if (main == null) {
log.error("让步接收回调失败:质检单不存在 {}", review.getInspectionNo());
return false;
}
log.info("质检单 {} 回调 WMS 成功,合格数量: {}", main.getInspectionNo(), main.getQualifiedQty());
if (!isFromWmsInspection(main)) {
log.info("质检单 {} 不是来自 WMS 入库,跳过回调", review.getInspectionNo());
return true;
}
String qcInspectionType = getQcInspectionType(main);
// 2. 回调 WMS更新状态为'合格',数量不变
log.info("让步接收通过,质检单 {} 回调 WMS 更新为'合格'", review.getInspectionNo());
return callbackWmsUpdateStatus(main, "2", null, qcInspectionType);
} catch (Exception e) {
log.error("让步接收通过回调 WMS 失败: {}", e.getMessage(), e);
return false;
}
}
/**
* WMS
* <p>
* inspectionType='2' apportion_qty
*/
@Override
public boolean notifyWmsForConcessionRejected(QcUnqualifiedReviewVo review, BigDecimal qualifiedQty) {
try {
// 1. 获取质检主表
QcInspectionMainVo main = queryByInspectionNo(review.getInspectionNo());
if (main == null) {
log.error("让步接收回调失败:质检单不存在 {}", review.getInspectionNo());
return false;
}
if (!isFromWmsInspection(main)) {
log.info("质检单 {} 不是来自 WMS 入库,跳过回调", review.getInspectionNo());
return true;
}
String qcInspectionType = getQcInspectionType(main);
// 2. 回调 WMS更新状态为'合格',同时更新数量为合格数量
log.info("让步接收不通过,质检单 {} 回调 WMS 更新为'合格',数量更新为: {}",
review.getInspectionNo(), qualifiedQty);
return callbackWmsUpdateStatus(main, "2", qualifiedQty, qcInspectionType);
} catch (Exception e) {
log.error("让步接收不通过回调 WMS 失败: {}", e.getMessage(), e);
return false;
}
}
// ==================== 抽离的回调方法(便于替换或注释) ====================
/**
* WMS Dubbo
* <p>
* 便
* 1. Dubbo REST API
* 2. 使
* 3.
*
* @param main
* @param targetInspectionType 2=3=
* @param updateQty null=
* @param qcInspectionType 4=7=
* @return
*/
private boolean callbackWmsUpdateStatus(QcInspectionMainVo main, String targetInspectionType,
BigDecimal updateQty, String qcInspectionType) {
// 【配置项】只有原材料检(4)或入库检(7)需要回调 WMS
// 可根据业务需求修改此判断条件,或直接注释掉整个方法体
if (!"4".equals(qcInspectionType) && !"7".equals(qcInspectionType)) {
log.info("检测类型 {} 不需要回调 WMS跳过", qcInspectionType);
return true;
}
try {
// 构建通知参数
InspectionCompleteNotification notification = (InspectionCompleteNotification)
buildNotification(main, updateQty, updateQty != null);
// 设置目标状态
notification.setResult("2".equals(targetInspectionType) ? "0" : "1"); // 0=合格, 1=不合格
// 如果需要更新数量
if (updateQty != null) {
notification.setUpdateQty("1"); // 标记需要更新数量
notification.setQualifiedQty(updateQty);
}
// 【可替换】调用 WMS Dubbo 接口
// 可替换为REST API 调用、其他 Dubbo 服务、或直接注释掉
R<Void> result = remoteWmsInstockService.completeInstockAfterInspection(notification);
if (result == null || result.getCode() != R.SUCCESS) {
log.error("质检单 {} 回调 WMS 失败: {}", main.getInspectionNo(),
result != null ? result.getMsg() : "null");
return false;
}
log.info("质检单 {} 回调 WMS 成功,目标状态: {}", main.getInspectionNo(), targetInspectionType);
return true;
} catch (Exception e) {
log.error("质检单 {} 回调 WMS 失败: {}", main.getInspectionNo(), e.getMessage(), e);
// 根据业务需求决定是否抛出异常
// 如果不影响主流程,可以只记录日志
return false;
}
}
/**
* WMS
* <p>
* @GlobalTransactional
*/
@Override
public boolean notifyWmsForConcession(String inspectionNo, BigDecimal concessionQty, String batchCode) {
try {
// 1. 获取质检主表信息
QcInspectionMainVo main = queryByInspectionNo(inspectionNo);
if (main == null) {
log.error("质检单不存在: {}", inspectionNo);
return false;
}
// 2. 检查是否来自 WMS 入库
if (!isFromWmsInspection(main)) {
log.info("质检单 {} 不是来自 WMS 入库,跳过回调", inspectionNo);
return false;
}
// 3. 构建通知参数(让步接收视为合格)
InspectionCompleteNotification notification = (InspectionCompleteNotification) buildNotification(
main, concessionQty, true
);
// 4. 调用 WMS Dubbo 接口
R<Void> result = remoteWmsInstockService.completeInstockAfterInspection(notification);
if (result == null || result.getCode() != R.SUCCESS) {
log.error("让步接收回调 WMS 失败: {}", result != null ? result.getMsg() : "null");
return false;
}
log.info("让步接收回调 WMS 成功,质检单号: {}, 批次号: {}, 数量: {}",
inspectionNo, batchCode, concessionQty);
return true;
} catch (Exception e) {
log.error("让步接收回调 WMS 失败: {}", e.getMessage(), e);
return false;
}
}
// ==================== 工具方法 ====================
/**
*
* WMS
* <p>
* QcInspectionMainVo InspectionCompleteNotification
*/
@Override
public Object buildNotification(QcInspectionMainVo main, BigDecimal concessionQty, boolean isConcession) {
InspectionCompleteNotification notification = new InspectionCompleteNotification();
// 基本信息
notification.setInspectionNo(main.getInspectionNo());
notification.setMaterialCode(main.getMaterialCode());
// 获取入库单号(优先从 remark 字段获取)
String instockCode = main.getRemark();
if (StringUtils.isBlank(instockCode)) {
log.warn("质检单 {} 的 remark 字段为空,无法获取入库单号", main.getInspectionNo());
}
notification.setInstockCode(instockCode);
// 批次号(保持一致性)
notification.setBatchCode(main.getBatchNo());
// 质检结果
if (isConcession) {
// 让步接收视为合格
notification.setResult("0"); // 合格
notification.setQualifiedQty(concessionQty);
notification.setUnqualifiedQty(BigDecimal.ZERO);
} else {
// 正常质检结果
notification.setResult(main.getResult()); // 0=合格, 1=不合格
notification.setQualifiedQty(main.getQualifiedQty());
notification.setUnqualifiedQty(main.getUnqualifiedQty());
}
// 质检状态
notification.setStatus("1"); // 已完成
// 质检完成时间(使用标准日期格式)
notification.setInspectionEndTime(main.getInspectionEndTime() != null
? DateUtils.formatDateTime(main.getInspectionEndTime())
: DateUtils.getTime());
return notification;
}
/**
*
* <p>
* queryList IQcInspectionMainService queryByInspectionNo
*
* @param inspectionNo
* @return null
*/
private QcInspectionMainVo queryByInspectionNo(String inspectionNo) {
if (StringUtils.isBlank(inspectionNo)) {
return null;
}
QcInspectionMainBo queryBo = new QcInspectionMainBo();
queryBo.setInspectionNo(inspectionNo);
List<QcInspectionMainVo> list = qcInspectionMainService.queryList(queryBo);
return (list != null && !list.isEmpty()) ? list.get(0) : null;
}
/**
* WMS
* <p>
* "入库检"typeCode='7'
*
* 1. qc_inspection_type='4'
* 2. qc_inspection_type='7'
* 3. remark
*/
@Override
public boolean isFromWmsInspection(QcInspectionMainVo main) {
@ -224,7 +251,96 @@ public class QcWmsCallbackServiceImpl implements IQcWmsCallbackService {
return false;
}
// 判断是否为入库检typeCode='7'
return "7".equals(typeVo.getTypeCode());
// 获取质检类型的 qc_inspection_type 字段
String qcInspectionType = typeVo.getQcInspectionType();
// 判断是否为原材料检(4)或入库检(7)
boolean isWmsType = "4".equals(qcInspectionType) || "7".equals(qcInspectionType);
// 同时需要 remark 字段存储了入库单号
boolean hasInstockCode = StringUtils.isNotBlank(main.getRemark());
return isWmsType && hasInstockCode;
}
/**
* qc_inspection_type
*/
private String getQcInspectionType(QcInspectionMainVo main) {
if (main == null || main.getInspectionType() == null) {
return null;
}
QcInspectionTypeVo typeVo = qcInspectionTypeService.queryById(main.getInspectionType());
return typeVo != null ? typeVo.getQcInspectionType() : null;
}
/**
*
*/
private QcInspectionMainVo queryByInspectionNo(String inspectionNo) {
if (StringUtils.isBlank(inspectionNo)) {
return null;
}
QcInspectionMainBo queryBo = new QcInspectionMainBo();
queryBo.setInspectionNo(inspectionNo);
List<QcInspectionMainVo> list = qcInspectionMainService.queryList(queryBo);
return (list != null && !list.isEmpty()) ? list.get(0) : null;
}
/**
*
*/
@Override
public Object buildNotification(QcInspectionMainVo main, BigDecimal qty, boolean isConcession) {
InspectionCompleteNotification notification = new InspectionCompleteNotification();
// 基本信息
notification.setInspectionNo(main.getInspectionNo());
notification.setMaterialCode(main.getMaterialCode());
notification.setInstockCode(main.getRemark()); // remark 存储入库单号
notification.setBatchCode(main.getBatchNo());
// 质检结果
if (isConcession) {
notification.setResult("0"); // 让步接收视为合格
notification.setQualifiedQty(qty != null ? qty : main.getQualifiedQty());
notification.setUnqualifiedQty(BigDecimal.ZERO);
} else {
notification.setResult(main.getResult());
notification.setQualifiedQty(main.getQualifiedQty());
notification.setUnqualifiedQty(main.getUnqualifiedQty());
}
notification.setStatus("1"); // 已完成
notification.setInspectionEndTime(main.getInspectionEndTime() != null
? DateUtils.formatDateTime(main.getInspectionEndTime())
: DateUtils.getTime());
return notification;
}
// ==================== 兼容旧接口(已废弃) ====================
/**
* @deprecated 使 {@link #notifyWmsInspectionComplete(QcInspectionMainVo)}
*/
@Override
@Deprecated
public boolean notifyWmsForQualified(QcInspectionMainVo main) {
return notifyWmsInspectionComplete(main);
}
/**
* @deprecated 使 {@link #notifyWmsForConcessionAccepted(QcUnqualifiedReviewVo)}
*/
@Override
@Deprecated
public boolean notifyWmsForConcession(String inspectionNo, BigDecimal concessionQty, String batchCode) {
log.warn("调用了已废弃的方法 notifyWmsForConcession请使用 notifyWmsForConcessionAccepted");
QcInspectionMainVo main = queryByInspectionNo(inspectionNo);
if (main == null) {
return false;
}
return callbackWmsUpdateStatus(main, "2", concessionQty, getQcInspectionType(main));
}
}

@ -10,17 +10,20 @@ import org.dromara.wms.service.IWmsInspectionCallbackService;
import org.dromara.wms.service.IWmsInstockPrintService;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
/**
* WMS
* WMS
* <p>
* QMS WMS
* QMS WMS inspectionType
* <p>
*
* 1. Dubbo RemoteWmsInspectionCallbackServiceImpl
* 2. 便
* 3. PDA
* 2026-01-15
* 1. PDA
* 2. apportion_qty
* <p>
*
* - inspectionType: 0=, 1=, 2=, 3=
*
* @author zch
* @date 2026-01-15
@ -30,15 +33,15 @@ import java.util.List;
@Service
public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackService {
/**
*
*/
private final IWmsInstockPrintService instockPrintService;
/**
*
* <p>
* QMS @GlobalTransactional
* WMS
* - result='0' -> inspectionType='2'
* - result='1' -> inspectionType='3'
* - updateQty='1' -> apportion_qty qualifiedQty
*/
@Override
public boolean handleInspectionComplete(InspectionCompleteNotification notification) {
@ -52,11 +55,13 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
String instockCode = notification.getInstockCode();
String batchCode = notification.getBatchCode();
String result = notification.getResult();
String updateQty = notification.getUpdateQty();
BigDecimal qualifiedQty = notification.getQualifiedQty();
log.info("收到 QMS 质检完成回调,质检单号: {}, 入库单号: {}, 批次号: {}, 结果: {}",
notification.getInspectionNo(), instockCode, batchCode, result);
log.info("收到 QMS 质检完成回调,质检单号: {}, 入库单号: {}, 批次号: {}, 结果: {}, 更新数量标记: {}",
notification.getInspectionNo(), instockCode, batchCode, result, updateQty);
// 2. 根据 instockCode + batchCode 精确查询打印记录
// 2. 精确查询打印记录
WmsInstockPrintVo printVo = queryByInstockAndBatch(instockCode, batchCode);
if (printVo == null) {
log.error("未找到入库打印记录。入库单号: {}, 批次号: {}", instockCode, batchCode);
@ -64,19 +69,46 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
}
// 3. 根据质检结果更新状态
if ("0".equals(result)) {
// 合格
return updateToQualified(instockCode, batchCode);
} else {
// 不合格
return updateToUnqualified(instockCode, batchCode);
String targetInspectionType = "0".equals(result) ? "2" : "3"; // 0=合格->2, 1=不合格->3
// 4. 判断是否需要更新数量(让步接收不通过场景)
BigDecimal newApportionQty = null;
if ("1".equals(updateQty) && qualifiedQty != null) {
newApportionQty = qualifiedQty;
log.info("让步接收不通过,需同时更新数量为: {}", newApportionQty);
}
return updateInspectionStatus(printVo.getInstockPrintId(), targetInspectionType, newApportionQty);
}
/**
*
*
* @param instockPrintId ID
* @param inspectionType 2=3=
* @param apportionQty null=
* @return
*/
private boolean updateInspectionStatus(Long instockPrintId, String inspectionType, BigDecimal apportionQty) {
WmsInstockPrintBo updateBo = new WmsInstockPrintBo();
updateBo.setInstockPrintId(instockPrintId);
updateBo.setInspectionType(inspectionType);
// 如果需要更新数量
if (apportionQty != null) {
updateBo.setApportionQty(apportionQty);
}
boolean result = instockPrintService.updateByBo(updateBo);
if (result) {
log.info("批次质检状态已更新。ID: {}, 状态: {}, 数量: {}",
instockPrintId, inspectionType, apportionQty);
}
return result;
}
/**
*
* <p>
* QMS @GlobalTransactional
*/
@Override
public boolean updateToQualified(String instockCode, String batchCode) {
@ -85,22 +117,11 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
log.error("未找到入库打印记录。入库单号: {}, 批次号: {}", instockCode, batchCode);
return false;
}
WmsInstockPrintBo updateBo = new WmsInstockPrintBo();
updateBo.setInstockPrintId(printVo.getInstockPrintId());
updateBo.setInspectionType("2"); // 合格
boolean result = instockPrintService.updateByBo(updateBo);
if (result) {
log.info("批次质检状态已更新为'合格'。入库单号: {}, 批次号: {}", instockCode, batchCode);
}
return result;
return updateInspectionStatus(printVo.getInstockPrintId(), "2", null);
}
/**
*
* <p>
* QMS @GlobalTransactional
*/
@Override
public boolean updateToUnqualified(String instockCode, String batchCode) {
@ -109,22 +130,11 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
log.error("未找到入库打印记录。入库单号: {}, 批次号: {}", instockCode, batchCode);
return false;
}
WmsInstockPrintBo updateBo = new WmsInstockPrintBo();
updateBo.setInstockPrintId(printVo.getInstockPrintId());
updateBo.setInspectionType("3"); // 不合格
boolean result = instockPrintService.updateByBo(updateBo);
if (result) {
log.info("批次质检状态已更新为'不合格'。入库单号: {}, 批次号: {}", instockCode, batchCode);
}
return result;
return updateInspectionStatus(printVo.getInstockPrintId(), "3", null);
}
/**
*
* <p>
* instockPrintService.queryList()
*/
@Override
public WmsInstockPrintVo queryByInstockAndBatch(String instockCode, String batchCode) {
@ -133,7 +143,6 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
return null;
}
// 复用现有服务方法查询
WmsInstockPrintBo queryBo = new WmsInstockPrintBo();
queryBo.setInstockCode(instockCode);
queryBo.setBatchCode(batchCode);
@ -142,8 +151,6 @@ public class WmsInspectionCallbackServiceImpl implements IWmsInspectionCallbackS
if (list == null || list.isEmpty()) {
return null;
}
// 精确匹配,应该只有一条记录
return list.get(0);
}
}

Loading…
Cancel
Save