refactor(inspection-standard): 重构检验标准及相关功能以支持检测方式优化

- 修改常量名称以反映检测方式字典代码更改
- 调整来料检验任务中检测方式相关逻辑,简化AQL规则生成流程
- 删减检验标准项中不再使用的检测方式相关字段
- 新增来料检验任务AQL规则服务接口及实现,支持规则分页查询与批量调整
- 修改数据库映射及实体,替换检验项ID为检验标准ID关联
- 优化检验标准详情填充检测方式、抽样方案、检验水平及AQL相关字段
- 增加检测方式为抽样时校验抽样方案、检验水平、AQL值及类型完整性
- 更新检验标准编辑参数,新增检测方式及相关字段支持
- 新增对应MyBatis XML映射文件和分页查询接口实现
- 提供AQL规则批量调整接口,支持前端调用调整规则数据
This commit is contained in:
曹鹏飞 2026-04-23 13:46:08 +08:00
parent 357366b84d
commit 02358e6f51
18 changed files with 297 additions and 174 deletions

View File

@ -2,6 +2,7 @@ package com.nflg.qms.admin.controller;
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.QmsIncomingInspectionTaskAqlRuleAdjustQO;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService;
@ -30,4 +31,13 @@ public class QmsIncomingInspectionTaskAqlRuleController extends BaseController {
public ApiResult<PageData<QmsIncomingInspectionTaskAqlRuleVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskAqlRuleSearchQO request) { public ApiResult<PageData<QmsIncomingInspectionTaskAqlRuleVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskAqlRuleSearchQO request) {
return ApiResult.success(incomingInspectionTaskAqlRuleService.search(request)); return ApiResult.success(incomingInspectionTaskAqlRuleService.search(request));
} }
/**
* 批量调整AQL规则
*/
@PostMapping("adjust")
public ApiResult<Void> adjust(@Valid @RequestBody QmsIncomingInspectionTaskAqlRuleAdjustQO request) {
incomingInspectionTaskAqlRuleService.adjust(request);
return ApiResult.success();
}
} }

View File

