Просмотр исходного кода

Merge branch 'feature-wcz' of lift-manager/lift-server into develop

wucizhong 5 лет назад
Родитель
Сommit
9e9a981dd6

+ 15 - 22
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/controller/MaintenanceRecordController.java

@@ -39,13 +39,12 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- *  * <p>
+ * <p>
  * 维保管理-日常保养
  * <p>
  *
  * @author wcz
- *  * @since 2020/1/17 17:24
- *
+ * @since 2020/1/17 17:24
  */
 @Slf4j
 @AllArgsConstructor
@@ -61,9 +60,6 @@ public class MaintenanceRecordController {
     private ProjectLiftRelevanceService projectLiftRelevanceService;
     private EvaluationService           evaluationService;
 
-    //法规维保间隔15天
-    private static final int maintenance_interval = 15;
-
     /**
      * 根据条件分页查询维保-日常保养
      *
@@ -88,7 +84,7 @@ public class MaintenanceRecordController {
     @Validation(fields = {"mtCompanyId"})
     public RestResponse pagePlan(@Val @RequestBody MtPlanRequest request) {
         IPage<MtPlanResponse> pages = maintenancePlanService.pagePlanByCondition(request);
-        Validate.notNull(pages, "维保计划不存在,请核查");
+        Validate.notNull(pages, ValuePool.MAINTENANCE_PLAN_NOT_EXIST);
         List<MtPlanResponse> records = pages.getRecords();
         if (!records.isEmpty()) {
             List<ProjectLiftRelevance> relevances = projectLiftRelevanceService.listByMtCompany(request.getMtCompanyId());
@@ -98,7 +94,7 @@ public class MaintenanceRecordController {
                 //如果存在设置的计划间隔
                 if (liftRelevance.isPresent()) {
                     ProjectLiftRelevance relevance = liftRelevance.get();
-                    int subtract = maintenance_interval - relevance.getPlanInterval();
+                    int subtract = ValuePool.MAINTENANCE_INTERVAL - relevance.getPlanInterval();
                     //如果设置的计划间隔 >= 法规间隔,直接判断为法规超期;超期类型,1计划超期,2法规超期
                     if (0 >= subtract) {
                         record.setOverdue(2);
@@ -132,7 +128,7 @@ public class MaintenanceRecordController {
     @Validation(fields = {"id"})
     public RestResponse one(@Val @RequestBody MtRecordRequest request) {
         MtRecordResponse entity = maintenanceRecordService.infoById(request);
-        Validate.notNull(entity, "维保记录不存在,请核查");
+        Validate.notNull(entity, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
         /**
          * 维保项id:0/1/2, 0:无需保养,1:已保养,2:需要更换
          * 保养项目  用键值对的方式存储,如(1:0,2:1,3:1...)
@@ -186,7 +182,7 @@ public class MaintenanceRecordController {
         Integer liftCategory = request.getLiftCategory();
         Long mtCompanyId = request.getMtCompanyId();
         List<MaintenanceOption> optionList = maintenanceOptionService.listByTypeAndLiftCategory(type, liftCategory, mtCompanyId);
-        Validate.notTrue(IterUtil.isEmpty(optionList), "维保操作项不存在,请核查");
+        Validate.notTrue(IterUtil.isEmpty(optionList), ValuePool.MAINTENANCE_OPTION_NOT_EXIST);
         //按照sort groupby
         Map<Integer, List<MaintenanceOption>> mtOptionMap = optionList.stream().collect(Collectors.groupingBy(MaintenanceOption::getSort));
         List<MtOptionTree> mtOptionTrees = new ArrayList<>();
@@ -265,8 +261,8 @@ public class MaintenanceRecordController {
     @Validation(fields = {"id"})
     public RestResponse pass(@Val @RequestBody MtRecordRequest request) {
         MaintenanceRecord entity = maintenanceRecordService.getById(request.getId());
-        Validate.notNull(entity, "维保记录不存在,请核查");
-        Validate.notTrue("-1".equals(entity.getStatus()), "维保单必须待审核才能操作");
+        Validate.notNull(entity, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
+        Validate.notTrue("-1".equals(entity.getStatus()), ValuePool.MAINTENANCE_RECORD_MUST_AUDITING);
         entity.setStatus("2");
         return maintenanceRecordService.pass(entity);
     }
@@ -281,8 +277,8 @@ public class MaintenanceRecordController {
     @Validation(fields = {"id"})
     public RestResponse refuse(@Val @RequestBody MtRecordRequest request) {
         MaintenanceRecord entity = maintenanceRecordService.getById(request.getId());
-        Validate.notNull(entity, "维保记录不存在,请核查");
-        Validate.notTrue("-1".equals(entity.getStatus()), "维保单必须待审核才能操作");
+        Validate.notNull(entity, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
+        Validate.notTrue("-1".equals(entity.getStatus()), ValuePool.MAINTENANCE_RECORD_MUST_AUDITING);
         boolean result = maintenanceRecordService.removeById(entity.getId());
         return RestResponse.success(result);
     }
@@ -297,7 +293,7 @@ public class MaintenanceRecordController {
     @Validation(fields = {"id", "maintenanceOption", "imgs"})
     public RestResponse fill(@Val @RequestBody MtRecordRequest request) {
         MaintenanceRecord entity = maintenanceRecordService.getById(request.getId());
-        Validate.notNull(entity, "维保记录不存在,请核查");
+        Validate.notNull(entity, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
 
         String maintenanceOption = request.getMaintenanceOption();
         entity.setMaintenanceOption(maintenanceOption);
@@ -330,22 +326,19 @@ public class MaintenanceRecordController {
             return RestResponse.success(true);
         }
         MaintenanceRecord record = maintenanceRecordService.getById(request.getId());
-        Validate.notNull(record, "维保记录不存在,请核查");
+        Validate.notNull(record, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
         return maintenanceRecordService.deleteCost(record, mtRecordCost);
     }
 
     /**
-     * 维保评价,同时修改维保记录的status -> 3
-     *
-     * @param entity
-     * @return
+     * 维保评价,同时修改维保记录的HasEvaluate -> 1
      */
     @PostMapping("evaluate")
     public RestResponse evaluate(@Valid @RequestBody Evaluation entity) {
         MaintenanceRecord record = maintenanceRecordService.getById(entity.getRecordId());
-        Validate.notNull(record, "维保记录不存在,请核查");
+        Validate.notNull(record, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
         //状态 -1:待审核,0:待处理,1:已签到,保养中,2:完成保养,待评价,3:完成。
-        Validate.isTrue("2".equals(record.getStatus()), "完成维保后才能评价");
+        Validate.isTrue("2".equals(record.getStatus()), ValuePool.MAINTENANCE_RECORD_MUST_COMPLETE);
         //来源(1 维保;2 急修)
         entity.setSource(1);
         entity.setLiftId(record.getLiftId());

+ 9 - 2
lift-common/src/main/java/cn.com.ty.lift.common/utils/ValuePool.java

@@ -274,7 +274,7 @@ public interface ValuePool {
     String   ATTEND_PM_DOWN_CLOCK                     = "下午下班打卡";
     String   ATTEND_OT_TOP_CLOCK                      = "加班上班打卡";
     String   ATTEND_OT_DOWN_CLOCK                     = "加班下班打卡";
-    String   ATTEND_HAD_CLOCK                         = "记录已存在(打卡时间:%tF %tT)";
+    String   ATTEND_HAD_CLOCK                         = "打卡记录已存在。";
     String   ATTEND_MISSING_TIME                      = "请至少设置一组打卡时间";
     String   ATTEND_AM_DOWN_PM_TOP                    = "下午的上班(%tT)时间不得早于上午的下班(%tT)时间";
     String   ATTEND_PM_DOWN_OT_TOP                    = "加班的上班(%tT)时间不得早于下午的下班(%tT)时间";
@@ -289,8 +289,15 @@ public interface ValuePool {
      */
     int      EXCEL_IMPORT_MAX_ROWS_ONETIME            = 5000;
     String   EXCEL_IMPORT_MAX_ROWS_DESC               = "一次性导入不能超过5000条数据";
-
+    //三元运算,判断object是否为空,为空返回默认值
     static <T> T nullable(T object, T valueForNull) {
         return Objects.isNull(object) ? valueForNull : object;
     }
+    String MAINTENANCE_RECORD_NOT_EXIST = "维保记录不存在,请核查";
+    String MAINTENANCE_PLAN_NOT_EXIST = "维保计划不存在,请核查";
+    String MAINTENANCE_OPTION_NOT_EXIST = "维保操作项不存在,请核查";
+    String MAINTENANCE_RECORD_MUST_AUDITING = "维保单必须待审核才能操作,请核查";
+    String MAINTENANCE_RECORD_MUST_COMPLETE = "维保单必须完成后才能操作,请核查";
+    //法规维保间隔15天
+    int MAINTENANCE_INTERVAL = 15;
 }

+ 5 - 6
lift-common/src/main/java/cn.com.ty.lift.common/verify/Validator.java

@@ -1440,7 +1440,7 @@ public class Validator {
             }
             validateFields.add(validateField);
         }
-        //if vaild fields is empty
+        //if valid fields is empty
         if (validateFields.isEmpty()) {
             throw newIllegalArgException("The specified field names did not resolve any available fields to verify.");
         }
@@ -1464,8 +1464,7 @@ public class Validator {
         Annotation[] annotations = field.getDeclaredAnnotations();
         //filter the validation annotation
         if (notEmpty(annotations)) {
-            List<Annotation> validateAnnotations = Arrays.stream(annotations).filter(annotation -> annotationValidMethodCache.keySet().contains(annotation.annotationType())).collect(Collectors.toList());
-            annotations = validateAnnotations.toArray(new Annotation[validateAnnotations.size()]);
+            annotations = Arrays.stream(annotations).filter(annotation -> annotationValidMethodCache.keySet().contains(annotation.annotationType())).toArray(Annotation[]::new);
         }
         annotationOnFieldCache.put(field, annotations);
         log.info("Get Declared annotation on field '{}', cache size: {}", field.getName(), annotationOnFieldCache.size());
@@ -1572,12 +1571,12 @@ public class Validator {
      * @param validateField the field to valid.
      * @param value      the value of the field.
      * @param method     the method to action
-     * @param verifyAnno the validation annotation of the field.
+     * @param validateAnnotation the validation annotation of the field.
      */
-    private static void write(Field validateField, Object value, Method method, Annotation verifyAnno) {
+    private static void write(Field validateField, Object value, Method method, Annotation validateAnnotation) {
         log.warn("###| FIELD       : {}", validateField);
         log.warn("###| FIELD_VALUE : {}", value);
-        log.warn("###| METHOD      : (false) {}(Object,{})", method.getName(), verifyAnno.annotationType().getName());
+        log.warn("###| METHOD      : (false) {}(Object,{})", method.getName(), validateAnnotation.annotationType().getName());
     }
     /**
      * create a {@link IllegalArgumentException} with the message.

+ 2 - 4
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/controller/AnnouncementController.java

@@ -119,10 +119,8 @@ public class AnnouncementController {
      * @return RestResponse
      */
     @PostMapping("delete")
-    @Validation(fields = {"id"})
+    @Validation(fields = {"id", "mtCompanyId"})
     public RestResponse delete(@Val @RequestBody AnnouncementRequest request) {
-        boolean result = announcementService.removeById(request.getId());
-        return RestResponse.success(result);
-
+        return announcementService.removeByIdAndMtCompany(request.getId(), request.getMtCompanyId());
     }
 }

+ 5 - 2
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/controller/AttendanceController.java

@@ -30,6 +30,7 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.HashMap;
 import java.util.List;
@@ -182,7 +183,9 @@ public class AttendanceController {
         //先统计当天是否有对应的打卡记录
         Attendance same = attendanceService.sameByUserAndType(mtCompanyId, userId, type);
         if(Objects.nonNull(same)){
-            return RestResponse.fail(String.format(ValuePool.ATTEND_HAD_CLOCK, same.getCreateDate(), same.getCreateDate()));
+            LocalDateTime createDate = same.getCreateDate();
+            String message = Objects.isNull(createDate) ? "" : "(打卡时间:" + createDate + ")";
+            return RestResponse.fail(ValuePool.ATTEND_HAD_CLOCK + message);
         }
         MaintenanceCompany maintenanceCompany = maintenanceCompanyService.getById(mtCompanyId);
         Validate.notNull(maintenanceCompany, ValuePool.ATTEND_MAINTAIN_COMPANY_MISSING);
@@ -229,7 +232,7 @@ public class AttendanceController {
                 entity.setRemarks(ValuePool.ATTEND_OT_DOWN_CLOCK);
                 break;
             default:
-                return RestResponse.failParam();
+                return RestResponse.fail("打卡类型未知,请核查");
         }
         boolean result = attendanceService.save(entity);
         return RestResponse.success(result);

+ 13 - 4
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/controller/LiftCertificateController.java

@@ -68,14 +68,23 @@ public class LiftCertificateController {
      * @return RestResponse
      */
     @PostMapping("modify")
-    @Validation(fields = {"id"})
-    public RestResponse modify(@Valid @RequestBody LiftCertificate entity) {
+    @Validation(fields = {"id", "ownerId", "mtCompanyId", "code", "certificateType",
+            "expirationDate", "issuanceAgency", "firstImgUrl", "secondImgUrl"})
+    public RestResponse modify(@Val @RequestBody LiftCertificateRequest entity) {
         Long id = entity.getId();
         Long ownerId = entity.getOwnerId();
         Long mtCompanyId = entity.getMtCompanyId();
         LiftCertificate certificate = liftCertificateService.findByUserAndMtCompany(id, ownerId, mtCompanyId);
         Validate.notNull(certificate,ValuePool.LIFT_CERT_NOT_EXIST);
-        boolean result = liftCertificateService.updateById(entity);
+
+        certificate.setCode(entity.getCode());
+        certificate.setCertificateType(entity.getCertificateType());
+        certificate.setExpirationDate(entity.getExpirationDate());
+        certificate.setIssuanceAgency(entity.getIssuanceAgency());
+        certificate.setFirstImgUrl(entity.getFirstImgUrl());
+        certificate.setSecondImgUrl(entity.getSecondImgUrl());
+
+        boolean result = liftCertificateService.updateById(certificate);
         return RestResponse.success(result);
     }
 
@@ -85,7 +94,7 @@ public class LiftCertificateController {
      * @return RestResponse
      */
     @PostMapping("audit")
-    @Validation(fields = {"id"})
+    @Validation(fields = {"id", "pass"})
     public RestResponse audit(@Val @RequestBody LiftCertificateRequest request) {
         //0:无证,1:待审核,2:审核未通过,3:审核通过,4:超期
         LiftCertificate liftCertificate = liftCertificateService.getById(request.getId());

+ 31 - 0
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/dto/LiftCertificateRequest.java

@@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 
 /**
  * <p>
@@ -50,5 +52,34 @@ public class LiftCertificateRequest extends PageRequest {
     /**
      * 审核是否通过 true:通过,false:不通过
      */
+    @NotNull(message = "请指定是否审核通过")
     private boolean pass;
+    /**
+     * 操作证号
+     */
+    @NotBlank(message = "缺少操作证号")
+    private String code;
+    /**
+     * 发证单位
+     */
+    @NotBlank(message = "缺少发证单位")
+    private String issuanceAgency;
+
+    /**
+     * 有效期
+     */
+    @NotNull(message = "缺少操作证有效期")
+    private LocalDate expirationDate;
+
+    /**
+     * 第一张图片路径
+     */
+    @NotBlank(message = "缺少操作证正反面图片")
+    private String firstImgUrl;
+
+    /**
+     * 第二张图片路径
+     */
+    @NotBlank(message = "缺少操作证正反面图片")
+    private String secondImgUrl;
 }

+ 6 - 11
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/entity/LiftCertificate.java

@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.*;
 import java.time.LocalDate;
 
 /**
@@ -26,7 +23,6 @@ public class LiftCertificate extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     @TableId("id")
-    @Min(value = 1, message = "操作证ID有误")
     private Long id;
 
     /**
@@ -46,13 +42,13 @@ public class LiftCertificate extends BaseEntity {
     /**
      * 操作证号
      */
-    @NotEmpty(message = "缺少操作证号")
+    @NotBlank(message = "缺少操作证号")
     private String code;
 
     /**
      * 发证单位
      */
-    @NotEmpty(message = "缺少发证单位")
+    @NotBlank(message = "缺少发证单位")
     private String issuanceAgency;
 
     /**
@@ -64,25 +60,24 @@ public class LiftCertificate extends BaseEntity {
     /**
      * 证件类型
      */
-    @NotEmpty(message = "缺少证件类型")
+    @NotBlank(message = "缺少证件类型")
     private String certificateType;
 
     /**
      * 第一张图片路径
      */
-    @NotEmpty(message = "缺少操作证正反面图片")
+    @NotBlank(message = "缺少操作证正反面图片")
     private String firstImgUrl;
 
     /**
      * 第二张图片路径
      */
-    @NotEmpty(message = "缺少操作证正反面图片")
+    @NotBlank(message = "缺少操作证正反面图片")
     private String secondImgUrl;
 
     /**
      * 0:无证,1:待审核,2:审核未通过,3:审核通过,4:超期
      */
-    @Max(value = 4, message = "操作证状态有误")
     private Integer status;
     
 }

+ 7 - 1
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/service/AnnouncementImgService.java

@@ -34,7 +34,13 @@ public class AnnouncementImgService extends ServiceImpl<AnnouncementImgMapper, A
 
     public List<AnnouncementImg> listByAnnouncementIds(List<Long> announcementIds){
         LambdaQueryWrapper<AnnouncementImg> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.in(AnnouncementImg::getAnnouncementId,announcementIds);
+        lambdaQueryWrapper.in(AnnouncementImg::getAnnouncementId, announcementIds);
         return list(lambdaQueryWrapper);
     }
+
+    public boolean removeByAnnouncement(Long announcement){
+        LambdaQueryWrapper<AnnouncementImg> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(AnnouncementImg::getAnnouncementId, announcement);
+        return remove(lambdaQueryWrapper);
+    }
 }

+ 23 - 2
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/service/AnnouncementService.java

@@ -47,6 +47,28 @@ public class AnnouncementService extends ServiceImpl<AnnouncementMapper,Announce
         return count(lambdaQueryWrapper);
     }
 
+    private void rollback(){
+        //强制手动事务回滚
+        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public RestResponse removeByIdAndMtCompany(Long id, Long mtCompanyId){
+        LambdaQueryWrapper<Announcement> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(Announcement::getId, id);
+        lambdaQueryWrapper.eq(Announcement::getMtCompanyId, mtCompanyId);
+        boolean an = remove(lambdaQueryWrapper);
+        if(!an){
+            return RestResponse.fail("删除公告失败,请稍后重试");
+        }
+        boolean img = announcementImgService.removeByAnnouncement(id);
+        if(img){
+            return RestResponse.success(true);
+        }else{
+            rollback();
+            return RestResponse.fail("删除公告图片失败,请稍后重试");
+        }
+    }
     /**
      * 根据id查询,带全部关联信息
      * @param request AnnouncementRequest
@@ -86,8 +108,7 @@ public class AnnouncementService extends ServiceImpl<AnnouncementMapper,Announce
         if(ais){
             return RestResponse.success(true);
         }else{
-            //强制手动事务回滚
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            rollback();
             return RestResponse.fail("插入公告图片失败,请稍后重试");
         }
     }