459242451@qq.com 3 gadi atpakaļ
vecāks
revīzija
2cee0094e0

+ 7 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/qdtl/TlInspectionPlanController.java

@@ -11,14 +11,7 @@ import com.ruoyi.qdtl.service.ITlInspectionPlanService;
 import com.ruoyi.qdtl.service.ITlInspectionPlanUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -113,4 +106,10 @@ public class TlInspectionPlanController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(tlInspectionPlanService.deleteTlInspectionPlanByIds(ids));
     }
+
+    @PreAuthorize("@ss.hasPermi('qdtl:plan:query')")
+    @GetMapping(value = "/getSchedule")
+    public AjaxResult getSchedule(@RequestParam(required = false) String nickName, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) {
+        return AjaxResult.success(tlInspectionPlanService.getSchedule(nickName, startDate, endDate));
+    }
 }

+ 27 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/domain/PlanSchedule.java

@@ -0,0 +1,27 @@
+package com.ruoyi.qdtl.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2022/5/5
+ * @Version V1.0
+ */
+@Data
+public class PlanSchedule {
+    private String effectDate;
+    private List<String> locations;
+    private List<String> timeUnit;
+    private List<PlanDetail> planDetails;
+
+    @Data
+    public static class PlanDetail {
+        private String queryDate;
+        private int week;
+        private String nickName;
+    }
+
+}

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/mapper/TlInspectionPlanMapper.java

@@ -66,4 +66,6 @@ public interface TlInspectionPlanMapper {
     List<PlanUser> queryPlanUser(@Param("id") Long id);
 
     List<TlInspectionPlan> queryPlanUserExcludeId(@Param("userId") Long userId, @Param("excludePlanId") Long excludePlanId);
+
+    List<TlInspectionPlan> queryByDatePeriod(@Param("startDate") String startDate, @Param("endDate") String endDate);
 }

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/service/ITlInspectionPlanService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.qdtl.service;
 
+import com.ruoyi.qdtl.domain.PlanSchedule;
 import com.ruoyi.qdtl.domain.PlanUser;
 import com.ruoyi.qdtl.domain.TlInspectionPlan;
 
@@ -63,4 +64,6 @@ public interface ITlInspectionPlanService {
     List<TlInspectionPlan> queryPlanByDate(String queryDate);
 
     List<PlanUser> queryPlanUser(Long id);
+
+    List<PlanSchedule> getSchedule(String nickName, String startDate, String endDate);
 }

+ 57 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/service/impl/TlInspectionPlanServiceImpl.java

@@ -8,7 +8,9 @@ import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.qdtl.domain.PlanSchedule;
 import com.ruoyi.qdtl.domain.PlanUser;
+import com.ruoyi.qdtl.domain.TlInspectionLocation;
 import com.ruoyi.qdtl.domain.TlInspectionPlan;
 import com.ruoyi.qdtl.domain.TlInspectionPlanUser;
 import com.ruoyi.qdtl.mapper.TlInspectionPlanMapper;
@@ -22,7 +24,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 巡检计划管理Service业务层处理
@@ -141,6 +145,59 @@ public class TlInspectionPlanServiceImpl implements ITlInspectionPlanService {
     }
 
     /**
+     * 获取排班表
+     *
+     * @param nickName
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    @Override
+    public List<PlanSchedule> getSchedule(String nickName, String startDate, String endDate) {
+        // 如果startDate或者endDate为空,则默认展示最近7天的
+        if (StrUtil.hasBlank(startDate, endDate)) {
+            startDate = DateUtil.today();
+            endDate = DateUtil.formatDate(DateUtil.offsetDay(new Date(), 7));
+        }
+        List<PlanSchedule> result = new ArrayList<>();
+        List<TlInspectionPlan> list = tlInspectionPlanMapper.queryByDatePeriod(startDate, endDate);
+        // 解析list
+        for (TlInspectionPlan inspectionPlan : list) {
+            PlanSchedule planSchedule = new PlanSchedule();
+            List<TlInspectionLocation> lineLocations = tlInspectionLocationService.queryLocationByLineId(inspectionPlan.getLineId());
+            planSchedule.setEffectDate(inspectionPlan.getStartDate() + "~" + inspectionPlan.getEndDate());
+            planSchedule.setLocations(lineLocations.stream().map(TlInspectionLocation::getLocationName).collect(Collectors.toList()));
+            planSchedule.setTimeUnit(StrUtil.split(inspectionPlan.getTimeUnit(), ","));
+            // 确定当前时间范围内的人员
+            List<DateTime> dateTimes = DateUtil.rangeToList(DateUtil.parseDate(startDate), DateUtil.parseDate(endDate), DateField.DAY_OF_YEAR);
+            List<PlanSchedule.PlanDetail> planDetails = new ArrayList<>();
+            // 查询计划的人员
+            TlInspectionPlanUser tlInspectionPlanUser = new TlInspectionPlanUser();
+            tlInspectionPlanUser.setPlanId(inspectionPlan.getId());
+            if (StrUtil.isNotBlank(nickName)) {
+                tlInspectionPlanUser.setNickName(nickName);
+            }
+            List<TlInspectionPlanUser> users = tlInspectionPlanUserService.selectTlInspectionPlanUserList(tlInspectionPlanUser);
+            String userText = users.stream().map(TlInspectionPlanUser::getNickName).collect(Collectors.joining("、"));
+            for (DateTime dateTime : dateTimes) {
+                PlanSchedule.PlanDetail planDetail = new PlanSchedule.PlanDetail();
+                planDetail.setQueryDate(DateUtil.formatDate(dateTime));
+                int week = DateUtil.dayOfWeek(dateTime);
+                planDetail.setWeek(week);
+                if (CollUtil.contains(StrUtil.split(inspectionPlan.getWeeks(), ","), Convert.toStr(week))) {
+                    planDetail.setNickName(userText);
+                } else {
+                    planDetail.setNickName("");
+                }
+                planDetails.add(planDetail);
+            }
+            planSchedule.setPlanDetails(planDetails);
+            result.add(planSchedule);
+        }
+        return result;
+    }
+
+    /**
      * 校验计划中用户是否存在重复的
      *
      * @param tlInspectionPlan 待校验的计划数据

+ 8 - 0
ruoyi-system/src/main/resources/mapper/qdtl/TlInspectionPlanMapper.xml

@@ -81,6 +81,14 @@
           and t1.plan_id != #{excludePlanId}
     </select>
 
+    <select id="queryByDatePeriod" resultMap="TlInspectionPlanResult">
+        select *
+        from tl_inspection_plan
+        where start_date &lt;= #{startDate}
+          and end_date &gt;= #{endDate}
+          and status = '1'
+    </select>
+
     <insert id="insertTlInspectionPlan" parameterType="TlInspectionPlan" useGeneratedKeys="true" keyProperty="id">
         insert into tl_inspection_plan
         <trim prefix="(" suffix=")" suffixOverrides=",">