Compare commits
4 Commits
e00ce37f4b
...
8f25bf27f2
| Author | SHA1 | Date |
|---|---|---|
|
|
8f25bf27f2 | |
|
|
26dd1383a0 | |
|
|
f3e41e69e6 | |
|
|
097a61ac21 |
|
|
@ -0,0 +1,58 @@
|
|||
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.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketDetailVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketVO;
|
||||
import com.nflg.wms.repository.service.IQmsIssueTicketService;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 质量问题工单管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/issueTicket")
|
||||
public class QmsIssueTicketController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private IQmsIssueTicketService issueTicketService;
|
||||
|
||||
@Resource
|
||||
private QmsIssueTicketControllerService issueTicketControllerService;
|
||||
|
||||
/**
|
||||
* 新增质量问题工单
|
||||
* 工单编号自动生成,来源类型固定为2(巡检)
|
||||
*/
|
||||
@PostMapping("add")
|
||||
public ApiResult<Void> add(@Valid @RequestBody QmsIssueTicketAddQO request) {
|
||||
issueTicketControllerService.add(request);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询来料检测任务质量问题工单详情
|
||||
* 含来料检测任务详情及来料检验任务检验记录子项样本列表
|
||||
*/
|
||||
@GetMapping("detail")
|
||||
public ApiResult<QmsIssueTicketDetailVO> detail(@NotNull(message = "ID不能为空") Long id) {
|
||||
return ApiResult.success(issueTicketControllerService.getDetail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询质量问题工单列表
|
||||
*/
|
||||
@PostMapping("search")
|
||||
public ApiResult<PageData<QmsIssueTicketVO>> search(@Valid @RequestBody QmsIssueTicketSearchQO request) {
|
||||
return ApiResult.success(issueTicketService.search(request));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.qms.admin.controller;
|
||||
|
||||
import com.nflg.qms.admin.service.QmsIssueTicketProcessControllerService;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 质量问题工单处理管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/issueTicketProcess")
|
||||
public class QmsIssueTicketProcessController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private QmsIssueTicketProcessControllerService issueTicketProcessControllerService;
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.qms.admin.controller;
|
||||
|
||||
import com.nflg.qms.admin.service.QmsIssueTicketProcessMeasureControllerService;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 质量问题工单处理解决措施管理
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/issueTicketProcessMeasure")
|
||||
public class QmsIssueTicketProcessMeasureController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private QmsIssueTicketProcessMeasureControllerService issueTicketProcessMeasureControllerService;
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import com.nflg.wms.common.pojo.ApiResult;
|
|||
import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemExportQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO;
|
||||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
|
|
@ -92,12 +93,11 @@ public class QmsPdiStatusItemController extends BaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 分页查询(按状态分组返回)
|
||||
* 分页查询(按状态分组,各自独立分页返回)
|
||||
*/
|
||||
@GetMapping("/search")
|
||||
public ApiResult<QmsPdiStatusItemGroupVO> search(
|
||||
@NotNull(message = "PDI检测规则ID不能为空") @RequestParam Long detectionRulesId) {
|
||||
return ApiResult.success(statusItemControllerService.search(detectionRulesId));
|
||||
public ApiResult<QmsPdiStatusItemGroupVO> search(@Valid QmsPdiStatusItemSearchQO request) {
|
||||
return ApiResult.success(statusItemControllerService.search(request));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class QmsPdiTaskRecordController extends BaseController {
|
|||
*/
|
||||
@PostMapping("detail")
|
||||
public ApiResult<QmsPdiTaskRecordDetailVO> detail(@Valid @RequestBody QmsPdiTaskRecordDetailQO request) {
|
||||
return ApiResult.success(taskRecordControllerService.detail(request.getId(), request.getPage(), request.getSize()));
|
||||
return ApiResult.success(taskRecordControllerService.detail(request));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -799,6 +799,9 @@ public class IncomingInspectionTaskControllerService {
|
|||
QmsIncomingInspectionTaskRecordItem ditem = new QmsIncomingInspectionTaskRecordItem()
|
||||
.setId(item.getId())
|
||||
.setRecordId(record.getId())
|
||||
.setInspectionQty(request.getInspectionQty())
|
||||
.setQualifiedQty(item.getQualifiedQty())
|
||||
.setUnqualifiedQty(item.getUnqualifiedQty())
|
||||
.setRemark(item.getRemark())
|
||||
.setInspectionStandardItemContentId(item.getInspectionStandardItemContentId());
|
||||
allItemEntities.add(ditem);
|
||||
|
|
@ -833,7 +836,7 @@ public class IncomingInspectionTaskControllerService {
|
|||
.setItemId(ditem.getId())
|
||||
.setQualified(data.getQualified())
|
||||
.setMeasuredValue(data.getMeasuredValue())
|
||||
.setImages(imageIds);
|
||||
.setImageIds(imageIds);
|
||||
if (data.getId() == null) {
|
||||
insertDatas.add(ddata);
|
||||
} else {
|
||||
|
|
@ -1047,10 +1050,10 @@ public class IncomingInspectionTaskControllerService {
|
|||
dataVO.setItemId(data.getItemId());
|
||||
dataVO.setMeasuredValue(data.getMeasuredValue());
|
||||
dataVO.setQualified(data.getQualified());
|
||||
if (StrUtil.isNotBlank(data.getImages())) {
|
||||
if (StrUtil.isNotBlank(data.getImageIds())) {
|
||||
dataVO.setImages(
|
||||
fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, StrUtil.split(data.getImages(), ","))
|
||||
.in(FileUploadRecord::getId, StrUtil.split(data.getImageIds(), ","))
|
||||
.list()
|
||||
.stream()
|
||||
.map(file -> new FileUploadVO()
|
||||
|
|
@ -1067,4 +1070,8 @@ public class IncomingInspectionTaskControllerService {
|
|||
return vo;
|
||||
}).toList();
|
||||
}
|
||||
|
||||
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
||||
return incomingInspectionTaskRecordItemService.getNonconformanceDataGroups(recordId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,172 @@
|
|||
package com.nflg.qms.admin.service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
|
||||
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.repository.entity.FileUploadRecord;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
|
||||
import com.nflg.wms.repository.entity.QmsIssueTicket;
|
||||
import com.nflg.wms.repository.service.IFileUploadRecordService;
|
||||
import com.nflg.wms.repository.service.IQmsIssueTicketService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 质量问题工单 ControllerService
|
||||
* 质量问题工单 业务逻辑
|
||||
*/
|
||||
@Service
|
||||
@Component
|
||||
public class QmsIssueTicketControllerService {
|
||||
|
||||
@Resource
|
||||
private IQmsIssueTicketService issueTicketService;
|
||||
|
||||
@Resource
|
||||
private BasdeSerialNumberControllerService basdeSerialNumberControllerService;
|
||||
|
||||
@Resource
|
||||
private IFileUploadRecordService fileUploadRecordService;
|
||||
|
||||
@Resource
|
||||
private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService;
|
||||
|
||||
/**
|
||||
* 新增质量问题工单
|
||||
* 工单编号自动生成,来源类型固定为2(巡检),状态默认为0(待流转)
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void add(@Valid QmsIssueTicketAddQO request) {
|
||||
Long userId = UserUtil.getUserId();
|
||||
String userName = UserUtil.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 自动生成工单编号
|
||||
String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(36);
|
||||
|
||||
QmsIssueTicket entity = new QmsIssueTicket()
|
||||
.setSourceType((short) 2)
|
||||
.setTicketNo(ticketNo)
|
||||
.setTicketTitle(request.getTicketTitle())
|
||||
.setProjectNo(request.getProjectNo())
|
||||
.setIncidentType(request.getIncidentType())
|
||||
.setExceptionCode(request.getExceptionCode())
|
||||
.setUnqualifiedQty(request.getUnqualifiedQty())
|
||||
.setIncidentLocation(request.getIncidentLocation())
|
||||
.setIncidentDescription(request.getIncidentDescription())
|
||||
.setIncidentReason(request.getIncidentReason())
|
||||
.setIncidentConsequence(request.getIncidentConsequence())
|
||||
.setImageIds(request.getImages() == null
|
||||
? ""
|
||||
: StrUtil.join(",", request.getImages().stream().map(FileUploadVO::getId).toList())
|
||||
)
|
||||
.setRemark(request.getRemark())
|
||||
.setCreateUserId(userId)
|
||||
.setCreateUserName(userName)
|
||||
.setCreateTime(now)
|
||||
.setUpdateUserId(userId)
|
||||
.setUpdateUserName(userName)
|
||||
.setUpdateTime(now);
|
||||
|
||||
issueTicketService.save(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询来料检测任务质量问题工单详情
|
||||
* 包含图片文件信息、来料检测任务详情、检验记录(含子项和样本数据)
|
||||
*/
|
||||
public QmsIssueTicketDetailVO getDetail(Long id) {
|
||||
QmsIssueTicket entity = issueTicketService.getById(id);
|
||||
if (Objects.isNull(entity)) {
|
||||
throw new NflgException(STATE.BusinessError, "质量问题工单不存在");
|
||||
}
|
||||
|
||||
QmsIssueTicketDetailVO vo = BeanUtil.copyProperties(entity, QmsIssueTicketDetailVO.class);
|
||||
|
||||
// 解析图片ID列表并查询文件信息
|
||||
if (StrUtil.isNotBlank(entity.getImageIds())) {
|
||||
List<Long> imageIdList = Arrays.stream(entity.getImageIds().split(","))
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(imageIdList)) {
|
||||
List<FileUploadRecord> records = fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, imageIdList)
|
||||
.list();
|
||||
vo.setImages(records.stream()
|
||||
.map(file -> new FileUploadVO()
|
||||
.setId(file.getId())
|
||||
.setFileName(file.getFileName())
|
||||
.setUrl(file.getUrl())
|
||||
)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 查询关联的来料检测任务详情及检验记录
|
||||
if (Objects.nonNull(entity.getSourceId())) {
|
||||
// 来料检测任务详情
|
||||
QmsIncomingInspectionTaskVO taskDetail = incomingInspectionTaskControllerService.getDetail(entity.getSourceId());
|
||||
vo.setTaskDetail(taskDetail);
|
||||
|
||||
List<QmsIssueTicketInspectionRecordItemVO> datas = incomingInspectionTaskControllerService.getNonconformanceDataGroups(entity.getSourceId());
|
||||
List<QmsIssueTicketInspectionRecordItemVO> records = new ArrayList<>();
|
||||
datas.forEach(record -> {
|
||||
QmsIssueTicketInspectionRecordItemVO r = records.stream()
|
||||
.filter(item -> item.getId().equals(record.getId()))
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
QmsIssueTicketInspectionRecordItemVO r1 = new QmsIssueTicketInspectionRecordItemVO()
|
||||
.setId(record.getId())
|
||||
.setName(record.getName())
|
||||
.setLegend(record.getLegend())
|
||||
.setUnqualifiedQty(0)
|
||||
.setImageIds(record.getImageIds());
|
||||
records.add(r1);
|
||||
return r1;
|
||||
});
|
||||
r.setUnqualifiedQty(r.getUnqualifiedQty() + record.getUnqualifiedQty());
|
||||
r.setImageIds(StrUtil.join(",", r.getImageIds(), record.getImageIds()));
|
||||
});
|
||||
records.stream()
|
||||
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
|
||||
.forEach(record -> {
|
||||
record.setImages(fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, StrUtil.split(record.getImageIds(), ","))
|
||||
.list()
|
||||
.stream()
|
||||
.map(file -> new FileUploadVO()
|
||||
.setId(file.getId())
|
||||
.setFileName(file.getFileName())
|
||||
.setUrl(file.getUrl())
|
||||
)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
});
|
||||
vo.setRecords(records);
|
||||
}
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.nflg.qms.admin.service;
|
||||
|
||||
import com.nflg.wms.repository.service.IQmsIssueTicketProcessService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 质量问题工单处理 ControllerService
|
||||
*/
|
||||
@Service
|
||||
public class QmsIssueTicketProcessControllerService {
|
||||
|
||||
@Resource
|
||||
private IQmsIssueTicketProcessService issueTicketProcessService;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.nflg.qms.admin.service;
|
||||
|
||||
import com.nflg.wms.repository.service.IQmsIssueTicketProcessMeasureService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 质量问题工单处理解决措施 ControllerService
|
||||
*/
|
||||
@Service
|
||||
public class QmsIssueTicketProcessMeasureControllerService {
|
||||
|
||||
@Resource
|
||||
private IQmsIssueTicketProcessMeasureService issueTicketProcessMeasureService;
|
||||
}
|
||||
|
|
@ -2,12 +2,15 @@ package com.nflg.qms.admin.service;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemExportDTO;
|
||||
import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemImportDTO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO;
|
||||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
|
|
@ -212,38 +215,45 @@ public class QmsPdiStatusItemControllerService {
|
|||
// ========================= 分页查询 =========================
|
||||
|
||||
/**
|
||||
* 查询PDI检测项,按状态分组返回
|
||||
*
|
||||
* @param detectionRulesId PDI检测规则ID(必传)
|
||||
* 查询PDI检测项,按状态分组、各自独立分页返回
|
||||
*/
|
||||
public QmsPdiStatusItemGroupVO search(Long detectionRulesId) {
|
||||
List<QmsPdiDetectionRulesStatusItem> all = statusItemService.lambdaQuery()
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getDetectionRulesId, detectionRulesId)
|
||||
.orderByAsc(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.list();
|
||||
|
||||
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> staticList = all.stream()
|
||||
.filter(item -> Objects.equals(item.getStatus(), 0))
|
||||
.map(this::toVO)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> dynamicList = all.stream()
|
||||
.filter(item -> Objects.equals(item.getStatus(), 1))
|
||||
.map(this::toVO)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> specialList = all.stream()
|
||||
.filter(item -> Objects.equals(item.getStatus(), 2))
|
||||
.map(this::toVO)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
public QmsPdiStatusItemGroupVO search(QmsPdiStatusItemSearchQO request) {
|
||||
QmsPdiStatusItemGroupVO vo = new QmsPdiStatusItemGroupVO();
|
||||
vo.setStaticItems(staticList);
|
||||
vo.setDynamicItems(dynamicList);
|
||||
vo.setSpecialItems(specialList);
|
||||
// 静态检测项(status=0)
|
||||
vo.setStaticItems(buildStatusItemPage(request.getDetectionRulesId(), 0,
|
||||
request.getStaticPage(), request.getStaticSize()));
|
||||
// 动态检测项(status=1)
|
||||
vo.setDynamicItems(buildStatusItemPage(request.getDetectionRulesId(), 1,
|
||||
request.getDynamicPage(), request.getDynamicSize()));
|
||||
// 特殊检测项(status=2)
|
||||
vo.setSpecialItems(buildStatusItemPage(request.getDetectionRulesId(), 2,
|
||||
request.getSpecialPage(), request.getSpecialSize()));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按状态构建检测项分页数据
|
||||
*/
|
||||
private PageData<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> buildStatusItemPage(
|
||||
Long detectionRulesId, int status, int pageNum, int pageSize) {
|
||||
Page<QmsPdiDetectionRulesStatusItem> page = statusItemService.lambdaQuery()
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getDetectionRulesId, detectionRulesId)
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getStatus, status)
|
||||
.orderByAsc(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.page(new Page<>(pageNum, pageSize));
|
||||
|
||||
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> voList = page.getRecords().stream()
|
||||
.map(this::toVO)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
PageData<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> pd = new PageData<>();
|
||||
pd.setPage(pageNum);
|
||||
pd.setPageSize(pageSize);
|
||||
pd.setTotal((int) page.getTotal());
|
||||
pd.setItems(voList);
|
||||
return pd;
|
||||
}
|
||||
|
||||
private QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO toVO(QmsPdiDetectionRulesStatusItem item) {
|
||||
QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO vo = new QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO();
|
||||
vo.setId(item.getId());
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordDetailQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
|
||||
|
|
@ -100,10 +101,10 @@ public class QmsPdiTaskRecordControllerService {
|
|||
* 根据ID查询检测任务详情
|
||||
* - 检验结果统一:所有检测项均有结果 → "合格",否则为空
|
||||
* - 检验员:检测规则.质检负责人 → user.username
|
||||
* - 各类型检测项分页返回
|
||||
* - 静态/动态/特殊各自独立分页返回,装车前不分页
|
||||
*/
|
||||
public QmsPdiTaskRecordDetailVO detail(Long id, Integer page, Integer size) {
|
||||
QmsPdiTaskRecord record = taskRecordService.getById(id);
|
||||
public QmsPdiTaskRecordDetailVO detail(QmsPdiTaskRecordDetailQO request) {
|
||||
QmsPdiTaskRecord record = taskRecordService.getById(request.getId());
|
||||
if (Objects.isNull(record)) {
|
||||
throw new NflgException(STATE.BusinessError, "检测任务记录不存在");
|
||||
}
|
||||
|
|
@ -122,10 +123,10 @@ public class QmsPdiTaskRecordControllerService {
|
|||
|
||||
// 统一检验结果:所有检测项均有结果 → "合格",否则为空
|
||||
long totalResults = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, id)
|
||||
.eq(QmsPdiInspectionResults::getTaskId, request.getId())
|
||||
.count();
|
||||
long filledResults = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, id)
|
||||
.eq(QmsPdiInspectionResults::getTaskId, request.getId())
|
||||
.isNotNull(QmsPdiInspectionResults::getInspectionItemResults)
|
||||
.count();
|
||||
String inspectionResult = (totalResults > 0 && filledResults == totalResults) ? "合格" : null;
|
||||
|
|
@ -141,21 +142,20 @@ public class QmsPdiTaskRecordControllerService {
|
|||
vo.setInspectorName(inspectorName);
|
||||
vo.setDetectionCompletionTime(record.getDetectionCompletionTime());
|
||||
|
||||
// 分页参数
|
||||
int pageNum = page != null ? page : 1;
|
||||
int pageSize = size != null ? size : 20;
|
||||
// 静态检测项(type=0)独立分页
|
||||
vo.setStaticItems(buildStatusItemPage(record.getId(), 0,
|
||||
request.getStaticPage(), request.getStaticSize()));
|
||||
|
||||
// 静态检测项(type=0)分页
|
||||
vo.setStaticItems(buildStatusItemPage(record.getId(), 0, pageNum, pageSize));
|
||||
// 动态检测项(type=1)独立分页
|
||||
vo.setDynamicItems(buildStatusItemPage(record.getId(), 1,
|
||||
request.getDynamicPage(), request.getDynamicSize()));
|
||||
|
||||
// 动态检测项(type=1)分页
|
||||
vo.setDynamicItems(buildStatusItemPage(record.getId(), 1, pageNum, pageSize));
|
||||
// 特殊检测项(type=3)独立分页
|
||||
vo.setSpecialItems(buildStatusItemPage(record.getId(), 3,
|
||||
request.getSpecialPage(), request.getSpecialSize()));
|
||||
|
||||
// 特殊检测项(type=3)分页
|
||||
vo.setSpecialItems(buildStatusItemPage(record.getId(), 3, pageNum, pageSize));
|
||||
|
||||
// 准备发货(type=2)分页
|
||||
vo.setLoadingItems(buildLoadingItemPage(record.getId(), pageNum, pageSize));
|
||||
// 准备发货(type=2)不分页
|
||||
vo.setLoadingItems(buildLoadingItem(record.getId()));
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
|
@ -173,6 +173,8 @@ public class QmsPdiTaskRecordControllerService {
|
|||
List<QmsPdiInspectionResults> records = resultPage.getRecords();
|
||||
if (records.isEmpty()) {
|
||||
PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>();
|
||||
pd.setPage(pageNum);
|
||||
pd.setPageSize(pageSize);
|
||||
pd.setItems(List.of());
|
||||
pd.setTotal(0);
|
||||
return pd;
|
||||
|
|
@ -227,16 +229,17 @@ public class QmsPdiTaskRecordControllerService {
|
|||
}).collect(Collectors.toList());
|
||||
|
||||
PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>();
|
||||
pd.setPage(pageNum);
|
||||
pd.setPageSize(pageSize);
|
||||
pd.setItems(voList);
|
||||
pd.setTotal((int) resultPage.getTotal());
|
||||
return pd;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建准备发货(装车前)分页数据
|
||||
* 构建准备发货(装车前)数据(不分页)
|
||||
*/
|
||||
private PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> buildLoadingItemPage(
|
||||
Long taskId, int pageNum, int pageSize) {
|
||||
private QmsPdiTaskRecordDetailVO.LoadingItemVO buildLoadingItem(Long taskId) {
|
||||
// 查询装车前整体记录(type=2,只有一条)
|
||||
QmsPdiInspectionResults loadingResult = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, taskId)
|
||||
|
|
@ -244,10 +247,7 @@ public class QmsPdiTaskRecordControllerService {
|
|||
.one();
|
||||
|
||||
if (loadingResult == null) {
|
||||
PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> pd = new PageData<>();
|
||||
pd.setItems(List.of());
|
||||
pd.setTotal(0);
|
||||
return pd;
|
||||
return null;
|
||||
}
|
||||
|
||||
// 查询该任务单下所有装车前检查项明细
|
||||
|
|
@ -270,10 +270,7 @@ public class QmsPdiTaskRecordControllerService {
|
|||
// 构建返回结果
|
||||
QmsPdiTaskRecordDetailVO.LoadingItemVO vo = new QmsPdiTaskRecordDetailVO.LoadingItemVO();
|
||||
vo.setId(loadingResult.getId());
|
||||
|
||||
// 拆分图片/视频ID并转换为FileDetailVO
|
||||
vo.setInspectionItemImage(convertImageIdsToVO(loadingResult.getInspectionItemImage()));
|
||||
|
||||
vo.setInspectionItemResults(loadingResult.getInspectionItemResults());
|
||||
|
||||
// 构建明细列表
|
||||
|
|
@ -283,21 +280,16 @@ public class QmsPdiTaskRecordControllerService {
|
|||
QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO detailVO = new QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO();
|
||||
detailVO.setDeliveryItemId(lr.getDeliveryItemId());
|
||||
detailVO.setDeliveryItemResult(lr.getDeliveryItemResult());
|
||||
|
||||
|
||||
QmsPdiDetectionRulesDeliveryItem di = finalMap.get(lr.getDeliveryItemId());
|
||||
if (di != null) {
|
||||
detailVO.setChecklist(di.getChecklist());
|
||||
}
|
||||
|
||||
|
||||
detailList.add(detailVO);
|
||||
}
|
||||
vo.setDeliveryItemList(detailList);
|
||||
|
||||
// 包装成分页格式(只有1条)
|
||||
PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> pd = new PageData<>();
|
||||
pd.setItems(List.of(vo));
|
||||
pd.setTotal(1);
|
||||
return pd;
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -18,6 +18,18 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitItemQO {
|
|||
@NotNull(message = "检验标准项内容ID不能为空")
|
||||
private Long inspectionStandardItemContentId;
|
||||
|
||||
/**
|
||||
* 合格数量
|
||||
*/
|
||||
@NotNull(message = "合格数量不能为空")
|
||||
private Integer qualifiedQty;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
@NotNull(message = "不合格数量不能为空")
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 质量问题工单 新增参数
|
||||
*/
|
||||
@Data
|
||||
public class QmsIssueTicketAddQO {
|
||||
|
||||
/**
|
||||
* 工单标题
|
||||
*/
|
||||
@NotBlank(message = "工单标题不能为空")
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 工程编号
|
||||
*/
|
||||
private String projectNo;
|
||||
|
||||
/**
|
||||
* 事故类型:0=一般,1=较严重,2=严重
|
||||
*/
|
||||
@NotNull(message = "事故类型不能为空")
|
||||
private Short incidentType;
|
||||
|
||||
/**
|
||||
* 异常代码
|
||||
*/
|
||||
private String exceptionCode;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 事件地点
|
||||
*/
|
||||
private String incidentLocation;
|
||||
|
||||
/**
|
||||
* 事件描述
|
||||
*/
|
||||
private String incidentDescription;
|
||||
|
||||
/**
|
||||
* 事件原因
|
||||
*/
|
||||
private String incidentReason;
|
||||
|
||||
/**
|
||||
* 事件后果
|
||||
*/
|
||||
private String incidentConsequence;
|
||||
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
private List<FileUploadVO> images;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 质量问题工单 列表查询参数
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsIssueTicketSearchQO extends PageQO {
|
||||
|
||||
/**
|
||||
* 工单编号(模糊匹配)
|
||||
*/
|
||||
private String ticketNo;
|
||||
|
||||
/**
|
||||
* 工单标题(模糊匹配)
|
||||
*/
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 工程编号(模糊匹配)
|
||||
*/
|
||||
private String projectNo;
|
||||
|
||||
/**
|
||||
* 异常代码(精确匹配)
|
||||
*/
|
||||
private String exceptionCode;
|
||||
|
||||
/**
|
||||
* 工单类型/来源类型:0=IQC检测任务,1=PDI检测任务,2=巡检
|
||||
*/
|
||||
private Short ticketType;
|
||||
|
||||
/**
|
||||
* 工单状态:0=待流转,1=处理中,2=已完成
|
||||
*/
|
||||
private Short status;
|
||||
|
||||
/**
|
||||
* 事故类型:0=一般,1=较严重,2=严重
|
||||
*/
|
||||
private Short incidentType;
|
||||
|
||||
/**
|
||||
* 创建时间开始日期
|
||||
*/
|
||||
private LocalDate createTimeStart;
|
||||
|
||||
/**
|
||||
* 创建时间结束日期
|
||||
*/
|
||||
private LocalDate createTimeEnd;
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* PDI动静态检测项 分页查询请求参数(按状态分组,各自独立分页)
|
||||
*/
|
||||
@Data
|
||||
public class QmsPdiStatusItemSearchQO {
|
||||
|
||||
/**
|
||||
* PDI检测规则ID(必传)
|
||||
*/
|
||||
@NotNull(message = "PDI检测规则ID不能为空")
|
||||
private Long detectionRulesId;
|
||||
|
||||
/**
|
||||
* 静态检测项页码(默认1)
|
||||
*/
|
||||
private Integer staticPage = 1;
|
||||
|
||||
/**
|
||||
* 静态检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer staticSize = 20;
|
||||
|
||||
/**
|
||||
* 动态检测项页码(默认1)
|
||||
*/
|
||||
private Integer dynamicPage = 1;
|
||||
|
||||
/**
|
||||
* 动态检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer dynamicSize = 20;
|
||||
|
||||
/**
|
||||
* 特殊检测项页码(默认1)
|
||||
*/
|
||||
private Integer specialPage = 1;
|
||||
|
||||
/**
|
||||
* 特殊检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer specialSize = 20;
|
||||
}
|
||||
|
|
@ -16,12 +16,32 @@ public class QmsPdiTaskRecordDetailQO {
|
|||
private Long id;
|
||||
|
||||
/**
|
||||
* 页码(默认1)
|
||||
* 静态检测项页码(默认1)
|
||||
*/
|
||||
private Integer page = 1;
|
||||
private Integer staticPage = 1;
|
||||
|
||||
/**
|
||||
* 每页条数(默认20)
|
||||
* 静态检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer size = 20;
|
||||
private Integer staticSize = 20;
|
||||
|
||||
/**
|
||||
* 动态检测项页码(默认1)
|
||||
*/
|
||||
private Integer dynamicPage = 1;
|
||||
|
||||
/**
|
||||
* 动态检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer dynamicSize = 20;
|
||||
|
||||
/**
|
||||
* 特殊检测项页码(默认1)
|
||||
*/
|
||||
private Integer specialPage = 1;
|
||||
|
||||
/**
|
||||
* 特殊检测项每页条数(默认20)
|
||||
*/
|
||||
private Integer specialSize = 20;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,5 @@ public class QmsIncomingInspectionTaskRecordVO {
|
|||
/**
|
||||
* 检验记录项列表
|
||||
*/
|
||||
private List<QmsIncomingInspectionTaskRecordItemVO> items;
|
||||
private List<QmsIssueTicketInspectionRecordItemVO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 质量问题工单 详情视图对象
|
||||
*/
|
||||
@Data
|
||||
public class QmsIssueTicketDetailVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 来源类型:0=IQC检测任务,1=PDI检测任务,2=巡检
|
||||
*/
|
||||
private Short sourceType;
|
||||
|
||||
/**
|
||||
* 来源ID,关联对应检测任务表
|
||||
*/
|
||||
private Long sourceId;
|
||||
|
||||
/**
|
||||
* 工单编号
|
||||
*/
|
||||
private String ticketNo;
|
||||
|
||||
/**
|
||||
* 工单标题
|
||||
*/
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 工程编号
|
||||
*/
|
||||
private String projectNo;
|
||||
|
||||
/**
|
||||
* 事故类型:0=一般,1=较严重,2=严重
|
||||
*/
|
||||
private Short incidentType;
|
||||
|
||||
/**
|
||||
* 异常代码
|
||||
*/
|
||||
private String exceptionCode;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 事件地点
|
||||
*/
|
||||
private String incidentLocation;
|
||||
|
||||
/**
|
||||
* 事件描述
|
||||
*/
|
||||
private String incidentDescription;
|
||||
|
||||
/**
|
||||
* 事件原因
|
||||
*/
|
||||
private String incidentReason;
|
||||
|
||||
/**
|
||||
* 事件后果
|
||||
*/
|
||||
private String incidentConsequence;
|
||||
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
private List<FileUploadVO> images;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 状态:0=待流转,1=处理中,2=已完成
|
||||
*/
|
||||
private Short status;
|
||||
|
||||
/**
|
||||
* 审批状态:0=通过,1=驳回,2=重检,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||
*/
|
||||
private Short approvalStatus;
|
||||
|
||||
/**
|
||||
* 审批意见
|
||||
*/
|
||||
private String approvalOpinion;
|
||||
|
||||
/**
|
||||
* 审批人姓名
|
||||
*/
|
||||
private String approvalUserName;
|
||||
|
||||
/**
|
||||
* 审批时间
|
||||
*/
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String createUserName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人姓名
|
||||
*/
|
||||
private String updateUserName;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 来料检测任务详情
|
||||
*/
|
||||
private QmsIncomingInspectionTaskVO taskDetail;
|
||||
|
||||
/**
|
||||
* 来料检验任务检验记录不合格列表
|
||||
*/
|
||||
private List<QmsIssueTicketInspectionRecordItemVO> records;
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 质量问题工单 - 来料检验记录子项及样本合并VO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class QmsIssueTicketInspectionRecordItemVO {
|
||||
|
||||
@JsonIgnore
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 检测项名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 图例
|
||||
*/
|
||||
private String legend;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
@JsonIgnore
|
||||
private String imageIds;
|
||||
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
private List<FileUploadVO> images=new ArrayList<>();
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 质量问题工单 列表视图对象
|
||||
*/
|
||||
@Data
|
||||
public class QmsIssueTicketVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 来源类型:0=IQC检测任务,1=PDI检测任务,2=巡检
|
||||
*/
|
||||
private Short sourceType;
|
||||
|
||||
/**
|
||||
* 来源ID
|
||||
*/
|
||||
private Long sourceId;
|
||||
|
||||
/**
|
||||
* 工单编号
|
||||
*/
|
||||
private String ticketNo;
|
||||
|
||||
/**
|
||||
* 工单标题
|
||||
*/
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 工程编号
|
||||
*/
|
||||
private String projectNo;
|
||||
|
||||
/**
|
||||
* 事故类型:0=一般,1=较严重,2=严重
|
||||
*/
|
||||
private Short incidentType;
|
||||
|
||||
/**
|
||||
* 异常代码
|
||||
*/
|
||||
private String exceptionCode;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 事件地点
|
||||
*/
|
||||
private String incidentLocation;
|
||||
|
||||
/**
|
||||
* 状态:0=待流转,1=处理中,2=已完成
|
||||
*/
|
||||
private Short status;
|
||||
|
||||
/**
|
||||
* 审批状态:0=通过,1=驳回,2=重检,3=报废,4=维修,5=挑选使用,6=让渡使用
|
||||
*/
|
||||
private Short approvalStatus;
|
||||
|
||||
/**
|
||||
* 审批人姓名
|
||||
*/
|
||||
private String approvalUserName;
|
||||
|
||||
/**
|
||||
* 审批时间
|
||||
*/
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String createUserName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人姓名
|
||||
*/
|
||||
private String updateUserName;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
|
@ -1,30 +1,31 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* PDI动静态检测项 分页查询返回VO(按状态分组)
|
||||
* PDI动静态检测项 分页查询返回VO(按状态分组,各自独立分页)
|
||||
*/
|
||||
@Data
|
||||
public class QmsPdiStatusItemGroupVO {
|
||||
|
||||
/**
|
||||
* 静态检测项列表(status=0)
|
||||
* 静态检测项(status=0,分页)
|
||||
*/
|
||||
private List<QmsPdiStatusItemVO> staticItems;
|
||||
private PageData<QmsPdiStatusItemVO> staticItems;
|
||||
|
||||
/**
|
||||
* 动态检测项列表(status=1)
|
||||
* 动态检测项(status=1,分页)
|
||||
*/
|
||||
private List<QmsPdiStatusItemVO> dynamicItems;
|
||||
private PageData<QmsPdiStatusItemVO> dynamicItems;
|
||||
|
||||
/**
|
||||
* 特殊检测项列表(status=2)
|
||||
* 特殊检测项(status=2,分页)
|
||||
*/
|
||||
private List<QmsPdiStatusItemVO> specialItems;
|
||||
private PageData<QmsPdiStatusItemVO> specialItems;
|
||||
|
||||
@Data
|
||||
public static class QmsPdiStatusItemVO {
|
||||
|
|
|
|||
|
|
@ -68,9 +68,9 @@ public class QmsPdiTaskRecordDetailVO {
|
|||
private PageData<StatusItemVO> specialItems;
|
||||
|
||||
/**
|
||||
* 准备发货列表(inspection_item_type=2,分页)
|
||||
* 准备发货(inspection_item_type=2,不分页)
|
||||
*/
|
||||
private PageData<LoadingItemVO> loadingItems;
|
||||
private LoadingItemVO loadingItems;
|
||||
|
||||
/**
|
||||
* 静态/动态/特殊检测项 子VO
|
||||
|
|
|
|||
|
|
@ -44,4 +44,19 @@ public class QmsIncomingInspectionTaskRecordItem implements Serializable {
|
|||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 样本数量
|
||||
*/
|
||||
private Integer inspectionQty;
|
||||
|
||||
/**
|
||||
* 合格数量
|
||||
*/
|
||||
private Integer qualifiedQty;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,5 +51,5 @@ public class QmsIncomingInspectionTaskRecordItemData {
|
|||
/**
|
||||
* 图片id列表,多个逗号分隔
|
||||
*/
|
||||
private String images;
|
||||
private String imageIds;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.nflg.wms.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 来料检验任务检验记录子项 Mapper 接口
|
||||
|
|
@ -13,4 +16,5 @@ import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
|||
*/
|
||||
public interface QmsIncomingInspectionTaskRecordItemMapper extends BaseMapper<QmsIncomingInspectionTaskRecordItem> {
|
||||
|
||||
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.nflg.wms.repository.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 来料检验任务检验记录子项 服务类
|
||||
|
|
@ -13,4 +16,5 @@ import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
|||
*/
|
||||
public interface IQmsIncomingInspectionTaskRecordItemService extends IService<QmsIncomingInspectionTaskRecordItem> {
|
||||
|
||||
List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.nflg.wms.repository.service;
|
||||
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketVO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.repository.entity.QmsIssueTicket;
|
||||
|
||||
|
|
@ -7,4 +10,9 @@ import com.nflg.wms.repository.entity.QmsIssueTicket;
|
|||
* 质量问题工单 Service
|
||||
*/
|
||||
public interface IQmsIssueTicketService extends IService<QmsIssueTicket> {
|
||||
|
||||
/**
|
||||
* 分页查询质量问题工单列表
|
||||
*/
|
||||
PageData<QmsIssueTicketVO> search(QmsIssueTicketSearchQO request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
package com.nflg.wms.repository.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem;
|
||||
import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskRecordItemMapper;
|
||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskRecordItemService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 来料检验任务检验记录子项 服务实现类
|
||||
|
|
@ -17,4 +20,8 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class QmsIncomingInspectionTaskRecordItemServiceImpl extends ServiceImpl<QmsIncomingInspectionTaskRecordItemMapper, QmsIncomingInspectionTaskRecordItem>
|
||||
implements IQmsIncomingInspectionTaskRecordItemService {
|
||||
@Override
|
||||
public List<QmsIssueTicketInspectionRecordItemVO> getNonconformanceDataGroups(Long recordId) {
|
||||
return baseMapper.getNonconformanceDataGroups(recordId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,23 @@
|
|||
package com.nflg.wms.repository.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIssueTicketVO;
|
||||
import com.nflg.wms.repository.entity.QmsIssueTicket;
|
||||
import com.nflg.wms.repository.mapper.QmsIssueTicketMapper;
|
||||
import com.nflg.wms.repository.service.IQmsIssueTicketService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 质量问题工单 ServiceImpl
|
||||
*/
|
||||
|
|
@ -13,4 +25,34 @@ import org.springframework.stereotype.Service;
|
|||
public class QmsIssueTicketServiceImpl
|
||||
extends ServiceImpl<QmsIssueTicketMapper, QmsIssueTicket>
|
||||
implements IQmsIssueTicketService {
|
||||
|
||||
@Override
|
||||
public PageData<QmsIssueTicketVO> search(QmsIssueTicketSearchQO request) {
|
||||
Page<QmsIssueTicket> page = new Page<>(request.getPage(), request.getPageSize());
|
||||
|
||||
var query = lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(request.getTicketNo()), QmsIssueTicket::getTicketNo, request.getTicketNo())
|
||||
.like(StrUtil.isNotBlank(request.getTicketTitle()), QmsIssueTicket::getTicketTitle, request.getTicketTitle())
|
||||
.like(StrUtil.isNotBlank(request.getProjectNo()), QmsIssueTicket::getProjectNo, request.getProjectNo())
|
||||
.eq(StrUtil.isNotBlank(request.getExceptionCode()), QmsIssueTicket::getExceptionCode, request.getExceptionCode())
|
||||
.eq(request.getTicketType() != null, QmsIssueTicket::getSourceType, request.getTicketType())
|
||||
.eq(request.getStatus() != null, QmsIssueTicket::getStatus, request.getStatus())
|
||||
.eq(request.getIncidentType() != null, QmsIssueTicket::getIncidentType, request.getIncidentType())
|
||||
.ge(request.getCreateTimeStart() != null, QmsIssueTicket::getCreateTime, request.getCreateTimeStart().atStartOfDay())
|
||||
.le(request.getCreateTimeEnd() != null, QmsIssueTicket::getCreateTime, request.getCreateTimeEnd().atTime(LocalTime.MAX))
|
||||
.orderByDesc(QmsIssueTicket::getCreateTime);
|
||||
|
||||
IPage<QmsIssueTicket> result = query.page(page);
|
||||
|
||||
List<QmsIssueTicketVO> voList = result.getRecords().stream()
|
||||
.map(entity -> BeanUtil.copyProperties(entity, QmsIssueTicketVO.class))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
PageData<QmsIssueTicketVO> pageData = new PageData<>();
|
||||
pageData.setPage((int) result.getCurrent());
|
||||
pageData.setPageSize((int) result.getSize());
|
||||
pageData.setTotal((int) result.getTotal());
|
||||
pageData.setItems(voList);
|
||||
return pageData;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,13 +34,14 @@
|
|||
t.inspection_finish_time,
|
||||
t.required_finish_time,
|
||||
t.is_overdue,
|
||||
t.related_task_no,
|
||||
t2.task_no as related_task_no,
|
||||
t.update_user_id,
|
||||
t.update_user_name,
|
||||
t.update_time
|
||||
FROM qms_incoming_inspection_task t
|
||||
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_incoming_inspection_task t2 ON t.related_task_id = t2.id
|
||||
<where>
|
||||
<if test="request.dataType != null">
|
||||
AND t.data_type = #{request.dataType}
|
||||
|
|
|
|||
|
|
@ -2,4 +2,11 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskRecordItemMapper">
|
||||
|
||||
<select id="getNonconformanceDataGroups"
|
||||
resultType="com.nflg.wms.common.pojo.vo.QmsIssueTicketInspectionRecordItemVO">
|
||||
SELECT isic."id",CASE WHEN isi.item_type=0 THEN isi.name ELSE isic."name" END,isic.legend,iitri.unqualified_qty
|
||||
FROM qms_incoming_inspection_task_record_item iitri
|
||||
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"
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue