xiongchao hace 3 años
padre
commit
753ef7c116

+ 21 - 0
platform-common/src/main/java/com/platform/common/util/SecurityUtils.java

@@ -22,6 +22,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.oauth2.provider.OAuth2Authentication;
+import org.springframework.util.CollectionUtils;
 
 import java.security.Principal;
 import java.util.ArrayList;
@@ -207,4 +208,24 @@ public class SecurityUtils {
                 });
         return roleIds;
     }
+
+    /**
+     * 是否某个角色的人员
+     *
+     * @return 角色集合M
+     */
+    public Boolean isRole(String roleCode) {
+        UserInfo userInfo = getUserInfo();
+        List<String> roleCodes = userInfo.getRoleCodes();
+        boolean isMM = false;
+        if(CollectionUtils.isEmpty(roleCodes)){
+            return false;
+        }else{
+            if(roleCodes.contains(roleCode)){
+                return true;
+            }else{
+                return false;
+            }
+        }
+    }
 }

+ 1 - 1
platform-dao/src/main/java/com/platform/dao/vo/tuicalendar/TuiCalendar.java

@@ -19,7 +19,7 @@ public class TuiCalendar implements Serializable {
      */
     private List<CalendarInfo> calendarList;
     /**
-     *
+     * 日历id
      */
     private List<ScheduleInfo> scheduleList;
 

+ 8 - 1
platform-rest/src/main/java/com/platform/rest/controller/check/CheckJobController.java

@@ -117,7 +117,14 @@ public class CheckJobController {
   }
 
     /**
-     * 获取月日历任务列表
+     * 获取月日历任务列表,均是当月
+     * 1:获取某个设备所有当月任务,我设备里面调用,根据角色来判断:维修员或者现场人员返回自己的任务,管理员返回全部的
+     * 2:如果传递设备,则查询某一个设备的保养任务。
+     *
+     * 使用场景
+     *  1:我的任务,看到自己所有的任务
+     *  2:我的设备,看到自己负责的所有设备:这个设备调用接口根据角色返回设备台账,点击详情,点击日历图,看到这个设备的任务,根据角色返回
+     *  3:设备台账同2 一样
      *
      * @param checkJobDTO 点检任务DTO
      * @return R

+ 1 - 10
platform-rest/src/main/java/com/platform/rest/controller/index/IndexController.java

@@ -88,19 +88,10 @@ public class IndexController {
     @GetMapping("/gather/task/role/{sbId}")
     public R gatherTaskRole(@PathVariable(value = "sbId", required = false) String sbId) {
         UserInfo userInfo = SecurityUtils.getUserInfo();
-        List<String> roleCodes = userInfo.getRoleCodes();
-        boolean isMM = false;
-        for(String roleCode:roleCodes){
-            System.out.println("roleCode: " + roleCode);
-            if(roleCode.equals(SysRoleCodeEnum.MM.name())){
-                isMM = true;
-                break;
-            }
-        }
         // 当日,本周,本月待保养任务
         int lubricationTaskMyDay = checkJobService.countSbUserTask(sbId, userInfo.getUserId(), CheckStandardTypeEnum.POLLING.getValue());
         int lubricationTaskAllDay = 0;
-        if(isMM){
+        if(SecurityUtils.isRole(SysRoleCodeEnum.MM.name())){
             lubricationTaskAllDay = checkJobService.countSbUserTask(sbId, null, CheckStandardTypeEnum.POLLING.getValue());
         }
         return R.success(new GatherTaskVO()

+ 34 - 5
platform-service/src/main/java/com/platform/service/check/impl/CheckJobServiceImpl.java

@@ -126,8 +126,14 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
     @Override
     public TuiCalendar getTuiCalendar(CheckJobDTO model) {
         TuiCalendar tuiCalendar = new TuiCalendar();
-        model.setSearchStartTime(DateUtils.getFirstDayOfThisMonth());
+        // model.setSearchStartTime(DateUtils.getFirstDayOfThisMonth());
         model.setSearchEndTime(DateUtils.getLastDayOfThisMonth());
+
+        if(SecurityUtils.isRole(SysRoleCodeEnum.Opreator.name())|| SecurityUtils.isRole(SysRoleCodeEnum.Maintenance.name())){
+            model.setCheckUserId(SecurityUtils.getUserInfo().getUserId());
+        }else if(SecurityUtils.isRole(SysRoleCodeEnum.MM.name()) ){
+            // 默认维修主管看到是全部的,默认也是全部的
+        }
         List<CheckJobVO> voList = mapper.selectList(model);
 
         tuiCalendar.setCalendarList(TuiCalendarUtil.getCalendarInfoList());
@@ -658,12 +664,11 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
         }
         if (CheckPlanPeriodTypeEnum.DAY.getValue().equals(checkStandard.getPeriodType())) {
             startDate = DateUtils.plus(localDateTime.toLocalDate(), checkStandard.getPeriod(), ChronoUnit.DAYS);
-            endDate = DateUtils.plus(localDateTime.toLocalDate(), checkStandard.getPeriod() + 2, ChronoUnit.DAYS);
+            endDate = DateUtils.plus(startDate, checkStandard.getPeriod() + 2, ChronoUnit.DAYS);
         }
         if (CheckPlanPeriodTypeEnum.WEEK.getValue().equals(checkStandard.getPeriodType())) {
             startDate = DateUtils.plus(localDateTime.toLocalDate(), checkStandard.getPeriod() * 7, ChronoUnit.DAYS);
-            endDate = DateUtils.plus(localDateTime.toLocalDate(), checkStandard.getPeriod() * 7 + 2, ChronoUnit.DAYS);
-
+            endDate = DateUtils.plus(startDate, checkStandard.getPeriod() * 7 + 2, ChronoUnit.DAYS);
         }
         if (CheckPlanPeriodTypeEnum.MONTH.getValue().equals(checkStandard.getPeriodType())) {
             startDate = DateUtils.plus(localDateTime.toLocalDate(), checkStandard.getPeriod(), ChronoUnit.MONTHS);
@@ -684,6 +689,26 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
         checkStandard.setNextDate(endDate);
     }
 
+    public LocalDate getCheckJobEndDate(LocalDate startDate, Integer period, Integer periodType){
+        LocalDate endDate = null;
+        if (CheckPlanPeriodTypeEnum.DAY.getValue().equals(periodType)) {
+            endDate = DateUtils.plus(startDate, 0, ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.WEEK.getValue().equals(periodType)) {
+              endDate = DateUtils.plus(startDate, 2, ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.MONTH.getValue().equals(periodType)) {
+            endDate = DateUtils.plus(startDate, 10, ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.SEASON.getValue().equals(periodType)) {
+            endDate = DateUtils.plus(startDate, 20, ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.YEAR.getValue().equals(periodType)) {
+           endDate = DateUtils.plus(startDate, 60, ChronoUnit.DAYS);
+        }
+        return endDate;
+    }
+
     @Override
     public CheckJobVO getDetail(Object id) {
         CheckJobVO vo = mapper.selectDetail(id);
@@ -906,7 +931,11 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
     public int countSbUserTask(String sbId, String userId, Integer type ) {
         Weekend<CheckJob> weekend = new Weekend<>(CheckJob.class);
         WeekendCriteria<CheckJob, Object> weekendCriteria = weekend.weekendCriteria();
-        weekendCriteria.andEqualTo(CheckJob::getSbId, sbId);
+        if(StringUtils.isNotBlank(sbId)){
+            weekendCriteria.andEqualTo(CheckJob::getSbId, sbId);
+        }
+
+        // 截止到当天的任务
         weekendCriteria.andLessThan(CheckJob::getStartTime, DateUtils.getTodayEndTime());
         if(StringUtils.isNotBlank(userId)){
             weekendCriteria.andEqualTo(CheckJob::getCheckUserId, userId);

+ 2 - 1
platform-service/src/main/java/com/platform/service/check/impl/CheckStandardServiceImpl.java

@@ -305,7 +305,8 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
 
     /**
      * 设置时间直接生成任务
-     *
+     * 1:需要判断该日期之前是否有未完成的任务,如果有,则抛出提示,不能生成,直接提示去完成改任务即可
+     * 2:在当前日没有的任务,则直接生成,这个不会影响后期任务的生成。后期任务会根据这个来重新生成
      * @param checkJobDTO
      */
     @Override

+ 5 - 2
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -451,10 +451,13 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         if(sbInfo.getRepairUserSecond() == null){
             throw new BusinessException("设备的第二维修人未设置,无法接受任务");
         }
+        if(!SecurityUtils.isRole(SysRoleCodeEnum.MM.name()) && !SecurityUtils.isRole(SysRoleCodeEnum.Maintenance.name()) ){
+            throw new BusinessException("您不是维修人或维修主管,无法接受任务");
+        }
 
-        if (!sbInfo.getRepairUser().equals(userInfo.getUserId()) && !sbInfo.getRepairUserSecond().equals(userInfo.getUserId())) {
+       /* if (!sbInfo.getRepairUser().equals(userInfo.getUserId()) && !sbInfo.getRepairUserSecond().equals(userInfo.getUserId())) {
             throw new BusinessException("您不是该设备的第一维修人或第二维修人,无法接受任务");
-        }
+        }*/
         applicationForm.setRepairUserId(userInfo.getUserId());
         applicationForm.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
         if(applicationForm.getRepairStartTime() == null){