Selaa lähdekoodia

[chg] 年检状态消息细化

wcz 5 vuotta sitten
vanhempi
commit
756a6343f8

+ 23 - 20
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/controller/AnnualInspectionController.java

@@ -143,13 +143,15 @@ public class AnnualInspectionController {
     public RestResponse confirm(@Val @RequestBody AnnualInspection entity){
         AnnualInspection sameConfirm = annualInspectionService.sameConfirm(entity.getLiftId(), entity.getMtCompanyId(), entity.getPlanDate());
         if(Objects.nonNull(sameConfirm)){
-            return RestResponse.fail("年检计划已存在,创建于:" + sameConfirm.getCreateDate());
+            LocalDateTime createDate = sameConfirm.getCreateDate();
+            String message = Objects.isNull(createDate) ? "" : "创建于:" + createDate;
+            return RestResponse.fail(ValuePool.INSPECTION_EXIST_SAME + message);
         }
 
-        AnnualInspection current = annualInspectionService.findCurrentConfirm(entity.getLiftId(), entity.getMtCompanyId());
-        if(Objects.nonNull(current) && Objects.nonNull(current.getPlanDate())){
-            LocalDate deadline = current.getPlanDate().plusDays(DateUtils.daysOfYear());
-            Validate.notTrue(deadline.isBefore(entity.getPlanDate()), "上次年检" + current.getPlanDate() + ",计划年检设置" + deadline + "之前有效");
+        AnnualInspection previousConfirm = annualInspectionService.findPreviousConfirm(entity.getLiftId(), entity.getMtCompanyId());
+        if(Objects.nonNull(previousConfirm) && Objects.nonNull(previousConfirm.getPlanDate())){
+            LocalDate deadline = previousConfirm.getPlanDate().plusDays(DateUtils.daysOfYear());
+            Validate.notTrue(deadline.isBefore(entity.getPlanDate()), String.format(ValuePool.INSPECTION_LAST_PLAN_DATE, previousConfirm.getPlanDate(), deadline));
         }
 
         entity.setStatus(ValuePool.INSPECTION_STATUS_TO_DO);
@@ -190,7 +192,7 @@ public class AnnualInspectionController {
         AnnualInspection old = annualInspectionService.findByMtCompanyId(entity.getId(), entity.getMtCompanyId());
         Validate.notNull(old, ValuePool.INSPECTION_NOT_EXIST);
         Integer oldStepName = ValuePool.nullable(old.getStepName(), 1);
-        Validate.equals(oldStepName, ValuePool.INSPECTION_STEP_ONE, "年检第一阶段才能修改");
+        Validate.equals(oldStepName, ValuePool.INSPECTION_STEP_ONE, String.format(ValuePool.INSPECTION_MUST_ON_STEP, "第一阶段"));
         old.setIsCheckGoverner(entity.getIsCheckGoverner());
         old.setLoadInspectionSetting(entity.getLoadInspectionSetting());
 
@@ -212,9 +214,9 @@ public class AnnualInspectionController {
         Integer oldStepName = ValuePool.nullable(old.getStepName(), 1);
         Integer oldStepStatus = ValuePool.nullable(old.getStepStatus(), 2);
         Integer stepStatus = entity.getStepStatus();
-        Validate.equals(oldStepName, ValuePool.INSPECTION_STEP_ONE, "请先完成确认操作再进行第一阶段");
-        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CONFIRM, ValuePool.INSPECTION_STAGE_SELFCHECK, "年检当前状态(" + oldStepStatus + "),无法进行第一阶段操作");
-        Validate.equals(stepStatus, ValuePool.INSPECTION_STAGE_SELFCHECK, "年检新状态(" + stepStatus + "),无法进行第一阶段操作");
+        Validate.equals(oldStepName, ValuePool.INSPECTION_STEP_ONE, String.format(ValuePool.INSPECTION_STEP_TO_NEXT, "确认操作", "第一阶段"));
+        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CONFIRM, ValuePool.INSPECTION_STAGE_SELFCHECK, String.format(ValuePool.INSPECTION_CURRENT_STEP_STATUS_ILLEGAL, oldStepStatus, "第一阶段"));
+        Validate.equals(stepStatus, ValuePool.INSPECTION_STAGE_SELFCHECK, String.format(ValuePool.INSPECTION_NEW_STEP_STATUS_ILLEGAL, stepStatus, "第一阶段"));
 
         old.setSelfcheckReportImg(entity.getSelfcheckReportImg());
         old.setSelfcheckDate(entity.getSelfcheckDate());
@@ -237,8 +239,8 @@ public class AnnualInspectionController {
         Validate.notNull(old, ValuePool.INSPECTION_NOT_EXIST);
         Integer oldStepName = ValuePool.nullable(old.getStepName(), 2);
         Integer oldStepStatus = ValuePool.nullable(old.getStepStatus(), 2);
-        Validate.between(oldStepName, ValuePool.INSPECTION_STEP_ONE,ValuePool.INSPECTION_STEP_TWO, "请先完成第一阶段再进行第二阶段");
-        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_SELFCHECK, ValuePool.INSPECTION_STAGE_CONFIRM_CHECK, "年检当前状态(" + oldStepStatus + "),无法进行第二阶段操作");
+        Validate.between(oldStepName, ValuePool.INSPECTION_STEP_ONE,ValuePool.INSPECTION_STEP_TWO, String.format(ValuePool.INSPECTION_STEP_TO_NEXT, "第一阶段", "第二阶段"));
+        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_SELFCHECK, ValuePool.INSPECTION_STAGE_CONFIRM_CHECK, String.format(ValuePool.INSPECTION_CURRENT_STEP_STATUS_ILLEGAL, oldStepStatus, "第二阶段"));
 
         old.setCheckDate(entity.getCheckDate());
         old.setInspector(entity.getInspector());
@@ -286,12 +288,13 @@ public class AnnualInspectionController {
         Integer oldStepName = ValuePool.nullable(old.getStepName(), 2);
         Integer oldStepStatus = ValuePool.nullable(old.getStepStatus(), 3);
         Integer stepStatus = entity.getStepStatus();
-        Validate.between(oldStepName,ValuePool.INSPECTION_STEP_TWO, ValuePool.INSPECTION_STEP_THREE, "请先完成第二阶段再进行第三阶段");
-        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CONFIRM_CHECK, ValuePool.INSPECTION_STAGE_CHECK_UNQUALIFIED, "年检当前状态(" + oldStepStatus + "),无法进行第三阶段操作");
-        Validate.between(stepStatus, ValuePool.INSPECTION_STAGE_UPLOAD_CHECK, ValuePool.INSPECTION_STAGE_CHECK_UNQUALIFIED, "年检新状态(" + stepStatus + "),无法进行第三阶段操作");
-        if(Objects.nonNull(old.getPlanDate())){
-            LocalDate deadline = old.getPlanDate().plusDays(DateUtils.daysOfYear());
-            Validate.notTrue(deadline.isBefore(entity.getNextInspectionTime()), "上次年检" + old.getPlanDate() + ",下次年检设置" + deadline + "之前有效");
+        Validate.between(oldStepName,ValuePool.INSPECTION_STEP_TWO, ValuePool.INSPECTION_STEP_THREE, String.format(ValuePool.INSPECTION_STEP_TO_NEXT, "第二阶段", "第三阶段"));
+        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CONFIRM_CHECK, ValuePool.INSPECTION_STAGE_CHECK_UNQUALIFIED, String.format(ValuePool.INSPECTION_CURRENT_STEP_STATUS_ILLEGAL, oldStepStatus, "第三阶段"));
+        Validate.between(stepStatus, ValuePool.INSPECTION_STAGE_UPLOAD_CHECK, ValuePool.INSPECTION_STAGE_CHECK_UNQUALIFIED, String.format(ValuePool.INSPECTION_NEW_STEP_STATUS_ILLEGAL, stepStatus, "第三阶段"));
+        LocalDate oldPlanDate = old.getPlanDate();
+        if(Objects.nonNull(oldPlanDate)){
+            LocalDate deadline = oldPlanDate.plusDays(DateUtils.daysOfYear());
+            Validate.notTrue(deadline.isBefore(entity.getNextInspectionTime()), String.format(ValuePool.INSPECTION_LAST_PLAN_DATE, oldPlanDate, deadline));
         }
 
         old.setStepStatus(entity.getStepStatus());
@@ -323,9 +326,9 @@ public class AnnualInspectionController {
         Integer oldStepName = ValuePool.nullable(old.getStepName(), 3);
         Integer oldStepStatus = ValuePool.nullable(old.getStepStatus(), 5);
         Integer stepStatus = entity.getStepStatus();
-        Validate.between(oldStepName,ValuePool.INSPECTION_STEP_THREE, ValuePool.INSPECTION_STEP_FOUR, "请先完成第三阶段再进行第四阶段");
-        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CHECK_QUALIFIED, ValuePool.INSPECTION_STAGE_CERT_REPORT_UNQUALIFIED, "年检当前状态(" + oldStepStatus + "),无法进行第四阶段操作");
-        Validate.between(stepStatus, ValuePool.INSPECTION_STAGE_UPLOAD_CERT_REPORT, ValuePool.INSPECTION_STAGE_CERT_REPORT_UNQUALIFIED, "年检新状态(" + stepStatus + "),无法进行第四阶段操作");
+        Validate.between(oldStepName, ValuePool.INSPECTION_STEP_THREE, ValuePool.INSPECTION_STEP_FOUR, String.format(ValuePool.INSPECTION_STEP_TO_NEXT, "第三阶段", "第四阶段"));
+        Validate.between(oldStepStatus, ValuePool.INSPECTION_STAGE_CHECK_QUALIFIED, ValuePool.INSPECTION_STAGE_CERT_REPORT_UNQUALIFIED, String.format(ValuePool.INSPECTION_CURRENT_STEP_STATUS_ILLEGAL, oldStepStatus, "第四阶段"));
+        Validate.between(stepStatus, ValuePool.INSPECTION_STAGE_UPLOAD_CERT_REPORT, ValuePool.INSPECTION_STAGE_CERT_REPORT_UNQUALIFIED, String.format(ValuePool.INSPECTION_NEW_STEP_STATUS_ILLEGAL, stepStatus, "第四阶段"));
 
         old.setStepStatus(entity.getStepStatus());
         old.setAnnualInspectionImg(entity.getAnnualInspectionImg());

+ 1 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/service/AnnualInspectionService.java

@@ -117,7 +117,7 @@ public class AnnualInspectionService extends ServiceImpl<AnnualInspectionMapper,
      * @param mtCompanyId 维保公司
      * @return AnnualInspection
      */
-    public AnnualInspection findCurrentConfirm(Long liftId, Long mtCompanyId){
+    public AnnualInspection findPreviousConfirm(Long liftId, Long mtCompanyId){
         LambdaQueryWrapper<AnnualInspection> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(AnnualInspection::getLiftId, liftId);
         lambdaQueryWrapper.eq(AnnualInspection::getMtCompanyId, mtCompanyId);

+ 6 - 0
lift-common/src/main/java/cn.com.ty.lift.common/utils/ValuePool.java

@@ -185,6 +185,12 @@ public interface ValuePool {
      */
     int      INSPECTION_STAGE_CERT_REPORT_UNQUALIFIED = 10;
     String   INSPECTION_NOT_EXIST                     = "年检不存在,请确认年检计划";
+    String   INSPECTION_STEP_TO_NEXT                  = "请先完成%s再进行%s操作";
+    String   INSPECTION_CURRENT_STEP_STATUS_ILLEGAL   = "年检当前状态(%s),不能进行%s操作";
+    String   INSPECTION_NEW_STEP_STATUS_ILLEGAL       = "年检新状态(%s),不能进行%s操作";
+    String   INSPECTION_LAST_PLAN_DATE                = "上次年检时间%tF,下次年检设置%tF之前有效";
+    String   INSPECTION_MUST_ON_STEP                  = "年检必须在%s才能操作";
+    String   INSPECTION_EXIST_SAME                    = "年检计划已存在。";
     //===================急修相关状态值和判断方法======================================
     /**
      * 急修状态(-1 暂停中)

+ 47 - 43
lift-common/src/main/java/cn.com.ty.lift.common/verify/Validator.java

@@ -42,21 +42,27 @@ public class Validator {
     /**
      * the name of the verify method.
      */
-    private static final String                      validateMethodName     = "validate";
+    private static final String                      validateMethodName               = "validate";
     /**
      * the list of validation annotation & method can be work in {@code javax.validation.constraints.*}
      */
-    private static final Map<Class<?>, Method>       ClassMethodCache       = new ConcurrentHashMap<>();
-    private static final Map<Class<?>, MethodHandle> ClassMethodHandleCache = new ConcurrentHashMap<>();
-    private static final Map<Field, Annotation[]>    FieldAnnotationCache   = new ConcurrentHashMap<>();
+    private static final Map<Class<?>, Method>       annotationValidMethodCache       = new ConcurrentHashMap<>();
+    /**
+     * the cache for annotations of field.
+     */
+    private static final Map<Field, Annotation[]>    annotationOnFieldCache           = new ConcurrentHashMap<>();
+    /**
+     * MethodHandle
+     */
+    private static final Map<Class<?>, MethodHandle> annotationValidMethodHandleCache = new ConcurrentHashMap<>();
     /**
      * the max length for a valid email address local part.
      */
-    private static final int                         MAX_LOCAL_PART_LENGTH  = 64;
+    private static final int                         MAX_LOCAL_PART_LENGTH            = 64;
     /**
      * the regular expression for local part of a valid email address.
      */
-    private static final String                      LOCAL_PART_ATOM               = "[a-z0-9!#$%&'*+/=?^_`{|}~\u0080-\uFFFF-]";
+    private static final String                      LOCAL_PART_ATOM                  = "[a-z0-9!#$%&'*+/=?^_`{|}~\u0080-\uFFFF-]";
     /**
      * the regular expression for the local part of an email address.
      */
@@ -120,12 +126,12 @@ public class Validator {
      */
     private static final byte                    BYTE_ZERO            = (byte) 0;
     /**
-     * to private the constrctor.
+     * to private the constructor.
      */
     private Validator() {
     }
     /**
-     * collect all vaild validation annotation from the methods.
+     * collect all valid validation annotation from the methods.
      */
     static {
         collectValidAnnotationMethod();
@@ -133,19 +139,19 @@ public class Validator {
 
     private static void collectValidAnnotationMethod() {
         Method[] declaredMethods = ValidateAction.class.getDeclaredMethods();
-        List<Method> verifyMethods = Arrays.stream(declaredMethods).filter(method -> validateMethodName.equals(method.getName())).collect(Collectors.toList());
-        isTrue(verifyMethods.isEmpty(), "No any method named " + validateMethodName + " in ValidateAction.");
-        for (Method method : verifyMethods) {
-            Optional<Class<?>> classOptional = Arrays.stream(method.getParameterTypes()).filter(Annotation.class::isAssignableFrom).findFirst();
-            classOptional.ifPresent(verifyClass -> {
-                if (!method.isAccessible()) {
-                    method.setAccessible(true);
+        List<Method> validateMethods = Arrays.stream(declaredMethods).filter(method -> validateMethodName.equals(method.getName())).collect(Collectors.toList());
+        isTrue(validateMethods.isEmpty(), "No any method named %s in ValidateAction.", validateMethodName);
+        for (Method validateMethod : validateMethods) {
+            Optional<Class<?>> classOptional = Arrays.stream(validateMethod.getParameterTypes()).filter(Annotation.class::isAssignableFrom).findFirst();
+            classOptional.ifPresent(validateAnnotation -> {
+                if (!validateMethod.isAccessible()) {
+                    validateMethod.setAccessible(true);
                 }
-                ClassMethodCache.put(verifyClass, method);
-                log.info("@interface: {}", verifyClass.getCanonicalName());
+                annotationValidMethodCache.put(validateAnnotation, validateMethod);
+                log.info("@interface: {}", validateAnnotation.getCanonicalName());
             });
         }
-        isTrue(ClassMethodCache.isEmpty(), "No valid validation annotation was resolved in ValidateAction.");
+        isTrue(annotationValidMethodCache.isEmpty(), "No valid validation annotation was resolved in ValidateAction.");
     }
     /**
      * to do verify by using the singleton instance.
@@ -329,10 +335,10 @@ public class Validator {
     }
 
     /**
-     * compare two bigdecimal value
+     * compare two BigDecimal value
      *
      * @param value      any object value
-     * @param val        the bigdecimal value transform from the object value
+     * @param val        the BigDecimal value transform from the object value
      * @param bounds     the boundary of the maximum or minimum
      * @param treatNanAs return for the value isn't number when check for infinity
      * @return return {@code -1} for the val is less than boundary, {@code 0} for equal,{@code 1} for greater than boundary.
@@ -342,8 +348,7 @@ public class Validator {
             return val.compareTo(bounds);
         }
         if (isDouble(value)) {
-            Double v = (Double) value;
-            OptionalInt infinity = infinityCheck(v, treatNanAs);
+            OptionalInt infinity = infinityCheck((Double) value, treatNanAs);
             if (infinity.isPresent()) {
                 return infinity.getAsInt();
             } else {
@@ -351,8 +356,7 @@ public class Validator {
             }
         }
         if (isFloat(value)) {
-            Float v = (Float) value;
-            OptionalInt infinity = infinityCheck(v, treatNanAs);
+            OptionalInt infinity = infinityCheck((Float) value, treatNanAs);
             if (infinity.isPresent()) {
                 return infinity.getAsInt();
             } else {
@@ -386,11 +390,11 @@ public class Validator {
         }
         int count;
         if (value instanceof Iterator) {
-            Iterator<?> iter = (Iterator<?>) value;
+            Iterator<?> iterator = (Iterator<?>) value;
             count = 0;
-            while (iter.hasNext()) {
+            while (iterator.hasNext()) {
                 count++;
-                iter.next();
+                iterator.next();
             }
             return count;
         }
@@ -1453,18 +1457,18 @@ public class Validator {
         if (!field.isAccessible()) {
             field.setAccessible(true);
         }
-        if (FieldAnnotationCache.keySet().contains(field)) {
-            return FieldAnnotationCache.get(field);
+        if (annotationOnFieldCache.keySet().contains(field)) {
+            return annotationOnFieldCache.get(field);
         }
         //get all annotation of the field
         Annotation[] annotations = field.getDeclaredAnnotations();
         //filter the validation annotation
         if (notEmpty(annotations)) {
-            List<Annotation> validateAnnotations = Arrays.stream(annotations).filter(annotation -> ClassMethodCache.keySet().contains(annotation.annotationType())).collect(Collectors.toList());
+            List<Annotation> validateAnnotations = Arrays.stream(annotations).filter(annotation -> annotationValidMethodCache.keySet().contains(annotation.annotationType())).collect(Collectors.toList());
             annotations = validateAnnotations.toArray(new Annotation[validateAnnotations.size()]);
         }
-        FieldAnnotationCache.put(field, annotations);
-        log.info("Get Declared annotation on field '{}', cache size: {}", field.getName(), FieldAnnotationCache.size());
+        annotationOnFieldCache.put(field, annotations);
+        log.info("Get Declared annotation on field '{}', cache size: {}", field.getName(), annotationOnFieldCache.size());
         return annotations;
     }
 
@@ -1486,8 +1490,8 @@ public class Validator {
     }
 
     private static Method lookupMethod(final Class<?> target, final String methodName, final Class<?> annotationType) {
-        if (ClassMethodCache.keySet().contains(annotationType)) {
-            return ClassMethodCache.get(annotationType);
+        if (annotationValidMethodCache.keySet().contains(annotationType)) {
+            return annotationValidMethodCache.get(annotationType);
         }
         final Method method;
         try {
@@ -1498,7 +1502,7 @@ public class Validator {
         if (!method.isAccessible()) {
             method.setAccessible(true);
         }
-        ClassMethodCache.put(annotationType, method);
+        annotationValidMethodCache.put(annotationType, method);
         return method;
     }
 
@@ -1511,8 +1515,8 @@ public class Validator {
      * @return MethodHandle
      */
     private static MethodHandle lookupMethod(final MethodHandles.Lookup lookup, final String methodName, final Class<?> annotationType) {
-        if (ClassMethodHandleCache.keySet().contains(annotationType)) {
-            return ClassMethodHandleCache.get(annotationType);
+        if (annotationValidMethodHandleCache.keySet().contains(annotationType)) {
+            return annotationValidMethodHandleCache.get(annotationType);
         }
         final Class<?> lookupClass = lookup.lookupClass();
         final MethodHandle methodHandle;
@@ -1522,7 +1526,7 @@ public class Validator {
         } catch (NoSuchMethodException | IllegalAccessException e) {
             throw newIllegalArgException("No such method [%s(%s)] in %s.", methodName, methodType, lookupClass.getName());
         }
-        ClassMethodHandleCache.put(annotationType, methodHandle);
+        annotationValidMethodHandleCache.put(annotationType, methodHandle);
         return methodHandle;
     }
 
@@ -1603,7 +1607,7 @@ public class Validator {
      * @return the message has format if necessary
      */
     private static String format(String message, Object... values) {
-        if(message.contains("%s") && null != values && values.length > 0) {
+        if(message.contains("%s") && notEmpty(values)) {
             return String.format(message, values);
         }
         return message;
@@ -1614,13 +1618,13 @@ public class Validator {
      * @param object any object.
      * @param message    if {@code true} that throw a {@link IllegalArgumentException} with message.
      */
-    private static void isNull(Object object, String message) {
-        isTrue(Objects.isNull(object), message);
+    private static void isNull(Object object, String message, Object... values) {
+        isTrue(Objects.isNull(object), message, values);
     }
 
-    private static void isTrue(boolean expression, String message) {
+    private static void isTrue(boolean expression, String message, Object... values) {
         if (expression) {
-            throw newIllegalArgException(message);
+            throw newIllegalArgException(format(message, values));
         }
     }