diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java index 7072f294..1930b752 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java @@ -2,8 +2,17 @@ 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; @@ -14,6 +23,36 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/issueTicket") public class QmsIssueTicketController extends BaseController { + @Resource + private IQmsIssueTicketService issueTicketService; + @Resource private QmsIssueTicketControllerService issueTicketControllerService; + + /** + * 新增质量问题工单 + * 工单编号自动生成,来源类型固定为2(巡检) + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody QmsIssueTicketAddQO request) { + issueTicketControllerService.add(request); + return ApiResult.success(); + } + + /** + * 查询来料检测任务质量问题工单详情 + * 含来料检测任务详情及来料检验任务检验记录子项样本列表 + */ + @GetMapping("detail") + public ApiResult detail(@NotNull(message = "ID不能为空") Long id) { + return ApiResult.success(issueTicketControllerService.getDetail(id)); + } + + /** + * 分页查询质量问题工单列表 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody QmsIssueTicketSearchQO request) { + return ApiResult.success(issueTicketService.search(request)); + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java index 5bf444cb..60149427 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java @@ -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 getNonconformanceDataGroups(Long recordId) { + return incomingInspectionTaskRecordItemService.getNonconformanceDataGroups(recordId); + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index f96e7c0c..6cb063a2 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -1,15 +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 imageIdList = Arrays.stream(entity.getImageIds().split(",")) + .filter(StrUtil::isNotBlank) + .map(Long::valueOf) + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(imageIdList)) { + List 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 datas = incomingInspectionTaskControllerService.getNonconformanceDataGroups(entity.getSourceId()); + List 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; + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoCheckSubmitItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoCheckSubmitItemQO.java index 971a42dd..bdf88c8d 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoCheckSubmitItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoCheckSubmitItemQO.java @@ -18,6 +18,18 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitItemQO { @NotNull(message = "检验标准项内容ID不能为空") private Long inspectionStandardItemContentId; + /** + * 合格数量 + */ + @NotNull(message = "合格数量不能为空") + private Integer qualifiedQty; + + /** + * 不合格数量 + */ + @NotNull(message = "不合格数量不能为空") + private Integer unqualifiedQty; + /** * 备注 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddQO.java new file mode 100644 index 00000000..484dac31 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketAddQO.java @@ -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 images; + + /** + * 备注 + */ + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketSearchQO.java new file mode 100644 index 00000000..775db3fc --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketSearchQO.java @@ -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; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskRecordVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskRecordVO.java index c6fe1fab..a81fa681 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskRecordVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskRecordVO.java @@ -61,5 +61,5 @@ public class QmsIncomingInspectionTaskRecordVO { /** * 检验记录项列表 */ - private List items; + private List items; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketDetailVO.java new file mode 100644 index 00000000..4f9297b4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketDetailVO.java @@ -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 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 records; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketInspectionRecordItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketInspectionRecordItemVO.java new file mode 100644 index 00000000..74f96c02 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketInspectionRecordItemVO.java @@ -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 images=new ArrayList<>(); +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketVO.java new file mode 100644 index 00000000..7dfab4df --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIssueTicketVO.java @@ -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; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItem.java index 9bcb725d..a706e95e 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItem.java @@ -44,4 +44,19 @@ public class QmsIncomingInspectionTaskRecordItem implements Serializable { * 备注 */ private String remark; + + /** + * 样本数量 + */ + private Integer inspectionQty; + + /** + * 合格数量 + */ + private Integer qualifiedQty; + + /** + * 不合格数量 + */ + private Integer unqualifiedQty; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItemData.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItemData.java index b1b860c5..820da95d 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItemData.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskRecordItemData.java @@ -51,5 +51,5 @@ public class QmsIncomingInspectionTaskRecordItemData { /** * 图片id列表,多个逗号分隔 */ - private String images; + private String imageIds; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskRecordItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskRecordItemMapper.java index 43bc055f..19c2a631 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskRecordItemMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskRecordItemMapper.java @@ -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; + /** *

* 来料检验任务检验记录子项 Mapper 接口 @@ -13,4 +16,5 @@ import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem; */ public interface QmsIncomingInspectionTaskRecordItemMapper extends BaseMapper { + List getNonconformanceDataGroups(Long recordId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskRecordItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskRecordItemService.java index dc3f5f18..c03a2b60 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskRecordItemService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskRecordItemService.java @@ -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; + /** *

* 来料检验任务检验记录子项 服务类 @@ -13,4 +16,5 @@ import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecordItem; */ public interface IQmsIncomingInspectionTaskRecordItemService extends IService { + List getNonconformanceDataGroups(Long recordId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIssueTicketService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIssueTicketService.java index 47292322..ca447b85 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIssueTicketService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIssueTicketService.java @@ -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 { + + /** + * 分页查询质量问题工单列表 + */ + PageData search(QmsIssueTicketSearchQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskRecordItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskRecordItemServiceImpl.java index b74c84f2..f5895366 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskRecordItemServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskRecordItemServiceImpl.java @@ -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; + /** *

* 来料检验任务检验记录子项 服务实现类 @@ -17,4 +20,8 @@ import org.springframework.stereotype.Service; @Service public class QmsIncomingInspectionTaskRecordItemServiceImpl extends ServiceImpl implements IQmsIncomingInspectionTaskRecordItemService { + @Override + public List getNonconformanceDataGroups(Long recordId) { + return baseMapper.getNonconformanceDataGroups(recordId); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java index fb2465bb..80e007b5 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIssueTicketServiceImpl.java @@ -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 implements IQmsIssueTicketService { + + @Override + public PageData search(QmsIssueTicketSearchQO request) { + Page 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 result = query.page(page); + + List voList = result.getRecords().stream() + .map(entity -> BeanUtil.copyProperties(entity, QmsIssueTicketVO.class)) + .collect(Collectors.toList()); + + PageData pageData = new PageData<>(); + pageData.setPage((int) result.getCurrent()); + pageData.setPageSize((int) result.getSize()); + pageData.setTotal((int) result.getTotal()); + pageData.setItems(voList); + return pageData; + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml index 6b59f803..465c3f34 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -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 AND t.data_type = #{request.dataType} diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskRecordItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskRecordItemMapper.xml index aaed078b..28d5094a 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskRecordItemMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskRecordItemMapper.xml @@ -2,4 +2,11 @@ +