@ -170,28 +170,18 @@ public class IncomingInspectionTaskControllerService {
incomingInspectionTaskService.save(task); incomingInspectionTaskService.save(task);
// 8. 生成来料检验任务AQL方案 // 8. 生成来料检验任务AQL方案
Long inspectionStandardId = dictionaryItemService.getIdByCode("InspectionStandardSamplingMethod", "Sampling"); Long inspectionStandardId = dictionaryItemService.getIdByCode("InspectionStandardTestingMethod", "Sampling");
VUtil.trueThrowBusinessError(Objects.isNull(inspectionStandardId)).throwMessage("检测方式不存在"); VUtil.trueThrowBusinessError(Objects.isNull(inspectionStandardId)).throwMessage("检测方式不存在");
List<QmsInspectionStandardItem> inspectionStandardItems = inspectionStandardItemService.lambdaQuery() if (Objects.equals(standard.getTestingMethodDictItemId(), inspectionStandardId)) {
.eq(QmsInspectionStandardItem::getInspectionStandardId, standard.getId()) Pair<Long, Short> aqlType = CalculatedAqlType(task, standard
.eq(QmsInspectionStandardItem::getTestingMethodDictItemId, inspectionStandardId)
.orderByAsc(QmsInspectionStandardItem::getSortNo)
.list();
if (!inspectionStandardItems.isEmpty()) {
incomingInspectionTaskAqlRuleService.saveBatch(
inspectionStandardItems.stream()
.map(item -> {
Pair<Long, Short> aqlType = CalculatedAqlType(task, item
, dictionaryItemService.getListByDictionaryCode("InspectionStandardSQLType")); , dictionaryItemService.getListByDictionaryCode("InspectionStandardSQLType"));
return new QmsIncomingInspectionTaskAqlRule() incomingInspectionTaskAqlRuleService.save(new QmsIncomingInspectionTaskAqlRule()
.setTaskId(task.getId()) .setTaskId(task.getId())
.setInspectionItemId(item.getId()) .setInspectionStandardId(standard.getId())
.setCalculatedAqlType(aqlType.getLeft()) .setCalculatedAqlType(aqlType.getLeft())
.setUsedAqlType(aqlType.getLeft()) .setUsedAqlType(aqlType.getLeft())
.setTriggerCategory(aqlType.getRight()) .setTriggerCategory(aqlType.getRight())
.setTriggerTime(LocalDateTime.now()); .setTriggerTime(LocalDateTime.now())
})
.toList()
); );
} }
} }
@ -200,26 +190,26 @@ public class IncomingInspectionTaskControllerService {
return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get(); return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get();
} }
private Pair<Long, Short> CalculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandardItem item private Pair<Long, Short> CalculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandard standard
, List<DictionaryItem> aqls) { , List<DictionaryItem> aqls) {
DictionaryItem sqlzc = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "正常")).findFirst().get(); DictionaryItem sqlzc = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "正常")).findFirst().get();
DictionaryItem sqljy = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "加严")).findFirst().get(); DictionaryItem sqljy = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "加严")).findFirst().get();
DictionaryItem sqlfw = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "放宽")).findFirst().get(); DictionaryItem sqlfw = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "放宽")).findFirst().get();
log.info("【抽样严格性转移规则计算】检验项严格性为:" + getAql(item.getAqlTypeDictItemId(), aqls).getName()); log.info("【抽样严格性转移规则计算】检验项严格性为:" + getAql(standard.getAqlTypeDictItemId(), aqls).getName());
List<QmsSupplierInspectionStatistics> statistics = supplierInspectionStatisticsService.lambdaQuery() List<QmsSupplierInspectionStatistics> statistics = supplierInspectionStatisticsService.lambdaQuery()
.eq(QmsSupplierInspectionStatistics::getInspectionItemId, item.getId()) .eq(QmsSupplierInspectionStatistics::getInspectionStandardId, standard.getId())
.eq(QmsSupplierInspectionStatistics::getSupplierCode, task.getSupplierCode()) .eq(QmsSupplierInspectionStatistics::getSupplierCode, task.getSupplierCode())
.orderByDesc(QmsSupplierInspectionStatistics::getId) .orderByDesc(QmsSupplierInspectionStatistics::getId)
.last("LIMIT 20") .last("LIMIT 20")
.list(); .list();
if (statistics.isEmpty()) { if (statistics.isEmpty()) {
log.info("【抽样严格性转移规则计算】历史检验记录为空,使用检验严格性"); log.info("【抽样严格性转移规则计算】历史检验记录为空,使用检验标准严格性");
return Pair.of(item.getAqlTypeDictItemId(), (short) 0); return Pair.of(standard.getAqlTypeDictItemId(), (short) 0);
} else { } else {
QmsSupplierInspectionStatistics s1 = statistics.get(0); QmsSupplierInspectionStatistics s1 = statistics.get(0);
log.info("【抽样严格性转移规则计算】最新一次检验严格性为:" + getAql(s1.getAqlType(), aqls).getName()); log.info("【抽样严格性转移规则计算】最新一次检验严格性为:" + getAql(s1.getAqlType(), aqls).getName());
LambdaQueryChainWrapper<QmsSamplingStrictnessTransferRule> queryWrapper = samplingStrictnessTransferRuleService.lambdaQuery() LambdaQueryChainWrapper<QmsSamplingStrictnessTransferRule> queryWrapper = samplingStrictnessTransferRuleService.lambdaQuery()
.eq(QmsSamplingStrictnessTransferRule::getSamplingPlanId, item.getSamplingPlanId()) .eq(QmsSamplingStrictnessTransferRule::getSamplingPlanId, standard.getSamplingPlanId())
.eq(QmsSamplingStrictnessTransferRule::getIsEnabled, true); .eq(QmsSamplingStrictnessTransferRule::getIsEnabled, true);
if (Objects.equals(s1.getAqlType(), sqljy.getId())) { if (Objects.equals(s1.getAqlType(), sqljy.getId())) {
log.info("【抽样严格性转移规则计算】检查是否符合 加严 => 正常 规则"); log.info("【抽样严格性转移规则计算】检查是否符合 加严 => 正常 规则");

View File

@ -178,6 +178,44 @@ public class QmsInspectionStandardControllerService {
detail.setUpdateUserName(standard.getUpdateUserName()); detail.setUpdateUserName(standard.getUpdateUserName());
detail.setUpdateTime(standard.getUpdateTime()); detail.setUpdateTime(standard.getUpdateTime());
// 填充检测方式抽样方案检验水平AQL相关字段
detail.setTestingMethodDictItemId(standard.getTestingMethodDictItemId());
detail.setSamplingPlanId(standard.getSamplingPlanId());
detail.setInspectionLevelDictItemId(standard.getInspectionLevelDictItemId());
detail.setAqlPriorityValueId(standard.getAqlPriorityValueId());
detail.setAqlTypeDictItemId(standard.getAqlTypeDictItemId());
// 填充字典项名称
Set<Long> standardDictItemIds = new HashSet<>();
if (standard.getTestingMethodDictItemId() != null) standardDictItemIds.add(standard.getTestingMethodDictItemId());
if (standard.getInspectionLevelDictItemId() != null) standardDictItemIds.add(standard.getInspectionLevelDictItemId());
if (standard.getAqlTypeDictItemId() != null) standardDictItemIds.add(standard.getAqlTypeDictItemId());
if (!standardDictItemIds.isEmpty()) {
List<DictionaryItem> standardDictItems = dictionaryItemService.lambdaQuery()
.in(DictionaryItem::getId, standardDictItemIds)
.list();
detail.setTestingMethodDictItemName(standardDictItems.stream()
.filter(it -> it.getId().equals(standard.getTestingMethodDictItemId()))
.findFirst().map(DictionaryItem::getName).orElse(null));
detail.setInspectionLevelDictItemName(standardDictItems.stream()
.filter(it -> it.getId().equals(standard.getInspectionLevelDictItemId()))
.findFirst().map(DictionaryItem::getName).orElse(null));
detail.setAqlTypeDictItemName(standardDictItems.stream()
.filter(it -> it.getId().equals(standard.getAqlTypeDictItemId()))
.findFirst().map(DictionaryItem::getName).orElse(null));
}
if (standard.getSamplingPlanId() != null) {
QmsSamplingPlan plan = samplingPlanService.getById(standard.getSamplingPlanId());
if (plan != null) {
detail.setSamplingPlanName(plan.getPlanName());
}
}
if (standard.getAqlPriorityValueId() != null) {
QmsAqlPriorityValue aql = aqlPriorityValueService.getById(standard.getAqlPriorityValueId());
if (aql != null) {
detail.setAqlPriorityValue(aql.getPriorityValue());
}
}
// 3. 查询检测项列表 // 3. 查询检测项列表
List<QmsInspectionStandardItem> items = inspectionStandardItemService.lambdaQuery() List<QmsInspectionStandardItem> items = inspectionStandardItemService.lambdaQuery()
.eq(QmsInspectionStandardItem::getInspectionStandardId, id) .eq(QmsInspectionStandardItem::getInspectionStandardId, id)
@ -188,10 +226,7 @@ public class QmsInspectionStandardControllerService {
List<QmsInspectionStandardItemVO> itemVOs = new ArrayList<>(); List<QmsInspectionStandardItemVO> itemVOs = new ArrayList<>();
Set<Long> dictionaryItemIds = new HashSet<>(); Set<Long> dictionaryItemIds = new HashSet<>();
items.forEach(item -> { items.forEach(item -> {
dictionaryItemIds.add(item.getTestingMethodDictItemId());
dictionaryItemIds.add(item.getSamplingMethodDictItemId()); dictionaryItemIds.add(item.getSamplingMethodDictItemId());
dictionaryItemIds.add(item.getInspectionLevelDictItemId());
dictionaryItemIds.add(item.getAqlTypeDictItemId());
}); });
List<DictionaryItem> dictionaryItems = CollectionUtil.isEmpty(dictionaryItemIds) List<DictionaryItem> dictionaryItems = CollectionUtil.isEmpty(dictionaryItemIds)
? new ArrayList<>() ? new ArrayList<>()
@ -227,13 +262,6 @@ public class QmsInspectionStandardControllerService {
vo.setId(item.getId()); vo.setId(item.getId());
vo.setName(item.getName()); vo.setName(item.getName());
vo.setSortNo(item.getSortNo()); vo.setSortNo(item.getSortNo());
vo.setTestingMethodDictItemId(item.getTestingMethodDictItemId());
vo.setTestingMethodDictItemName(dictionaryItems.stream()
.filter(it -> it.getId().equals(item.getTestingMethodDictItemId()))
.findFirst()
.map(DictionaryItem::getName)
.orElse(null)
);
vo.setSamplingMethodDictItemId(item.getSamplingMethodDictItemId()); vo.setSamplingMethodDictItemId(item.getSamplingMethodDictItemId());
vo.setSamplingMethodDictItemName(dictionaryItems.stream() vo.setSamplingMethodDictItemName(dictionaryItems.stream()
.filter(it -> it.getId().equals(item.getSamplingMethodDictItemId())) .filter(it -> it.getId().equals(item.getSamplingMethodDictItemId()))
@ -241,24 +269,6 @@ public class QmsInspectionStandardControllerService {
.map(DictionaryItem::getName) .map(DictionaryItem::getName)
.orElse(null) .orElse(null)
); );
vo.setSamplingPlanId(item.getSamplingPlanId());
vo.setSamplingPlanName(samplingPlanService.getById(item.getSamplingPlanId()).getPlanName());
vo.setInspectionLevelDictItemId(item.getInspectionLevelDictItemId());
vo.setInspectionLevelDictItemName(dictionaryItems.stream()
.filter(it -> it.getId().equals(item.getInspectionLevelDictItemId()))
.findFirst()
.map(DictionaryItem::getName)
.orElse(null)
);
vo.setAqlPriorityValueId(item.getAqlPriorityValueId());
vo.setAqlPriorityValueName(aqlPriorityValueService.getById(item.getAqlPriorityValueId()).getPriorityValue());
vo.setAqlTypeDictItemId(item.getAqlTypeDictItemId());
vo.setAqlTypeDictItemName(dictionaryItems.stream()
.filter(it -> it.getId().equals(item.getAqlTypeDictItemId()))
.findFirst()
.map(DictionaryItem::getName)
.orElse(null)
);
vo.setItemType(item.getItemType()); vo.setItemType(item.getItemType());
vo.setPdfDrawing(item.getPdfDrawing()); vo.setPdfDrawing(item.getPdfDrawing());
vo.setCreateUserName(item.getCreateUserName()); vo.setCreateUserName(item.getCreateUserName());
@ -398,6 +408,11 @@ public class QmsInspectionStandardControllerService {
standard.setInspectionCycle(qo.getInspectionCycle()); standard.setInspectionCycle(qo.getInspectionCycle());
standard.setVersion(qo.getVersion()); standard.setVersion(qo.getVersion());
standard.setIsEnabled(qo.getIsEnabled()); standard.setIsEnabled(qo.getIsEnabled());
standard.setTestingMethodDictItemId(qo.getTestingMethodDictItemId());
standard.setSamplingPlanId(qo.getSamplingPlanId());
standard.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId());
standard.setAqlPriorityValueId(qo.getAqlPriorityValueId());
standard.setAqlTypeDictItemId(qo.getAqlTypeDictItemId());
// 审计字段 // 审计字段
standard.setUpdateUserId(userId); standard.setUpdateUserId(userId);
standard.setUpdateUserName(userName); standard.setUpdateUserName(userName);
@ -438,16 +453,6 @@ public class QmsInspectionStandardControllerService {
.findFirst() .findFirst()
.orElse(null); .orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItem)).throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式不存在"); VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItem)).throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式不存在");
if (StrUtil.equals(dictionaryItem.getCode(), "抽样")) {
VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getSamplingPlanId()))
.throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,抽样方案不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getInspectionLevelDictItemId()))
.throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,检验水平不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getAqlPriorityValueId()))
.throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时AQL值不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getAqlTypeDictItemId()))
.throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时AQL类型不能为空");
}
QmsInspectionStandardItem item; QmsInspectionStandardItem item;
if (itemQO.getId() != null) { if (itemQO.getId() != null) {
@ -520,6 +525,24 @@ public class QmsInspectionStandardControllerService {
.exists() .exists()
).throwMessage("存在相同版本的检验标准"); ).throwMessage("存在相同版本的检验标准");
// 检测方式为抽样时校验相关字段
if (qo.getTestingMethodDictItemId() != null) {
List<DictionaryItem> testingMethodItems = dictionaryItemService.lambdaQuery()
.eq(DictionaryItem::getId, qo.getTestingMethodDictItemId())
.list();
DictionaryItem testingMethod = testingMethodItems.isEmpty() ? null : testingMethodItems.get(0);
if (testingMethod != null && StrUtil.equals(testingMethod.getCode(), "抽样")) {
VUtil.trueThrowBusinessError(Objects.isNull(qo.getSamplingPlanId()))
.throwMessage("检测方式为【抽样】时,抽样方案不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(qo.getInspectionLevelDictItemId()))
.throwMessage("检测方式为【抽样】时,检验水平不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(qo.getAqlPriorityValueId()))
.throwMessage("检测方式为【抽样】时AQL值不能为空");
VUtil.trueThrowBusinessError(Objects.isNull(qo.getAqlTypeDictItemId()))
.throwMessage("检测方式为【抽样】时AQL类型不能为空");
}
}
// 3. 更新字段不修改版本号 // 3. 更新字段不修改版本号
standard.setMaterialId(qo.getMaterialId()); standard.setMaterialId(qo.getMaterialId());
standard.setDrawingUrl(qo.getDrawingUrl()); standard.setDrawingUrl(qo.getDrawingUrl());
@ -527,6 +550,11 @@ public class QmsInspectionStandardControllerService {
standard.setInspectionCycle(qo.getInspectionCycle()); standard.setInspectionCycle(qo.getInspectionCycle());
standard.setVersion(qo.getVersion()); standard.setVersion(qo.getVersion());
standard.setIsEnabled(qo.getIsEnabled()); standard.setIsEnabled(qo.getIsEnabled());
standard.setTestingMethodDictItemId(qo.getTestingMethodDictItemId());
standard.setSamplingPlanId(qo.getSamplingPlanId());
standard.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId());
standard.setAqlPriorityValueId(qo.getAqlPriorityValueId());
standard.setAqlTypeDictItemId(qo.getAqlTypeDictItemId());
// 审计字段 // 审计字段
standard.setUpdateUserId(userId); standard.setUpdateUserId(userId);
standard.setUpdateUserName(userName); standard.setUpdateUserName(userName);
@ -535,7 +563,7 @@ public class QmsInspectionStandardControllerService {
inspectionStandardService.updateById(standard); inspectionStandardService.updateById(standard);
// 3. 处理检测项列表 // 3. 处理检测项列表
processItems(dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD), processItems(dictionaryItemService.getListByDictionaryCode(Constant.INSPECTION_STANDARD_TESTING_METHOD),
qo.getInspectionStandardId(), qo.getItems(), userId, userName, now); qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
} }
@ -551,24 +579,9 @@ public class QmsInspectionStandardControllerService {
if (qo.getSortNo() != null) { if (qo.getSortNo() != null) {
item.setSortNo(qo.getSortNo()); item.setSortNo(qo.getSortNo());
} }
if (qo.getTestingMethodDictItemId() != null) {
item.setTestingMethodDictItemId(qo.getTestingMethodDictItemId());
}
if (qo.getSamplingMethodDictItemId() != null) { if (qo.getSamplingMethodDictItemId() != null) {
item.setSamplingMethodDictItemId(qo.getSamplingMethodDictItemId()); item.setSamplingMethodDictItemId(qo.getSamplingMethodDictItemId());
} }
if (qo.getSamplingPlanId() != null) {
item.setSamplingPlanId(qo.getSamplingPlanId());
}
if (qo.getInspectionLevelDictItemId() != null) {
item.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId());
}
if (qo.getAqlPriorityValueId() != null) {
item.setAqlPriorityValueId(qo.getAqlPriorityValueId());
}
if (qo.getAqlTypeDictItemId() != null) {
item.setAqlTypeDictItemId(qo.getAqlTypeDictItemId());
}
if (qo.getItemType() != null) { if (qo.getItemType() != null) {
item.setItemType(qo.getItemType()); item.setItemType(qo.getItemType());
} }

View File

@ -40,5 +40,5 @@ public class Constant {
public static final String DICTIONARY_AD_POSITION ="AdvertisementPosition"; public static final String DICTIONARY_AD_POSITION ="AdvertisementPosition";
public static final String DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD ="InspectionStandardSamplingMethod"; public static final String INSPECTION_STANDARD_TESTING_METHOD ="InspectionStandardTestingMethod";
} }

View File

@ -0,0 +1,26 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
/**
* 来料检验任务AQL规则 - 调整QO
*/
@Data
public class QmsIncomingInspectionTaskAqlRuleAdjustQO {
/**
* 需要调整的AQL规则id列表
*/
@NotEmpty(message = "AQL规则id列表不能为空")
private List<Long> ids;
/**
* 使用的AQL类型字典项id
*/
@NotNull(message = "使用的AQL类型不能为空")
private Long usedAqlType;
}

View File

@ -72,6 +72,16 @@ public class QmsIncomingInspectionTaskSearchQO extends PageQO {
*/ */
private LocalDate submitEndDate; private LocalDate submitEndDate;
/**
* 检验开始日期开始检验开始时间
*/
private LocalDate inspectionBeginStartDate;
/**
* 检验开始日期结束检验开始时间
*/
private LocalDate inspectionBeginEndDate;
/** /**
* 检测日期开始检验完成时间 * 检测日期开始检验完成时间
*/ */

View File

@ -48,4 +48,30 @@ public class QmsInspectionStandardEditQO {
* 检验周期 * 检验周期
*/ */
private Integer inspectionCycle; private Integer inspectionCycle;
/**
* 检测方式关联字典项id
*/
@NotNull(message = "检测方式不能为空")
private Long testingMethodDictItemId;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 检验水平关联字典项id
*/
private Long inspectionLevelDictItemId;
/**
* AQL值关联AQL优先值预定义表id
*/
private Long aqlPriorityValueId;
/**
* AQL类型关联字典项id
*/
private Long aqlTypeDictItemId;
} }

View File

@ -54,6 +54,32 @@ public class QmsInspectionStandardSaveQO {
@NotNull @NotNull
private Integer inspectionCycle; private Integer inspectionCycle;
/**
* 检测方式关联字典项id
*/
@NotNull(message = "检测方式不能为空")
private Long testingMethodDictItemId;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 检验水平关联字典项id
*/
private Long inspectionLevelDictItemId;
/**
* AQL值关联AQL优先值预定义表id
*/
private Long aqlPriorityValueId;
/**
* AQL类型关联字典项id
*/
private Long aqlTypeDictItemId;
/** /**
* 检测项列表 * 检测项列表
*/ */
@ -94,26 +120,6 @@ public class QmsInspectionStandardSaveQO {
@NotNull(message = "抽样方式不能为空") @NotNull(message = "抽样方式不能为空")
private Long samplingMethodDictItemId; private Long samplingMethodDictItemId;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 检验水平关联字典项id
*/
private Long inspectionLevelDictItemId;
/**
* AQL值关联AQL优先值预定义表id
*/
private Long aqlPriorityValueId;
/**
* AQL类型关联字典项id
*/
private Long aqlTypeDictItemId;
/** /**
* 检验标准项类型0-标准检测项1-尺寸检测项 * 检验标准项类型0-标准检测项1-尺寸检测项
*/ */

View File

@ -2,6 +2,7 @@ package com.nflg.wms.common.pojo.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -66,6 +67,56 @@ public class QmsInspectionStandardDetailVO {
*/ */
private Integer inspectionCycle; private Integer inspectionCycle;
/**
* 检测方式字典项ID
*/
private Long testingMethodDictItemId;
/**
* 检测方式字典项名称
*/
private String testingMethodDictItemName;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 抽样方案名称
*/
private String samplingPlanName;
/**
* 检验水平字典项ID
*/
private Long inspectionLevelDictItemId;
/**
* 检验水平字典项名称
*/
private String inspectionLevelDictItemName;
/**
* AQL值字典项ID
*/
private Long aqlPriorityValueId;
/**
* AQL值
*/
private BigDecimal aqlPriorityValue;
/**
* AQL类型字典项ID
*/
private Long aqlTypeDictItemId;
/**
* AQL类型字典项名称
*/
private String aqlTypeDictItemName;
/** /**
* 发布状态0-未发布1-已发布 * 发布状态0-未发布1-已发布
*/ */

View File

@ -2,7 +2,6 @@ package com.nflg.wms.common.pojo.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -47,46 +46,6 @@ public class QmsInspectionStandardItemVO {
*/ */
private String samplingMethodDictItemName; private String samplingMethodDictItemName;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 抽样方案名称
*/
private String samplingPlanName;
/**
* 检验水平字典项ID
*/
private Long inspectionLevelDictItemId;
/**
* 检验水平字典项名称
*/
private String inspectionLevelDictItemName;
/**
* AQL值ID
*/
private Long aqlPriorityValueId;
/**
* AQL值
*/
private BigDecimal aqlPriorityValueName;
/**
* AQL类型字典项ID
*/
private Long aqlTypeDictItemId;
/**
* AQL类型字典项名称
*/
private String aqlTypeDictItemName;
/** /**
* 检验标准项类型0-标准检测项1-尺寸检测项 * 检验标准项类型0-标准检测项1-尺寸检测项
*/ */

View File

@ -32,9 +32,9 @@ public class QmsIncomingInspectionTaskAqlRule implements Serializable {
private Long taskId; private Long taskId;
/** /**
* 测项id关联检验标准项 * 验标准ID关联检验标准
*/ */
private Long inspectionItemId; private Long inspectionStandardId;
/** /**
* 计算的AQL类型字典项id * 计算的AQL类型字典项id

View File

@ -56,6 +56,31 @@ public class QmsInspectionStandard implements Serializable {
*/ */
private Integer inspectionCycle; private Integer inspectionCycle;
/**
* 检测方式关联字典项id字典编码InspectionStandardTestingMethod
*/
private Long testingMethodDictItemId;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 检验水平关联字典项id字典编码SamplingPlanSpecialInspection或SamplingPlanGeneralInspection
*/
private Long inspectionLevelDictItemId;
/**
* AQL值关联AQL优先值预定义表id
*/
private Long aqlPriorityValueId;
/**
* AQL类型关联字典项id字典编码InspectionStandardSQLType
*/
private Long aqlTypeDictItemId;
/** /**
* 发布状态0-未发布1-已发布 * 发布状态0-未发布1-已发布
*/ */

View File

@ -42,35 +42,10 @@ public class QmsInspectionStandardItem implements Serializable {
private Integer sortNo; private Integer sortNo;
/** /**
* 检测方式关联字典项id字典编码InspectionStandardTestingMethod * 检测类型关联字典项id字典编码InspectionStandardDetectionType
*/
private Long testingMethodDictItemId;
/**
* 抽样方式关联字典项id字典编码InspectionStandardSamplingMethod
*/ */
private Long samplingMethodDictItemId; private Long samplingMethodDictItemId;
/**
* 抽样方案ID
*/
private Long samplingPlanId;
/**
* 检验水平关联字典项id字典编码SamplingPlanSpecialInspection或SamplingPlanGeneralInspection
*/
private Long inspectionLevelDictItemId;
/**
* AQL值关联AQL优先值预定义表id
*/
private Long aqlPriorityValueId;
/**
* AQL类型关联字典项id字典编码InspectionStandardSQLType
*/
private Long aqlTypeDictItemId;
/** /**
* 检验标准项类型0-标准检测项1-尺寸检测项 * 检验标准项类型0-标准检测项1-尺寸检测项
*/ */

View File

@ -34,9 +34,9 @@ public class QmsSupplierInspectionStatistics implements Serializable {
private String supplierCode; private String supplierCode;
/** /**
* 测项id * 验标准ID
*/ */
private Long inspectionItemId; private Long inspectionStandardId;
/** /**
* 是否合格 * 是否合格

View File

@ -2,6 +2,7 @@ package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleAdjustQO;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule; import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule;
@ -15,4 +16,9 @@ public interface IQmsIncomingInspectionTaskAqlRuleService extends IService<QmsIn
* 分页查询来料检验任务AQL规则列表 * 分页查询来料检验任务AQL规则列表
*/ */
IPage<QmsIncomingInspectionTaskAqlRuleVO> search(QmsIncomingInspectionTaskAqlRuleSearchQO request); IPage<QmsIncomingInspectionTaskAqlRuleVO> search(QmsIncomingInspectionTaskAqlRuleSearchQO request);
/**
* 批量调整AQL规则
*/
void adjust(QmsIncomingInspectionTaskAqlRuleAdjustQO request);
} }

View File

@ -3,13 +3,17 @@ package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleAdjustQO;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule; import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule;
import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskAqlRuleMapper; import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskAqlRuleMapper;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/** /**
* 来料检验任务AQL规则 服务实现类 * 来料检验任务AQL规则 服务实现类
*/ */
@ -20,4 +24,20 @@ public class QmsIncomingInspectionTaskAqlRuleServiceImpl extends ServiceImpl<Qms
public IPage<QmsIncomingInspectionTaskAqlRuleVO> search(QmsIncomingInspectionTaskAqlRuleSearchQO request) { public IPage<QmsIncomingInspectionTaskAqlRuleVO> search(QmsIncomingInspectionTaskAqlRuleSearchQO request) {
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
} }
@Override
public void adjust(QmsIncomingInspectionTaskAqlRuleAdjustQO request) {
LocalDateTime now = LocalDateTime.now();
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
lambdaUpdate()
.ne(QmsIncomingInspectionTaskAqlRule::getUsedAqlType, request.getUsedAqlType())
.in(QmsIncomingInspectionTaskAqlRule::getId, request.getIds())
.set(QmsIncomingInspectionTaskAqlRule::getUsedAqlType, request.getUsedAqlType())
.set(QmsIncomingInspectionTaskAqlRule::getTriggerCategory, (short) 2)
.set(QmsIncomingInspectionTaskAqlRule::getTriggerTime, now)
.set(QmsIncomingInspectionTaskAqlRule::getTriggerUserId, userId)
.set(QmsIncomingInspectionTaskAqlRule::getTriggerUserName, userName)
.update();
}
} }

View File

@ -42,7 +42,7 @@
AND r.inspection_item_id = #{request.inspectionItemId} AND r.inspection_item_id = #{request.inspectionItemId}
</if> </if>
</where> </where>
ORDER BY r.id ASC ORDER BY t.id ASC, r.id ASC
</select> </select>
</mapper> </mapper>

View File

@ -78,6 +78,12 @@
<if test="request.submitEndDate != null"> <if test="request.submitEndDate != null">
AND t.submit_time &lt; #{request.submitEndDate} + INTERVAL '1 day' AND t.submit_time &lt; #{request.submitEndDate} + INTERVAL '1 day'
</if> </if>
<if test="request.inspectionBeginStartDate != null">
AND t.inspection_start_time >= #{request.inspectionBeginStartDate}
</if>
<if test="request.inspectionBeginEndDate != null">
AND t.inspection_start_time &lt; #{request.inspectionBeginEndDate} + INTERVAL '1 day'
</if>
<if test="request.inspectionStartDate != null"> <if test="request.inspectionStartDate != null">
AND t.inspection_finish_time &gt;= #{request.inspectionStartDate} AND t.inspection_finish_time &gt;= #{request.inspectionStartDate}
</if> </if>