Compare commits
4 Commits
fa51777d6f
...
fcef170933
| Author | SHA1 | Date |
|---|---|---|
|
|
fcef170933 | |
|
|
4733ea8986 | |
|
|
de9799bcb4 | |
|
|
771fc37fe4 |
|
|
@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.retry.annotation.EnableRetry;
|
import org.springframework.retry.annotation.EnableRetry;
|
||||||
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -15,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
@EnableDiscoveryClient
|
@EnableDiscoveryClient
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@EnableRetry
|
@EnableRetry
|
||||||
|
@EnableAsync
|
||||||
public class QmsApplication {
|
public class QmsApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,21 @@ public class AsyncConfig {
|
||||||
executor.initialize();
|
executor.initialize();
|
||||||
return executor;
|
return executor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean(name = "wmsCallbackExecutor")
|
||||||
|
public Executor getAsyncExecutor() {
|
||||||
|
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||||
|
// 核心线程数(平时保持的线程数量)
|
||||||
|
executor.setCorePoolSize(5);
|
||||||
|
// 最大线程数(高峰期最多扩容到这个数量)
|
||||||
|
executor.setMaxPoolSize(20);
|
||||||
|
// 队列容量(核心线程满后,任务会放进队列,队列满后才扩容最大线程)
|
||||||
|
executor.setQueueCapacity(100);
|
||||||
|
// 线程空闲存活时间(秒)
|
||||||
|
executor.setKeepAliveSeconds(60);
|
||||||
|
// 线程名称前缀,方便在日志中排查问题
|
||||||
|
executor.setThreadNamePrefix("wms-callback-async-");
|
||||||
|
executor.initialize();
|
||||||
|
return executor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.qms.admin.controller;
|
package com.nflg.qms.admin.controller;
|
||||||
|
|
||||||
import com.nflg.qms.admin.service.IncomingInspectionTaskControllerService;
|
import com.nflg.qms.admin.service.IncomingInspectionTaskControllerService;
|
||||||
|
import com.nflg.qms.admin.service.WmsIncomingInspectionTaskCallbackService;
|
||||||
import com.nflg.wms.common.pojo.ApiResult;
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
import com.nflg.wms.common.pojo.PageData;
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
import com.nflg.wms.common.pojo.qo.*;
|
import com.nflg.wms.common.pojo.qo.*;
|
||||||
|
|
@ -28,6 +29,9 @@ public class QmsIncomingInspectionTaskController extends BaseController {
|
||||||
@Resource
|
@Resource
|
||||||
private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService;
|
private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询来料检测任务列表
|
* 分页查询来料检测任务列表
|
||||||
*/
|
*/
|
||||||
|
|
@ -131,5 +135,12 @@ public class QmsIncomingInspectionTaskController extends BaseController {
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调
|
||||||
|
*/
|
||||||
|
@PostMapping("callback")
|
||||||
|
public ApiResult<Void> callback(@RequestParam Long taskId){
|
||||||
|
wmsIncomingInspectionTaskCallbackService.process(taskId, (short) 0);
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,9 @@ public class IncomingInspectionTaskControllerService {
|
||||||
@Resource
|
@Resource
|
||||||
private QmsIssueTicketControllerService issueTicketControllerService;
|
private QmsIssueTicketControllerService issueTicketControllerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 来料检验申请(对外接口)
|
* 来料检验申请(对外接口)
|
||||||
* 业务规则:
|
* 业务规则:
|
||||||
|
|
@ -954,8 +957,12 @@ public class IncomingInspectionTaskControllerService {
|
||||||
|
|
||||||
updateWrapper.update();
|
updateWrapper.update();
|
||||||
|
|
||||||
|
if (task.getInspectionResult()) {
|
||||||
|
wmsIncomingInspectionTaskCallbackService.process(task.getId(), (short) 0);
|
||||||
|
} else {
|
||||||
issueTicketControllerService.initiate(task.getId());
|
issueTicketControllerService.initiate(task.getId());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询来料检验任务检验记录子项列表(含样本列表)
|
* 查询来料检验任务检验记录子项列表(含样本列表)
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,9 @@ public class QmsIssueTicketControllerService {
|
||||||
@Resource
|
@Resource
|
||||||
private QmsIssueTicketProcessControllerService issueTicketProcessControllerService;
|
private QmsIssueTicketProcessControllerService issueTicketProcessControllerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审核质量问题工单
|
* 审核质量问题工单
|
||||||
* 更新审批状态、审批意见、审批人信息、事故类型,并更新工单状态
|
* 更新审批状态、审批意见、审批人信息、事故类型,并更新工单状态
|
||||||
|
|
@ -88,6 +91,8 @@ public class QmsIssueTicketControllerService {
|
||||||
.setApprovalTime(now);
|
.setApprovalTime(now);
|
||||||
|
|
||||||
issueTicketService.updateById(entity);
|
issueTicketService.updateById(entity);
|
||||||
|
|
||||||
|
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package com.nflg.qms.admin.service;
|
package com.nflg.qms.admin.service;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.nflg.wms.common.pojo.ApiResult;
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.common.util.VUtil;
|
import com.nflg.wms.common.util.VUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|
@ -33,7 +35,6 @@ public class WmsApiService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 向WMS系统发送POST请求
|
* 向WMS系统发送POST请求
|
||||||
*
|
|
||||||
* @param path 接口路径
|
* @param path 接口路径
|
||||||
* @param body 请求体
|
* @param body 请求体
|
||||||
* @param bizDesc 业务描述,用于日志和异常提示
|
* @param bizDesc 业务描述,用于日志和异常提示
|
||||||
|
|
@ -45,6 +46,7 @@ public class WmsApiService {
|
||||||
|
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
headers.add("Authorization", StpUtil.getTokenValue());
|
||||||
HttpEntity<T> requestEntity = new HttpEntity<>(body, headers);
|
HttpEntity<T> requestEntity = new HttpEntity<>(body, headers);
|
||||||
|
|
||||||
log.info("{},URL: {},数据: {}", bizDesc, fullUrl, JSONUtil.toJsonStr(body));
|
log.info("{},URL: {},数据: {}", bizDesc, fullUrl, JSONUtil.toJsonStr(body));
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,19 @@
|
||||||
package com.nflg.qms.admin.service;
|
package com.nflg.qms.admin.service;
|
||||||
|
|
||||||
|
import com.nflg.wms.common.constant.STATE;
|
||||||
|
import com.nflg.wms.common.exception.NflgException;
|
||||||
import com.nflg.wms.common.pojo.qo.WmsIncomingInspectionTaskCallbackQO;
|
import com.nflg.wms.common.pojo.qo.WmsIncomingInspectionTaskCallbackQO;
|
||||||
import com.nflg.wms.common.pojo.qo.WmsInventoryInspectionTaskCallbackQO;
|
import com.nflg.wms.common.pojo.qo.WmsInventoryInspectionTaskCallbackQO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
|
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
|
||||||
|
import com.nflg.wms.common.util.VUtil;
|
||||||
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTask;
|
||||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
|
||||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskRecordService;
|
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskRecordService;
|
||||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
|
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -38,8 +43,7 @@ public class WmsIncomingInspectionTaskCallbackService {
|
||||||
/**
|
/**
|
||||||
* 向WMS系统发送来料检验任务回调
|
* 向WMS系统发送来料检验任务回调
|
||||||
*/
|
*/
|
||||||
public void incoming(Long taskId) {
|
private void incoming(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
|
||||||
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
|
|
||||||
WmsIncomingInspectionTaskCallbackQO qo = new WmsIncomingInspectionTaskCallbackQO()
|
WmsIncomingInspectionTaskCallbackQO qo = new WmsIncomingInspectionTaskCallbackQO()
|
||||||
.setTaskNo(taskVO.getTaskNo())
|
.setTaskNo(taskVO.getTaskNo())
|
||||||
.setInspectionType(taskVO.getInspectionType())
|
.setInspectionType(taskVO.getInspectionType())
|
||||||
|
|
@ -55,11 +59,12 @@ public class WmsIncomingInspectionTaskCallbackService {
|
||||||
.setQualifiedQty(taskVO.getQualifiedQty())
|
.setQualifiedQty(taskVO.getQualifiedQty())
|
||||||
.setUnqualifiedQty(taskVO.getUnqualifiedQty())
|
.setUnqualifiedQty(taskVO.getUnqualifiedQty())
|
||||||
.setInspectionResult(taskVO.getInspectionResult())
|
.setInspectionResult(taskVO.getInspectionResult())
|
||||||
.setPurchaseGroup(taskVO.getPurchaseGroup());
|
.setPurchaseGroup(taskVO.getPurchaseGroup())
|
||||||
|
.setProcessingResult(processingResult);
|
||||||
|
|
||||||
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
|
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
|
||||||
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
|
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
|
||||||
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
|
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
|
||||||
.list();
|
.list();
|
||||||
qo.setQualifiedMaterialUniqueNo(records.stream()
|
qo.setQualifiedMaterialUniqueNo(records.stream()
|
||||||
.filter(QmsIncomingInspectionTaskRecord::getQualified)
|
.filter(QmsIncomingInspectionTaskRecord::getQualified)
|
||||||
|
|
@ -72,14 +77,25 @@ public class WmsIncomingInspectionTaskCallbackService {
|
||||||
.toList()
|
.toList()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
boolean callbackResult = true;
|
||||||
|
try {
|
||||||
wmsApiService.post(incomingUrl, qo, "来料检验任务回调WMS");
|
wmsApiService.post(incomingUrl, qo, "来料检验任务回调WMS");
|
||||||
|
} catch (Exception e) {
|
||||||
|
callbackResult = false;
|
||||||
|
throw new NflgException(STATE.BusinessError, "调用WMS接口失败:" + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
incomingInspectionTaskService.lambdaUpdate()
|
||||||
|
.eq(QmsIncomingInspectionTask::getId, taskVO.getId())
|
||||||
|
.ne(QmsIncomingInspectionTask::getCallbackResult, true)
|
||||||
|
.set(QmsIncomingInspectionTask::getCallbackResult, callbackResult)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 向WMS系统发送库存检验任务回调
|
* 向WMS系统发送库存检验任务回调
|
||||||
*/
|
*/
|
||||||
public void inventory(Long taskId) {
|
private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
|
||||||
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
|
|
||||||
WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
|
WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
|
||||||
.setTaskNo(taskVO.getTaskNo())
|
.setTaskNo(taskVO.getTaskNo())
|
||||||
.setMaterialNo(taskVO.getMaterialNo())
|
.setMaterialNo(taskVO.getMaterialNo())
|
||||||
|
|
@ -90,11 +106,12 @@ public class WmsIncomingInspectionTaskCallbackService {
|
||||||
.setInspectionQty(taskVO.getInspectionQty())
|
.setInspectionQty(taskVO.getInspectionQty())
|
||||||
.setQualifiedQty(taskVO.getQualifiedQty())
|
.setQualifiedQty(taskVO.getQualifiedQty())
|
||||||
.setUnqualifiedQty(taskVO.getUnqualifiedQty())
|
.setUnqualifiedQty(taskVO.getUnqualifiedQty())
|
||||||
.setInspectionResult(taskVO.getInspectionResult());
|
.setInspectionResult(taskVO.getInspectionResult())
|
||||||
|
.setProcessingResult(processingResult);
|
||||||
|
|
||||||
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
|
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
|
||||||
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
|
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
|
||||||
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
|
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
|
||||||
.list();
|
.list();
|
||||||
qo.setQualifiedMaterialUniqueNo(records.stream()
|
qo.setQualifiedMaterialUniqueNo(records.stream()
|
||||||
.filter(QmsIncomingInspectionTaskRecord::getQualified)
|
.filter(QmsIncomingInspectionTaskRecord::getQualified)
|
||||||
|
|
@ -107,6 +124,49 @@ public class WmsIncomingInspectionTaskCallbackService {
|
||||||
.toList()
|
.toList()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
boolean callbackResult = true;
|
||||||
|
try {
|
||||||
wmsApiService.post(inventoryUrl, qo, "库存检验任务回调WMS");
|
wmsApiService.post(inventoryUrl, qo, "库存检验任务回调WMS");
|
||||||
|
} catch (Exception e) {
|
||||||
|
callbackResult = false;
|
||||||
|
throw new NflgException(STATE.BusinessError, "调用WMS接口失败:" + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
incomingInspectionTaskService.lambdaUpdate()
|
||||||
|
.eq(QmsIncomingInspectionTask::getId, taskVO.getId())
|
||||||
|
.ne(QmsIncomingInspectionTask::getCallbackResult, true)
|
||||||
|
.set(QmsIncomingInspectionTask::getCallbackResult, callbackResult)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WMS系统来料检验任务回调
|
||||||
|
* @param taskId 来料检验任务ID
|
||||||
|
* @param processingResult 处理结果:0=通过,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||||
|
*/
|
||||||
|
@Async("wmsCallbackExecutor")
|
||||||
|
public void processAsync(Long taskId, Short processingResult) {
|
||||||
|
process(taskId, processingResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WMS系统来料检验任务回调
|
||||||
|
* @param taskId 来料检验任务ID
|
||||||
|
* @param processingResult 处理结果:0=通过,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||||
|
*/
|
||||||
|
public void process(Long taskId, Short processingResult) {
|
||||||
|
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
|
||||||
|
VUtil.trueThrowBusinessError(taskVO.getCallbackResult()).throwMessage("请勿重复回调");
|
||||||
|
switch (taskVO.getInspectionType()) {
|
||||||
|
case 1:
|
||||||
|
incoming(taskVO,processingResult);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
inventory(taskVO,processingResult);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
VUtil.trueThrowBusinessError(true).throwMessage("无效的检验类型:" + taskVO.getInspectionType());
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,11 @@ public class WmsIncomingInspectionTaskCallbackQO {
|
||||||
*/
|
*/
|
||||||
private String purchaseGroup;
|
private String purchaseGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理结果:0=通过,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||||
|
*/
|
||||||
|
private Short processingResult = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合格物料唯一编号列表
|
* 合格物料唯一编号列表
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,11 @@ public class WmsInventoryInspectionTaskCallbackQO {
|
||||||
*/
|
*/
|
||||||
private Boolean inspectionResult;
|
private Boolean inspectionResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理结果:0=通过,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||||
|
*/
|
||||||
|
private Short processingResult = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合格物料唯一编号列表
|
* 合格物料唯一编号列表
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -182,6 +182,11 @@ public class QmsIncomingInspectionTaskVO {
|
||||||
*/
|
*/
|
||||||
private String purchaseGroup;
|
private String purchaseGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调结果
|
||||||
|
*/
|
||||||
|
private Boolean callbackResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最近更新人id
|
* 最近更新人id
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,11 @@ public class QmsIncomingInspectionTask implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String purchaseGroup;
|
private String purchaseGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调结果
|
||||||
|
*/
|
||||||
|
private Boolean callbackResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最近更新人id
|
* 最近更新人id
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,9 @@
|
||||||
t2.task_no as related_task_no,
|
t2.task_no as related_task_no,
|
||||||
t.update_user_id,
|
t.update_user_id,
|
||||||
t.update_user_name,
|
t.update_user_name,
|
||||||
t.update_time
|
t.update_time,
|
||||||
|
t.purchase_group,
|
||||||
|
t.callback_result
|
||||||
FROM qms_incoming_inspection_task t
|
FROM qms_incoming_inspection_task t
|
||||||
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
||||||
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
||||||
|
|
@ -209,7 +211,8 @@
|
||||||
t.purchase_group,
|
t.purchase_group,
|
||||||
t.warehouse,
|
t.warehouse,
|
||||||
t.storage_location,
|
t.storage_location,
|
||||||
t.storage_days
|
t.storage_days,
|
||||||
|
t.callback_result
|
||||||
FROM qms_incoming_inspection_task t
|
FROM qms_incoming_inspection_task t
|
||||||
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
||||||
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue