feat: add src/main/java/demo/ReleaseService.java
This commit is contained in:
36
src/main/java/demo/ReleaseService.java
Normal file
36
src/main/java/demo/ReleaseService.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package demo;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xingchen
|
||||||
|
* @description 维护放行规则审查服务
|
||||||
|
* @create 2026-09-25 10:04
|
||||||
|
*/
|
||||||
|
public final class ReleaseService {
|
||||||
|
/**
|
||||||
|
* 按固定顺序审查设备维护放行申请
|
||||||
|
*
|
||||||
|
* @param request 放行申请
|
||||||
|
* @param reviewDate 审查日期
|
||||||
|
* @return 放行决定和拒绝原因
|
||||||
|
*/
|
||||||
|
public ReleaseDecision review(ReleaseRequest request, LocalDate reviewDate) {
|
||||||
|
List<String> reasons = new ArrayList<>();
|
||||||
|
if (request == null || reviewDate == null) return new ReleaseDecision(false, List.of("申请或审查日缺失"));
|
||||||
|
if (request.equipmentId() == null || request.equipmentId().isBlank()) reasons.add("设备编号缺失");
|
||||||
|
if (request.maintainer() == null || request.maintainer().isBlank()) reasons.add("维护人缺失");
|
||||||
|
if (request.reviewer() == null || request.reviewer().isBlank()) reasons.add("复核人缺失");
|
||||||
|
if (request.maintainer() != null && request.maintainer().equals(request.reviewer())) reasons.add("维护与复核不能同人");
|
||||||
|
if (request.calibrationDate() == null || request.calibrationDate().isBefore(reviewDate)) reasons.add("校准已过期");
|
||||||
|
if (request.calibrationDate() != null && request.calibrationDate().isAfter(reviewDate.plusYears(2))) reasons.add("校准日期异常");
|
||||||
|
if (request.defects() == null) reasons.add("缺陷清单缺失");
|
||||||
|
else for (Defect defect : request.defects()) {
|
||||||
|
if (defect == null) { reasons.add("缺陷记录缺失"); continue; }
|
||||||
|
if (defect.critical() && !defect.closed()) reasons.add("关键缺陷未关闭: " + defect.code());
|
||||||
|
}
|
||||||
|
return new ReleaseDecision(reasons.isEmpty(), List.copyOf(reasons));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user