Compare commits

...

3 Commits

Author SHA1 Message Date
funny fc325af3b1 修改质检项明细查询功能 2026-04-17 11:20:13 +08:00
funny 6a8af1f362 修改COA通知新增、编辑功能
新增直接发送功能
2026-04-17 11:07:20 +08:00
funny 8f07dbca40 新增COA发送通知物料查询和供应商分页查询功能
最晚提交时间字段更改
2026-04-17 10:14:23 +08:00
20 changed files with 157 additions and 74 deletions

View File

@ -51,7 +51,7 @@ public class QmsCoaTaskController extends BaseController {
}
/**
* 修改COA通知任务仅状态为0时可修改
* 修改COA通知任务只允许修改报告要求和报告模板修改后状态改为0
*/
@Transactional
@PostMapping("update")
@ -60,6 +60,16 @@ public class QmsCoaTaskController extends BaseController {
return ApiResult.success();
}
/**
* 直接发布COA通知任务状态直接变为1并填入发送时间
*/
@Transactional
@PostMapping("publish")
public ApiResult<Void> publish(@Valid @RequestBody QmsCoaTaskAddQO qo) {
coaTaskService.publish(qo);
return ApiResult.success();
}
/**
* 批量发送状态改为1填入发送时间
*

View File

@ -96,12 +96,12 @@ public class QmsInspectionItemController extends BaseController {
}
/**
* 按检测项ID查明细列表不分页
* 按检测项ID查询详情包含主表信息和明细列表
*
* @param id 检测项ID
*/
@GetMapping("details")
public ApiResult<List<QmsInspectionItemDetailsVO>> details(@NotNull(message = "ID不能为空") Long id) {
public ApiResult<QmsInspectionItemVO> details(@NotNull(message = "ID不能为空") Long id) {
return ApiResult.success(inspectionItemService.getDetails(id));
}

View File

@ -115,12 +115,12 @@ public class QmsQualityInspectorController extends BaseController {
}
/**
* 按当前登录用户查询绑定的物料列表支持物料编号/类别/描述过滤
* 按当前登录用户查询绑定的物料列表支持物料编号/类别/描述过滤分页
*
* @param qo 查询参数materialNo/materialCategoryCode/materialDesc可选
* @param qo 查询参数materialNo/materialCategoryCode/materialDesc/pageNum/pageSize
*/
@PostMapping("materialsByUser")
public ApiResult<List<QmsQualityInspectorMaterialVO>> materialsByUser(@RequestBody QmsMaterialsByUserQO qo) {
return ApiResult.success(qualityInspectorService.getMaterialsByUserId(qo.getMaterialNo(), qo.getMaterialCategoryCode(), qo.getMaterialDesc()));
public ApiResult<PageData<QmsQualityInspectorMaterialVO>> materialsByUser(@RequestBody QmsMaterialsByUserQO qo) {
return ApiResult.success(qualityInspectorService.getMaterialsByUserId(qo.getMaterialNo(), qo.getMaterialCategoryCode(), qo.getMaterialDesc(), qo.getPageNum(), qo.getPageSize()));
}
}

View File

@ -81,12 +81,12 @@ public class QmsSupplierSqeController extends BaseController {
}
/**
* 按当前登录用户查询关联的供应商列表支持供应商过滤
* 按当前登录用户查询关联的供应商列表支持供应商过滤分页
*
* @param qo 查询参数supplierCode/supplierName可选
* @param qo 查询参数supplierCode/supplierName/pageNum/pageSize
*/
@PostMapping("supplierByUser")
public ApiResult<List<QmsUserSupplierVO>> supplierByUser(@RequestBody QmsUserMaterialsQO qo) {
return ApiResult.success(supplierSqeMapService.getSuppliersByUserId(qo.getSupplierCode(), qo.getSupplierName()));
public ApiResult<PageData<QmsUserSupplierVO>> supplierByUser(@RequestBody QmsUserMaterialsQO qo) {
return ApiResult.success(supplierSqeMapService.getSuppliersByUserId(qo.getSupplierCode(), qo.getSupplierName(), qo.getPageNum(), qo.getPageSize()));
}
}

View File

@ -31,9 +31,8 @@ public class QmsCoaTaskAddQO {
private String requirement;
/**
* 最晚提交时间必传
* 最晚提交时间
*/
@NotNull(message = "最晚提交时间不能为空")
private LocalDate lastSubTime;
/**

View File

@ -3,10 +3,8 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDate;
/**
* 修改COA通知任务参数id必传其余可选
* 修改COA通知任务参数id必传只允许修改报告要求和报告模板
*/
@Data
public class QmsCoaTaskUpdateQO {
@ -17,26 +15,11 @@ public class QmsCoaTaskUpdateQO {
@NotNull(message = "ID不能为空")
private Long id;
/**
* 供应商编号可选
*/
private String supplierCode;
/**
* 物料编号可选
*/
private String materialNo;
/**
* 报告要求可选
*/
private String requirement;
/**
* 最晚提交时间可选
*/
private LocalDate lastSubTime;
/**
* 报告模板可选
*/

View File

@ -22,4 +22,14 @@ public class QmsMaterialsByUserQO {
* 物料描述模糊可选
*/
private String materialDesc;
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页大小
*/
private Integer pageSize = 10;
}

View File

@ -17,4 +17,14 @@ public class QmsUserMaterialsQO {
* 供应商名称模糊可选
*/
private String supplierName;
/**
* 页码
*/
private Integer pageNum = 1;
/**
* 每页大小
*/
private Integer pageSize = 10;
}

View File

@ -23,6 +23,16 @@ public class QmsQualityInspectorMaterialVO {
*/
private String materialNo;
/**
* 物料图号
*/
private String drawingNo;
/**
* 图纸版本号
*/
private String drawingNoVer;
/**
* 物料类别编码
*/

View File

@ -41,9 +41,10 @@ public interface QmsQualityInspectorMapper extends BaseMapper<QmsQualityInspecto
@Param("supplierName") String supplierName);
/**
* userId 查询绑定物料列表支持物料编号/类别/描述过滤
* userId 查询绑定物料列表支持物料编号/类别/描述过滤分页
*/
List<QmsQualityInspectorMaterialVO> getMaterialsByUserIdWithFilter(
IPage<QmsQualityInspectorMaterialVO> getMaterialsByUserIdWithFilter(
Page<QmsQualityInspectorMaterialVO> page,
@Param("userId") Long userId,
@Param("materialNo") String materialNo,
@Param("materialCategoryCode") String materialCategoryCode,

View File

@ -28,9 +28,10 @@ public interface QmsSupplierSqeMapMapper extends BaseMapper<QmsSupplierSqeMap> {
IPage<QmsSupplierSqeMapVO> searchMap(@Param("request") QmsSupplierSqeSearchQO request, Page<QmsSupplierSqeMapVO> page);
/**
* userId 查询关联的供应商列表支持供应商过滤
* userId 查询关联的供应商列表支持供应商过滤分页
*/
List<QmsUserSupplierVO> getSuppliersByUserId(
IPage<QmsUserSupplierVO> getSuppliersByUserId(
Page<QmsUserSupplierVO> page,
@Param("userId") Long userId,
@Param("supplierCode") String supplierCode,
@Param("supplierName") String supplierName);

View File

@ -27,10 +27,15 @@ public interface IQmsCoaTaskService extends IService<QmsCoaTask> {
void delete(Long id);
/**
* 修改COA通知任务状态不为0时不可修改
* 修改COA通知任务只允许修改报告要求和报告模板修改后状态改为0
*/
void update(QmsCoaTaskUpdateQO qo);
/**
* 直接发布COA通知任务状态改为1填入发送时间
*/
void publish(QmsCoaTaskAddQO qo);
/**
* 批量发送状态改为1填入发送时间
*/

View File

@ -39,9 +39,9 @@ public interface IQmsInspectionItemService extends IService<QmsInspectionItem> {
PageData<QmsInspectionItemVO> search(QmsInspectionItemSearchQO qo);
/**
* 按检测项ID查询明细列表
* 按检测项ID查询详情包含主表信息和明细列表
*/
List<QmsInspectionItemDetailsVO> getDetails(Long id);
QmsInspectionItemVO getDetails(Long id);
/**
* 查询导出数据

View File

@ -2,6 +2,7 @@ package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsMaterialsByUserQO;
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorAddQO;
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorSearchQO;
@ -65,7 +66,7 @@ public interface IQmsQualityInspectorService extends IService<QmsQualityInspecto
void cancelTransfer(Long userId);
/**
* userId 查询当前用户绑定的物料列表支持物料编号/类别/描述过滤
* userId 查询当前用户绑定的物料列表支持物料编号/类别/描述过滤分页
*/
List<QmsQualityInspectorMaterialVO> getMaterialsByUserId(String materialNo, String materialCategoryCode, String materialDesc);
PageData<QmsQualityInspectorMaterialVO> getMaterialsByUserId(String materialNo, String materialCategoryCode, String materialDesc, Integer pageNum, Integer pageSize);
}

View File

@ -2,6 +2,7 @@ package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO;
import com.nflg.wms.common.pojo.qo.QmsUserMaterialsQO;
import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapVO;
@ -46,7 +47,7 @@ public interface IQmsSupplierSqeMapService extends IService<QmsSupplierSqeMap> {
void deleteById(Long id);
/**
* userId 查询该用户关联的供应商列表支持供应商过滤
* userId 查询该用户关联的供应商列表支持供应商过滤分页
*/
List<QmsUserSupplierVO> getSuppliersByUserId(String supplierCode, String supplierName);
PageData<QmsUserSupplierVO> getSuppliersByUserId(String supplierCode, String supplierName, Integer pageNum, Integer pageSize);
}

View File

@ -111,25 +111,38 @@ public class QmsCoaTaskServiceImpl extends ServiceImpl<QmsCoaTaskMapper, QmsCoaT
if (Objects.isNull(task)) {
throw new NflgException(STATE.BusinessError, "任务不存在");
}
if (!Objects.equals(task.getStatus(), 0)) {
throw new NflgException(STATE.BusinessError, "当前状态不允许修改只有待发送状态0的任务才能修改");
}
String operator = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now();
var updater = lambdaUpdate().eq(QmsCoaTask::getId, qo.getId());
// 按供应商编号更新
if (Objects.nonNull(qo.getSupplierCode()) && !qo.getSupplierCode().isEmpty()) {
// 只允许修改报告要求和报告模板
if (Objects.nonNull(qo.getRequirement()) && !qo.getRequirement().isEmpty()) {
updater.set(QmsCoaTask::getRequirement, qo.getRequirement());
}
if (Objects.nonNull(qo.getReportTemplate())) {
updater.set(QmsCoaTask::getReportTemplate, qo.getReportTemplate());
}
// 修改后状态改为0待发送
updater.set(QmsCoaTask::getStatus, 0)
.set(QmsCoaTask::getUpdateBy, operator)
.set(QmsCoaTask::getUpdateTime, now)
.update();
}
// ==================== 直接发布 ====================
@Transactional
@Override
public void publish(QmsCoaTaskAddQO qo) {
// 按供应商编号查供应商
UserSupplier supplier = userSupplierService.getByCode(qo.getSupplierCode());
if (Objects.isNull(supplier)) {
throw new NflgException(STATE.BusinessError, "供应商编号不存在:" + qo.getSupplierCode());
}
updater.set(QmsCoaTask::getSupplierId, supplier.getId());
}
// 按物料编号更新
if (Objects.nonNull(qo.getMaterialNo()) && !qo.getMaterialNo().isEmpty()) {
// 按物料编号查物料
QmsQcMaterial material = qcMaterialService.lambdaQuery()
.eq(QmsQcMaterial::getMaterialNo, qo.getMaterialNo())
.last("LIMIT 1")
@ -137,20 +150,26 @@ public class QmsCoaTaskServiceImpl extends ServiceImpl<QmsCoaTaskMapper, QmsCoaT
if (Objects.isNull(material)) {
throw new NflgException(STATE.BusinessError, "物料编号不存在:" + qo.getMaterialNo());
}
updater.set(QmsCoaTask::getMaterialId, material.getId());
}
if (Objects.nonNull(qo.getRequirement()) && !qo.getRequirement().isEmpty()) {
updater.set(QmsCoaTask::getRequirement, qo.getRequirement());
}
if (Objects.nonNull(qo.getLastSubTime())) {
updater.set(QmsCoaTask::getLastSubTime, qo.getLastSubTime());
}
if (Objects.nonNull(qo.getReportTemplate())) {
updater.set(QmsCoaTask::getReportTemplate, qo.getReportTemplate());
}
updater.set(QmsCoaTask::getUpdateBy, operator)
.set(QmsCoaTask::getUpdateTime, now)
.update();
String operator = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now();
// 直接创建状态为1已发送的任务并填入发送时间
QmsCoaTask task = new QmsCoaTask()
.setSupplierId(supplier.getId())
.setMaterialId(material.getId())
.setUserId(UserUtil.getUserId())
.setStatus(1)
.setNoticeTime(now)
.setRequirement(qo.getRequirement())
.setReportTemplate(qo.getReportTemplate())
.setLastSubTime(qo.getLastSubTime())
.setDeleted(false)
.setCreateBy(operator)
.setCreateTime(now)
.setUpdateBy(operator)
.setUpdateTime(now);
save(task);
}
// ==================== 发送 ====================

View File

@ -185,13 +185,28 @@ public class QmsInspectionItemServiceImpl extends ServiceImpl<QmsInspectionItemM
// ==================== 明细查询 ====================
@Override
public List<QmsInspectionItemDetailsVO> getDetails(Long id) {
return detailsService.lambdaQuery()
public QmsInspectionItemVO getDetails(Long id) {
// 查询主表信息
QmsInspectionItem item = getById(id);
if (Objects.isNull(item)) {
throw new NflgException(STATE.BusinessError, "检测项不存在");
}
// 转换为主表VO
QmsInspectionItemVO vo = toVO(item);
// 查询明细列表
List<QmsInspectionItemDetailsVO> detailsList = detailsService.lambdaQuery()
.eq(QmsInspectionItemDetails::getInspectionItemId, id)
.list()
.stream()
.map(this::toDetailsVO)
.collect(Collectors.toList());
// 设置明细列表
vo.setDetails(detailsList);
return vo;
}
// ==================== 导出 ====================

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.QmsMaterialsByUserQO;
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorAddQO;
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorSearchQO;
@ -307,8 +308,15 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
}
@Override
public List<QmsQualityInspectorMaterialVO> getMaterialsByUserId(String materialNo, String materialCategoryCode, String materialDesc) {
public PageData<QmsQualityInspectorMaterialVO> getMaterialsByUserId(String materialNo, String materialCategoryCode, String materialDesc, Integer pageNum, Integer pageSize) {
Long userId = UserUtil.getUserId();
return baseMapper.getMaterialsByUserIdWithFilter(userId, materialNo, materialCategoryCode, materialDesc);
Page<QmsQualityInspectorMaterialVO> page = new Page<>(pageNum, pageSize);
IPage<QmsQualityInspectorMaterialVO> result = baseMapper.getMaterialsByUserIdWithFilter(page, userId, materialNo, materialCategoryCode, materialDesc);
return new PageData<QmsQualityInspectorMaterialVO>()
.setPage((int) result.getCurrent())
.setPageSize((int) result.getSize())
.setTotal((int) result.getTotal())
.setItems(result.getRecords());
}
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.QmsSupplierSqeSearchQO;
import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapVO;
import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO;
@ -125,8 +126,15 @@ public class QmsSupplierSqeMapServiceImpl extends ServiceImpl<QmsSupplierSqeMapM
}
@Override
public List<QmsUserSupplierVO> getSuppliersByUserId(String supplierCode, String supplierName) {
public PageData<QmsUserSupplierVO> getSuppliersByUserId(String supplierCode, String supplierName, Integer pageNum, Integer pageSize) {
Long userId = UserUtil.getUserId();
return baseMapper.getSuppliersByUserId(userId, supplierCode, supplierName);
Page<QmsUserSupplierVO> page = new Page<>(pageNum, pageSize);
IPage<QmsUserSupplierVO> result = baseMapper.getSuppliersByUserId(page, userId, supplierCode, supplierName);
return new PageData<QmsUserSupplierVO>()
.setPage((int) result.getCurrent())
.setPageSize((int) result.getSize())
.setTotal((int) result.getTotal())
.setItems(result.getRecords());
}
}

View File

@ -110,6 +110,8 @@
qi.id,
qi.material_id,
m.material_no,
m.drawing_no,
m.drawing_no_ver,
m.material_category_code,
m.material_category_code_path_name AS material_category_name,
m.material_desc AS material_name,