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

This commit is contained in:
yf001217 2026-06-15 17:34:14 +08:00
commit ce5ddd8aad
2 changed files with 63 additions and 31 deletions

View File

@ -476,8 +476,8 @@ public class IncomingInspectionTaskControllerService {
QmsIncomingInspectionTask newTask = new QmsIncomingInspectionTask()
.setRequestNo(task.getRequestNo())
.setTaskNo(taskNo)
.setMaterialId(task.getId())
.setInspectionStandardId(task.getId())
.setMaterialId(task.getMaterialId())
.setInspectionStandardId(task.getInspectionStandardId())
.setTestingMethodDictItemId(testingMethodDictItemId)
.setSupplierCode(task.getSupplierCode())
.setSupplierName(task.getSupplierName())
@ -501,10 +501,10 @@ public class IncomingInspectionTaskControllerService {
.setDetectionQty(task.getUnqualifiedQty());
incomingInspectionTaskService.save(newTask);
List<QmsIncomingInspectionTaskQr> qrs = incomingInspectionTaskQrService.lambdaQuery().eq(QmsIncomingInspectionTaskQr::getTaskId, taskId).list();
if (CollectionUtil.isNotEmpty(qrs)) {
if (incomingInspectionTaskQrService.lambdaQuery().eq(QmsIncomingInspectionTaskQr::getTaskId, taskId).exists()) {
incomingInspectionTaskQrService.saveBatch(incomingInspectionTaskRecordService.lambdaQuery()
.eq(QmsIncomingInspectionTaskRecord::getQualified, false)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
.gt(QmsIncomingInspectionTaskRecord::getUnqualifiedQty, 0)
.list()
.stream()
.map(record -> new QmsIncomingInspectionTaskQr()
@ -517,14 +517,14 @@ public class IncomingInspectionTaskControllerService {
QmsQualityInspector inspector = qualityInspectorService.getById(newTask.getInspectorId());
User inspectorUser = userService.getById(inspector.getUserId());
String typeName = newTask.getInspectionType() == 0 ? "来料" : "库存";
Long sourceTypeId = task.getInspectionType() == 0
Long sourceTypeId = newTask.getInspectionType() == 0
? dictionaryItemService.getIdByCode("MessageType", "IQCIncomingInspectionAdd")
: dictionaryItemService.getIdByCode("MessageType", "IQCInventoryInspectionAdd");
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setTitle("新的IQC" + typeName + "检测任务" + task.getTaskNo())
.setTitle("新的IQC" + typeName + "检测任务" + newTask.getTaskNo())
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setSourceTypeId(sourceTypeId)
.setSourceId(task.getId())
.setSourceId(newTask.getId())
.setCreateUserId(inspectorUser.getId())
.setCreateUserName(inspectorUser.getUserName())
.setCreateTime(LocalDateTime.now());
@ -1180,21 +1180,38 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update();
if (request.getQualified() && task.getQualifiedQty() > 0) {
// 异步回调需等当前事务提交后再触发否则异步线程可能读到未提交的旧状态导致回调数据错误或漏回调
Long taskId = task.getId();
long testingMethodId = dictionaryItemService.getIdByCode("InspectionStandardTestingMethod", "Full");
if (Objects.equals(task.getTestingMethodDictItemId(), testingMethodId)) {
//全检
if (TransactionSynchronizationManager.isSynchronizationActive()) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
wmsIncomingInspectionTaskCallbackService.processAsync(taskId, (short) 0);
wmsIncomingInspectionTaskCallbackService.processAsync(task.getId(), (short) 0);
}
});
} else {
wmsIncomingInspectionTaskCallbackService.processAsync(taskId, (short) 0);
wmsIncomingInspectionTaskCallbackService.processAsync(task.getId(), (short) 0);
}
if (task.getUnqualifiedQty() > 0) {
issueTicketControllerService.initiate(task.getId());
}
} else {
issueTicketControllerService.initiate(task.getId());
//抽样
if (request.getQualified()) {
if (TransactionSynchronizationManager.isSynchronizationActive()) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
wmsIncomingInspectionTaskCallbackService.processAsync(task.getId(), (short) 0);
}
});
} else {
wmsIncomingInspectionTaskCallbackService.processAsync(task.getId(), (short) 0);
}
} else {
issueTicketControllerService.initiate(task.getId());
}
}
}

View File

@ -11,10 +11,7 @@ import com.nflg.wms.repository.entity.QmsIncomingInspectionTask;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
import com.nflg.wms.repository.entity.QmsIssueTicket;
import com.nflg.wms.repository.entity.WmsInventory;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskRecordService;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import com.nflg.wms.repository.service.IWmsInventoryService;
import com.nflg.wms.repository.service.*;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@ -52,6 +49,9 @@ public class WmsIncomingInspectionTaskCallbackService {
@Resource
private IWmsInventoryService inventoryService;
@Resource
private IDictionaryItemService dictionaryItemService;
/**
* 向WMS系统发送来料检验任务回调
*/
@ -75,7 +75,6 @@ public class WmsIncomingInspectionTaskCallbackService {
.setProcessingResult(processingResult);
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
.list();
if (processingResult == 4) {
@ -86,11 +85,12 @@ public class WmsIncomingInspectionTaskCallbackService {
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(r.getUnqualifiedQty())
.setUnqualifiedQty(0)
.setQualifiedQty(r.getQualifiedQty()))
.toList()
);
}else if (processingResult == 2){
} else if (processingResult == 2) {
//退货
qo.setUnqualifiedQty(taskVO.getInspectionQty());
qo.setQualifiedQty(0);
qo.setQrCodes(records.stream()
@ -103,15 +103,29 @@ public class WmsIncomingInspectionTaskCallbackService {
.toList()
);
} else {
qo.setUnqualifiedQty(taskVO.getUnqualifiedQty());
qo.setQrCodes(records.stream()
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(r.getUnqualifiedQty())
.setQualifiedQty(r.getQualifiedQty()))
.toList()
);
long testingMethodId = dictionaryItemService.getIdByCode("InspectionStandardTestingMethod", "Full");
if (Objects.equals(taskVO.getTestingMethodDictItemId(), testingMethodId)) {
qo.setUnqualifiedQty(0);
qo.setQrCodes(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified)
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(0)
.setQualifiedQty(r.getQualifiedQty()))
.toList()
);
} else {
qo.setUnqualifiedQty(taskVO.getUnqualifiedQty());
qo.setQrCodes(records.stream()
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(r.getUnqualifiedQty())
.setQualifiedQty(r.getQualifiedQty()))
.toList()
);
}
}
// 注意本方法不可被 @Transactional 包裹否则下面"标记失败"的更新会随异常一起回滚导致失败状态丢失
@ -179,7 +193,8 @@ public class WmsIncomingInspectionTaskCallbackService {
private void updateCallbackResult(Long taskId, boolean callbackResult) {
incomingInspectionTaskService.lambdaUpdate()
.eq(QmsIncomingInspectionTask::getId, taskId)
.ne(QmsIncomingInspectionTask::getCallbackResult, true)
.and(w -> w.ne(QmsIncomingInspectionTask::getCallbackResult, true)
.or().isNull(QmsIncomingInspectionTask::getCallbackResult))
.set(QmsIncomingInspectionTask::getCallbackResult, callbackResult)
.update();
}