Merge remote-tracking branch 'origin/qms/develop' into qms/develop
This commit is contained in:
commit
ce5ddd8aad
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue