Compare commits
No commits in common. "bb80178e2bada36de07bf9917848a37eea36225f" and "93924b741aa5f5756edf6c0a0b810d363f9c7a7f" have entirely different histories.
bb80178e2b
...
93924b741a
|
|
@ -1,24 +0,0 @@
|
||||||
package com.nflg.qms.admin.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
||||||
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableAsync
|
|
||||||
public class AsyncConfig {
|
|
||||||
|
|
||||||
@Bean("ticketTaskExecutor")
|
|
||||||
public Executor eventTaskExecutor() {
|
|
||||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
|
||||||
executor.setCorePoolSize(5);
|
|
||||||
executor.setMaxPoolSize(10);
|
|
||||||
executor.setQueueCapacity(100);
|
|
||||||
executor.setThreadNamePrefix("ticket-async-");
|
|
||||||
executor.initialize();
|
|
||||||
return executor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +1,17 @@
|
||||||
package com.nflg.qms.admin.controller;
|
package com.nflg.qms.admin.controller;
|
||||||
|
|
||||||
import com.nflg.qms.admin.service.QmsIssueTicketControllerService;
|
|
||||||
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.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
|
||||||
import com.nflg.wms.repository.entity.User;
|
|
||||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskNonconformanceService;
|
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskNonconformanceService;
|
||||||
import com.nflg.wms.repository.service.IUserService;
|
|
||||||
import com.nflg.wms.starter.BaseController;
|
import com.nflg.wms.starter.BaseController;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 来料检验任务不合格管理
|
* 来料检验任务不合格管理
|
||||||
|
|
@ -24,30 +23,11 @@ public class QmsIncomingInspectionTaskNonconformanceController extends BaseContr
|
||||||
@Resource
|
@Resource
|
||||||
private IQmsIncomingInspectionTaskNonconformanceService nonconformanceService;
|
private IQmsIncomingInspectionTaskNonconformanceService nonconformanceService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IUserService userService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private QmsIssueTicketControllerService issueTicketControllerService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询来料检验任务不合格管理列表
|
* 分页查询来料检验任务不合格管理列表
|
||||||
*/
|
*/
|
||||||
@PostMapping("search")
|
@PostMapping("search")
|
||||||
public ApiResult<PageData<QmsIncomingInspectionTaskNonconformanceVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskNonconformanceSearchQO request) {
|
public ApiResult<PageData<QmsIncomingInspectionTaskNonconformanceVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskNonconformanceSearchQO request) {
|
||||||
User user = userService.getById(UserUtil.getUserId());
|
|
||||||
request.setPurchaseGroup(user.getPurchasingGroup());
|
|
||||||
request.setIsWarehouseManager(UserUtil.getRoles().contains("仓库管理员"));
|
|
||||||
return ApiResult.success(nonconformanceService.search(request));
|
return ApiResult.success(nonconformanceService.search(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 发起工单:通过来料检测任务ID创建IQC检测任务类型质量问题工单
|
|
||||||
* 工单编号自动生成,来源类型固定为0(IQC检测任务)
|
|
||||||
*/
|
|
||||||
@PostMapping("initiate")
|
|
||||||
public ApiResult<Void> initiate(@RequestParam Long taskId) {
|
|
||||||
issueTicketControllerService.initiate(taskId);
|
|
||||||
return ApiResult.success();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
package com.nflg.qms.admin.event;
|
|
||||||
|
|
||||||
import org.springframework.context.ApplicationEvent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 来料检验任务完成事件
|
|
||||||
*/
|
|
||||||
public class IncomingInspectionTaskFinishEvent extends ApplicationEvent {
|
|
||||||
|
|
||||||
private final Long taskId;
|
|
||||||
private final Boolean inspectionResult;
|
|
||||||
private final String traceId;
|
|
||||||
|
|
||||||
public IncomingInspectionTaskFinishEvent(Object source, Long taskId, Boolean inspectionResult, String traceId) {
|
|
||||||
super(source);
|
|
||||||
this.taskId = taskId;
|
|
||||||
this.inspectionResult = inspectionResult;
|
|
||||||
this.traceId = traceId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getTaskId() {
|
|
||||||
return taskId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getInspectionResult() {
|
|
||||||
return inspectionResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTraceId() {
|
|
||||||
return traceId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
package com.nflg.qms.admin.listener;
|
|
||||||
|
|
||||||
import com.nflg.qms.admin.event.IncomingInspectionTaskFinishEvent;
|
|
||||||
import com.nflg.qms.admin.service.QmsIssueTicketControllerService;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.slf4j.MDC;
|
|
||||||
import org.springframework.context.event.EventListener;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@Component
|
|
||||||
public class TicketEventListener {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private QmsIssueTicketControllerService issueTicketControllerService;
|
|
||||||
|
|
||||||
@Async("ticketTaskExecutor")
|
|
||||||
@EventListener
|
|
||||||
public void handleIncomingInspectionTaskFinishEvent(IncomingInspectionTaskFinishEvent event) {
|
|
||||||
MDC.put("traceId", event.getTraceId());
|
|
||||||
try {
|
|
||||||
log.info("检验结果:{}", event.getInspectionResult() ? "合格" : "不合格");
|
|
||||||
if (event.getInspectionResult()) {
|
|
||||||
log.info("创建异常处理工单");
|
|
||||||
issueTicketControllerService.initiate(event.getTaskId());
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
MDC.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
package com.nflg.qms.admin.publisher;
|
|
||||||
|
|
||||||
import com.nflg.qms.admin.event.IncomingInspectionTaskFinishEvent;
|
|
||||||
import com.nflg.wms.common.constant.Constant;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.slf4j.MDC;
|
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class TicketEventPublisher {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ApplicationEventPublisher eventPublisher;
|
|
||||||
|
|
||||||
public void publishIncomingInspectionTaskFinishEvent(Long taskId, Boolean inspectionResult) {
|
|
||||||
IncomingInspectionTaskFinishEvent event = new IncomingInspectionTaskFinishEvent(
|
|
||||||
this, taskId, inspectionResult, MDC.get(Constant.TRACE_ID));
|
|
||||||
eventPublisher.publishEvent(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -4,8 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||||
import com.nflg.qms.admin.publisher.TicketEventPublisher;
|
|
||||||
import com.nflg.wms.common.constant.Constant;
|
|
||||||
import com.nflg.wms.common.constant.STATE;
|
import com.nflg.wms.common.constant.STATE;
|
||||||
import com.nflg.wms.common.exception.NflgException;
|
import com.nflg.wms.common.exception.NflgException;
|
||||||
import com.nflg.wms.common.pojo.qo.*;
|
import com.nflg.wms.common.pojo.qo.*;
|
||||||
|
|
@ -18,9 +16,7 @@ import jakarta.annotation.Resource;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.slf4j.MDC;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
|
@ -105,9 +101,6 @@ public class IncomingInspectionTaskControllerService {
|
||||||
@Resource
|
@Resource
|
||||||
private IFileUploadRecordService fileUploadRecordService;
|
private IFileUploadRecordService fileUploadRecordService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private TicketEventPublisher publisher;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 来料检验申请(对外接口)
|
* 来料检验申请(对外接口)
|
||||||
* 业务规则:
|
* 业务规则:
|
||||||
|
|
@ -191,7 +184,6 @@ public class IncomingInspectionTaskControllerService {
|
||||||
.setDeliveryOrderLine(request.getDeliveryOrderLine())
|
.setDeliveryOrderLine(request.getDeliveryOrderLine())
|
||||||
.setPurchaseOrderNo(request.getPurchaseOrderNo())
|
.setPurchaseOrderNo(request.getPurchaseOrderNo())
|
||||||
.setPurchaseOrderLine(request.getPurchaseOrderLine())
|
.setPurchaseOrderLine(request.getPurchaseOrderLine())
|
||||||
.setPurchaseGroup(request.getPurchaseGroup())
|
|
||||||
.setFactory(request.getFactory())
|
.setFactory(request.getFactory())
|
||||||
.setInspectionType(request.getInspectionType())
|
.setInspectionType(request.getInspectionType())
|
||||||
.setDataType(0)
|
.setDataType(0)
|
||||||
|
|
@ -952,7 +944,9 @@ public class IncomingInspectionTaskControllerService {
|
||||||
|
|
||||||
updateWrapper.update();
|
updateWrapper.update();
|
||||||
|
|
||||||
publisher.publishIncomingInspectionTaskFinishEvent(task.getId(), request.getQualified());
|
if (!request.getQualified()) {
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1028,7 +1022,6 @@ public class IncomingInspectionTaskControllerService {
|
||||||
QmsInspectionStandardItemContent content = finalContentMap.get(item.getInspectionStandardItemContentId());
|
QmsInspectionStandardItemContent content = finalContentMap.get(item.getInspectionStandardItemContentId());
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
vo.setTestStandard(content.getTestStandard());
|
vo.setTestStandard(content.getTestStandard());
|
||||||
vo.setLegend(content.getLegend());
|
|
||||||
vo.setJudgmentType(content.getJudgmentType());
|
vo.setJudgmentType(content.getJudgmentType());
|
||||||
|
|
||||||
// 根据检验标准项类型设置检测项名称
|
// 根据检验标准项类型设置检测项名称
|
||||||
|
|
@ -1081,8 +1074,4 @@ public class IncomingInspectionTaskControllerService {
|
||||||
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
||||||
return incomingInspectionTaskRecordItemService.getNonconformanceDataGroups(recordId);
|
return incomingInspectionTaskRecordItemService.getNonconformanceDataGroups(recordId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<QmsIssueTicketInspectionRecordItemSimpleVO> getUnqualifiedRecordItems(Long taskId) {
|
|
||||||
return incomingInspectionTaskRecordItemService.getUnqualifiedRecordItems(taskId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,16 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.wms.common.constant.STATE;
|
import com.nflg.wms.common.constant.STATE;
|
||||||
import com.nflg.wms.common.exception.NflgException;
|
import com.nflg.wms.common.exception.NflgException;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
|
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
|
||||||
import com.nflg.wms.common.pojo.vo.*;
|
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsIssueTicketDetailVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordItemDetailVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.common.util.VUtil;
|
|
||||||
import com.nflg.wms.repository.entity.FileUploadRecord;
|
import com.nflg.wms.repository.entity.FileUploadRecord;
|
||||||
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
|
||||||
import com.nflg.wms.repository.entity.QmsIssueTicket;
|
import com.nflg.wms.repository.entity.QmsIssueTicket;
|
||||||
import com.nflg.wms.repository.entity.VUser;
|
|
||||||
import com.nflg.wms.repository.service.IFileUploadRecordService;
|
import com.nflg.wms.repository.service.IFileUploadRecordService;
|
||||||
import com.nflg.wms.repository.service.IQmsIssueTicketService;
|
import com.nflg.wms.repository.service.IQmsIssueTicketService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
@ -21,8 +25,10 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -56,7 +62,7 @@ public class QmsIssueTicketControllerService {
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
// 自动生成工单编号
|
// 自动生成工单编号
|
||||||
String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(37);
|
String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(36);
|
||||||
|
|
||||||
QmsIssueTicket entity = new QmsIssueTicket()
|
QmsIssueTicket entity = new QmsIssueTicket()
|
||||||
.setSourceType((short) 2)
|
.setSourceType((short) 2)
|
||||||
|
|
@ -85,60 +91,6 @@ public class QmsIssueTicketControllerService {
|
||||||
issueTicketService.save(entity);
|
issueTicketService.save(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过来料检测任务ID发起IQC检测任务类型质量问题工单
|
|
||||||
* 工单编号自动生成,来源类型固定为0(IQC检测任务),状态默认为0(待流转)
|
|
||||||
*/
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void initiate(Long taskId) {
|
|
||||||
// 校验任务是否存在
|
|
||||||
QmsIncomingInspectionTaskVO detail = incomingInspectionTaskControllerService.getDetail(taskId);
|
|
||||||
VUtil.trueThrowBusinessError(issueTicketService.lambdaQuery().eq(QmsIssueTicket::getProjectNo, detail.getTaskNo()).exists())
|
|
||||||
.throwMessage("该任务已生成质量问题工单");
|
|
||||||
|
|
||||||
Long userId = UserUtil.getUserId();
|
|
||||||
String userName = UserUtil.getUserName();
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
|
|
||||||
// 自动生成工单编号
|
|
||||||
String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(36);
|
|
||||||
|
|
||||||
QmsIssueTicket entity = new QmsIssueTicket()
|
|
||||||
.setSourceType((short) 0)
|
|
||||||
.setSourceId(taskId)
|
|
||||||
.setTicketNo(ticketNo)
|
|
||||||
.setTicketTitle(generateTicketTitle(detail.getSupplierName(), detail.getMaterialNo()
|
|
||||||
, detail.getPurchaseOrderNo(), detail.getDeliveryOrderNo(), detail.getStandardVersion()))
|
|
||||||
.setProjectNo(detail.getTaskNo())
|
|
||||||
.setUnqualifiedQty(detail.getUnqualifiedQty())
|
|
||||||
.setCreateUserId(userId)
|
|
||||||
.setCreateUserName(userName)
|
|
||||||
.setCreateTime(now)
|
|
||||||
.setUpdateUserId(userId)
|
|
||||||
.setUpdateUserName(userName)
|
|
||||||
.setUpdateTime(now);
|
|
||||||
|
|
||||||
List<QmsIssueTicketInspectionRecordItemSimpleVO> unqualifiedRecordItems = incomingInspectionTaskControllerService.getUnqualifiedRecordItems(taskId);
|
|
||||||
Map<String, List<QmsIssueTicketInspectionRecordItemSimpleVO>> unqualifiedRecordItemsMap = unqualifiedRecordItems.stream()
|
|
||||||
.collect(Collectors.groupingBy(QmsIssueTicketInspectionRecordItemSimpleVO::getTestStandard));
|
|
||||||
unqualifiedRecordItemsMap.forEach((testStandard, items) -> {
|
|
||||||
AtomicReference<Integer> index = new AtomicReference<>(1);
|
|
||||||
entity.setIncidentDescription(entity.getIncidentDescription()
|
|
||||||
+ "检测标准:" + testStandard + "\n"
|
|
||||||
+ items.stream()
|
|
||||||
.map(item -> index.getAndSet(index.get() + 1) + ". " + item.getRemark() + "\n")
|
|
||||||
.collect(Collectors.joining())
|
|
||||||
+ "\n"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
issueTicketService.save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String generateTicketTitle(Object... args) {
|
|
||||||
return StrUtil.join("-", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询来料检测任务质量问题工单详情
|
* 查询来料检测任务质量问题工单详情
|
||||||
* 包含图片文件信息、来料检测任务详情、检验记录(含子项和样本数据)
|
* 包含图片文件信息、来料检测任务详情、检验记录(含子项和样本数据)
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,4 @@ public class ExternalIncomingInspectionApplyQO {
|
||||||
@NotNull(message = "检验数量不能为空")
|
@NotNull(message = "检验数量不能为空")
|
||||||
@Min(value = 1, message = "检验数量必须大于0")
|
@Min(value = 1, message = "检验数量必须大于0")
|
||||||
private Integer inspectionQty;
|
private Integer inspectionQty;
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购组
|
|
||||||
*/
|
|
||||||
@NotBlank(message = "采购组不能为空")
|
|
||||||
private String purchaseGroup;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
|
@ -103,16 +101,4 @@ public class QmsIncomingInspectionTaskNonconformanceSearchQO extends PageQO {
|
||||||
* 不合格处理状态:0=待办,1=处理中,2=处理完成
|
* 不合格处理状态:0=待办,1=处理中,2=处理完成
|
||||||
*/
|
*/
|
||||||
private Short nonconformanceStatus;
|
private Short nonconformanceStatus;
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购组
|
|
||||||
*/
|
|
||||||
@JsonIgnore
|
|
||||||
private String purchaseGroup;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否仓库管理员
|
|
||||||
*/
|
|
||||||
@JsonIgnore
|
|
||||||
private Boolean isWarehouseManager;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@ import java.time.LocalDateTime;
|
||||||
@Data
|
@Data
|
||||||
public class QmsIncomingInspectionTaskNonconformanceVO {
|
public class QmsIncomingInspectionTaskNonconformanceVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格管理记录ID
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 来料检验任务ID
|
* 来料检验任务ID
|
||||||
*/
|
*/
|
||||||
|
|
@ -20,16 +25,6 @@ public class QmsIncomingInspectionTaskNonconformanceVO {
|
||||||
*/
|
*/
|
||||||
private String taskNo;
|
private String taskNo;
|
||||||
|
|
||||||
/**
|
|
||||||
* 工单编号
|
|
||||||
*/
|
|
||||||
private String ticketNo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 工单标题
|
|
||||||
*/
|
|
||||||
private String ticketTitle;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料id
|
* 物料id
|
||||||
*/
|
*/
|
||||||
|
|
@ -151,7 +146,32 @@ public class QmsIncomingInspectionTaskNonconformanceVO {
|
||||||
private Boolean isOverdue;
|
private Boolean isOverdue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程状态:0=未发起,1=处理中,2=已完成
|
* 不合格处理状态:0=待办,1=处理中,2=处理完成
|
||||||
*/
|
*/
|
||||||
private Short status;
|
private Short nonconformanceStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格处理状态名称
|
||||||
|
*/
|
||||||
|
private String nonconformanceStatusName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格记录创建人ID
|
||||||
|
*/
|
||||||
|
private Long nonconformanceCreateUserId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格记录创建人姓名
|
||||||
|
*/
|
||||||
|
private String nonconformanceCreateUserName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格记录创建时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime nonconformanceCreateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格记录更新时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime nonconformanceUpdateTime;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,6 @@ public class QmsIncomingInspectionTaskRecordItemDetailVO {
|
||||||
*/
|
*/
|
||||||
private String testStandard;
|
private String testStandard;
|
||||||
|
|
||||||
/**
|
|
||||||
* 图例
|
|
||||||
*/
|
|
||||||
private String legend;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判定类型,0:直接判定;1:测量值
|
* 判定类型,0:直接判定;1:测量值
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
package com.nflg.wms.common.pojo.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class QmsIssueTicketInspectionRecordItemSimpleVO {
|
|
||||||
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
private String testStandard;
|
|
||||||
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,6 @@ package com.nflg.wms.repository.entity;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
@ -182,11 +181,6 @@ public class QmsIncomingInspectionTask implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer storageDays;
|
private Integer storageDays;
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购组
|
|
||||||
*/
|
|
||||||
private String purchaseGroup;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最近更新人id
|
* 最近更新人id
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.repository.mapper;
|
package com.nflg.wms.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemSimpleVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||||
|
|
||||||
|
|
@ -18,6 +17,4 @@ import java.util.List;
|
||||||
public interface QmsIncomingInspectionTaskRecordItemMapper extends BaseMapper<QmsIncomingInspectionTaskRecordItem> {
|
public interface QmsIncomingInspectionTaskRecordItemMapper extends BaseMapper<QmsIncomingInspectionTaskRecordItem> {
|
||||||
|
|
||||||
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
||||||
|
|
||||||
List<QmsIssueTicketInspectionRecordItemSimpleVO> getUnqualifiedRecordItems(Long taskId);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.repository.service;
|
package com.nflg.wms.repository.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemSimpleVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||||
|
|
||||||
|
|
@ -18,6 +17,4 @@ import java.util.List;
|
||||||
public interface IQmsIncomingInspectionTaskRecordItemService extends IService<QmsIncomingInspectionTaskRecordItem> {
|
public interface IQmsIncomingInspectionTaskRecordItemService extends IService<QmsIncomingInspectionTaskRecordItem> {
|
||||||
|
|
||||||
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
||||||
|
|
||||||
List<QmsIssueTicketInspectionRecordItemSimpleVO> getUnqualifiedRecordItems(Long taskId);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.repository.service.impl;
|
package com.nflg.wms.repository.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemSimpleVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||||
import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskRecordItemMapper;
|
import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskRecordItemMapper;
|
||||||
|
|
@ -25,9 +24,4 @@ public class QmsIncomingInspectionTaskRecordItemServiceImpl extends ServiceImpl<
|
||||||
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
||||||
return baseMapper.getNonconformanceDataGroups(recordId);
|
return baseMapper.getNonconformanceDataGroups(recordId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<QmsIssueTicketInspectionRecordItemSimpleVO> getUnqualifiedRecordItems(Long taskId) {
|
|
||||||
return baseMapper.getUnqualifiedRecordItems(taskId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,92 +4,103 @@
|
||||||
|
|
||||||
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO">
|
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO">
|
||||||
SELECT
|
SELECT
|
||||||
t.id as task_id,
|
n.id,
|
||||||
t.task_no,
|
n.task_id,
|
||||||
it.ticket_no,
|
t.task_no,
|
||||||
it.ticket_title,
|
t.material_id,
|
||||||
t.material_id,
|
m.material_no,
|
||||||
m.material_no,
|
m.material_desc,
|
||||||
m.material_desc,
|
m.drawing_no_ver,
|
||||||
m.drawing_no_ver,
|
t.supplier_code,
|
||||||
t.supplier_code,
|
t.supplier_name,
|
||||||
t.supplier_name,
|
t.delivery_order_no,
|
||||||
t.delivery_order_no,
|
t.delivery_order_line,
|
||||||
t.delivery_order_line,
|
t.purchase_order_no,
|
||||||
t.purchase_order_no,
|
t.purchase_order_line,
|
||||||
t.purchase_order_line,
|
t.factory,
|
||||||
t.factory,
|
t.inspection_type,
|
||||||
t.inspection_type,
|
t.inspection_qty,
|
||||||
t.inspection_qty,
|
t.qualified_qty,
|
||||||
t.qualified_qty,
|
t.unqualified_qty,
|
||||||
t.unqualified_qty,
|
t.inspection_status,
|
||||||
t.inspection_status,
|
t.inspection_result,
|
||||||
t.inspection_result,
|
t.inspector_id,
|
||||||
t.inspector_id,
|
t.inspector_name,
|
||||||
t.inspector_name,
|
t.submit_time,
|
||||||
t.submit_time,
|
t.inspection_start_time,
|
||||||
t.inspection_start_time,
|
t.inspection_finish_time,
|
||||||
t.inspection_finish_time,
|
t.required_finish_time,
|
||||||
t.required_finish_time,
|
t.is_overdue,
|
||||||
t.is_overdue,
|
n.status AS nonconformance_status,
|
||||||
CASE WHEN it.status IS NULL THEN 0 ELSE it.status END AS status
|
CASE n.status
|
||||||
FROM qms_incoming_inspection_task t
|
WHEN 0 THEN '待办'
|
||||||
LEFT JOIN qms_issue_ticket it ON it.source_id = t.id
|
WHEN 1 THEN '处理中'
|
||||||
|
WHEN 2 THEN '处理完成'
|
||||||
|
END AS nonconformance_status_name,
|
||||||
|
n.create_user_id AS nonconformance_create_user_id,
|
||||||
|
n.create_user_name AS nonconformance_create_user_name,
|
||||||
|
n.create_time AS nonconformance_create_time,
|
||||||
|
n.update_time AS nonconformance_update_time
|
||||||
|
FROM qms_incoming_inspection_task_nonconformance n
|
||||||
|
INNER JOIN qms_incoming_inspection_task t ON n.task_id = t.id
|
||||||
INNER JOIN qms_qc_material m ON t.material_id = m.id
|
INNER JOIN qms_qc_material m ON t.material_id = m.id
|
||||||
WHERE t.inspection_status=2 and t.inspection_result=false
|
<where>
|
||||||
AND ((t.inspection_type=0 and t.purchase_group=#{request.purchaseGroup}) or (t.inspection_type=1 and #{request.isWarehouseManager}=true))
|
<if test="request.dataType != null">
|
||||||
<if test="request.dataType != null">
|
AND t.data_type = #{request.dataType}
|
||||||
AND t.data_type = #{request.dataType}
|
</if>
|
||||||
</if>
|
<if test="request.materialNo != null and request.materialNo != ''">
|
||||||
<if test="request.materialNo != null and request.materialNo != ''">
|
AND m.material_no ilike concat('%', #{request.materialNo}, '%')
|
||||||
AND m.material_no ilike concat('%', #{request.materialNo}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.purchaseOrderNo != null and request.purchaseOrderNo != ''">
|
||||||
<if test="request.purchaseOrderNo != null and request.purchaseOrderNo != ''">
|
AND t.purchase_order_no ilike concat('%', #{request.purchaseOrderNo}, '%')
|
||||||
AND t.purchase_order_no ilike concat('%', #{request.purchaseOrderNo}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.supplierName != null and request.supplierName != ''">
|
||||||
<if test="request.supplierName != null and request.supplierName != ''">
|
AND t.supplier_name ilike concat('%', #{request.supplierName}, '%')
|
||||||
AND t.supplier_name ilike concat('%', #{request.supplierName}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.inspectorName != null and request.inspectorName != ''">
|
||||||
<if test="request.inspectorName != null and request.inspectorName != ''">
|
AND t.inspector_name ilike concat('%', #{request.inspectorName}, '%')
|
||||||
AND t.inspector_name ilike concat('%', #{request.inspectorName}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.inspectionStatus != null">
|
||||||
<if test="request.inspectionStatus != null">
|
AND t.inspection_status = #{request.inspectionStatus}
|
||||||
AND t.inspection_status = #{request.inspectionStatus}
|
</if>
|
||||||
</if>
|
<if test="request.factory != null and request.factory != ''">
|
||||||
<if test="request.factory != null and request.factory != ''">
|
AND t.factory = #{request.factory}
|
||||||
AND t.factory = #{request.factory}
|
</if>
|
||||||
</if>
|
<if test="request.warehouse != null and request.warehouse != ''">
|
||||||
<if test="request.warehouse != null and request.warehouse != ''">
|
AND t.warehouse = #{request.warehouse}
|
||||||
AND t.warehouse = #{request.warehouse}
|
</if>
|
||||||
</if>
|
<if test="request.deliveryOrderNo != null and request.deliveryOrderNo != ''">
|
||||||
<if test="request.deliveryOrderNo != null and request.deliveryOrderNo != ''">
|
AND t.delivery_order_no ilike concat('%', #{request.deliveryOrderNo}, '%')
|
||||||
AND t.delivery_order_no ilike concat('%', #{request.deliveryOrderNo}, '%')
|
</if>
|
||||||
</if>
|
<if test="request.inspectionResult != null">
|
||||||
<if test="request.inspectionResult != null">
|
AND t.inspection_result = #{request.inspectionResult}
|
||||||
AND t.inspection_result = #{request.inspectionResult}
|
</if>
|
||||||
</if>
|
<if test="request.isOverdue != null">
|
||||||
<if test="request.isOverdue != null">
|
AND t.is_overdue = #{request.isOverdue}
|
||||||
AND t.is_overdue = #{request.isOverdue}
|
</if>
|
||||||
</if>
|
<if test="request.submitStartDate != null">
|
||||||
<if test="request.submitStartDate != null">
|
AND t.submit_time >= #{request.submitStartDate}
|
||||||
AND t.submit_time >= #{request.submitStartDate}
|
</if>
|
||||||
</if>
|
<if test="request.submitEndDate != null">
|
||||||
<if test="request.submitEndDate != null">
|
AND t.submit_time < #{request.submitEndDate} + INTERVAL '1 day'
|
||||||
AND t.submit_time < #{request.submitEndDate} + INTERVAL '1 day'
|
</if>
|
||||||
</if>
|
<if test="request.inspectionBeginStartDate != null">
|
||||||
<if test="request.inspectionBeginStartDate != null">
|
AND t.inspection_start_time >= #{request.inspectionBeginStartDate}
|
||||||
AND t.inspection_start_time >= #{request.inspectionBeginStartDate}
|
</if>
|
||||||
</if>
|
<if test="request.inspectionBeginEndDate != null">
|
||||||
<if test="request.inspectionBeginEndDate != null">
|
AND t.inspection_start_time < #{request.inspectionBeginEndDate} + INTERVAL '1 day'
|
||||||
AND t.inspection_start_time < #{request.inspectionBeginEndDate} + INTERVAL '1 day'
|
</if>
|
||||||
</if>
|
<if test="request.inspectionStartDate != null">
|
||||||
<if test="request.inspectionStartDate != null">
|
AND t.inspection_finish_time >= #{request.inspectionStartDate}
|
||||||
AND t.inspection_finish_time >= #{request.inspectionStartDate}
|
</if>
|
||||||
</if>
|
<if test="request.inspectionEndDate != null">
|
||||||
<if test="request.inspectionEndDate != null">
|
AND t.inspection_finish_time < #{request.inspectionEndDate} + INTERVAL '1 day'
|
||||||
AND t.inspection_finish_time < #{request.inspectionEndDate} + INTERVAL '1 day'
|
</if>
|
||||||
</if>
|
<if test="request.nonconformanceStatus != null">
|
||||||
ORDER BY t.id DESC
|
AND n.status = #{request.nonconformanceStatus}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY n.id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,4 @@
|
||||||
INNER JOIN qms_inspection_standard_item_content isic ON iitri.inspection_standard_item_content_id=isic."id"
|
INNER JOIN qms_inspection_standard_item_content isic ON iitri.inspection_standard_item_content_id=isic."id"
|
||||||
INNER JOIN qms_inspection_standard_item isi ON isic.inspection_standard_item_id=isi."id"
|
INNER JOIN qms_inspection_standard_item isi ON isic.inspection_standard_item_id=isi."id"
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getUnqualifiedRecordItems"
|
|
||||||
resultType="com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemSimpleVO">
|
|
||||||
SELECT case when isi.item_type=0 THEN isi."name" ELSE isic."name" END as name,isic.test_standard,iitri.remark
|
|
||||||
FROM qms_incoming_inspection_task_record iitr
|
|
||||||
INNER JOIN qms_incoming_inspection_task_record_item iitri ON iitr."id"=iitri.record_id
|
|
||||||
INNER JOIN qms_inspection_standard_item_content isic ON isic."id"=iitri.inspection_standard_item_content_id
|
|
||||||
INNER JOIN qms_inspection_standard_item isi ON isic.inspection_standard_item_id=isi."id"
|
|
||||||
WHERE iitr.task_id=#{taskId}
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue