Browse Source

2023-3-30 优化一体机查询根据一周的日期归类返回。

chaiyunlong 2 years ago
parent
commit
36c7ae9bcb

+ 79 - 2
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java

@@ -1,6 +1,7 @@
 package com.zd.base.app.controller;
 
 import com.zd.algorithm.api.xxp.feign.RemoteXxpService;
+import com.zd.base.app.domain.board.DutyPersonVo;
 import com.zd.base.app.domain.board.LabXxpSubjectVo;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.DateUtils;
@@ -155,7 +156,8 @@ public class LabBoardApi {
             if(null==dutyData || dutyData.getCode()!=HttpStatus.SUCCESS){
                 return ResultData.fail("值班人员列表获取失败!");
             }
-            return ResultData.success(dutyData.getData());
+            //处理人员信息,根据一周的日期分组
+            return ResultData.success(groupPersonInfo(allDate,dutyData.getData(),sdf));
         } catch (ParseException e) {
             e.printStackTrace();
         }
@@ -182,7 +184,8 @@ public class LabBoardApi {
             if(null==dutyData || dutyData.getCode()!=HttpStatus.SUCCESS){
                 return ResultData.fail("巡查人员列表获取失败!");
             }
-            return ResultData.success(dutyData.getData());
+            //处理人员信息,根据一周的日期分组
+            return ResultData.success(groupPersonInfo(allDate,dutyData.getData(),sdf));
         } catch (ParseException e) {
             e.printStackTrace();
         }
@@ -259,6 +262,80 @@ public class LabBoardApi {
     }
 
 
+    //处理分组一周内的人员信息
+    public DutyPersonVo groupPersonInfo(List<Date> allDate,List<Map<String, Object>> personList,SimpleDateFormat sdf){
+        StringBuffer startTimeStr = new StringBuffer();
+        DutyPersonVo dutyPersonVo = new DutyPersonVo();
+        for(int i=0;i<allDate.size();i++){
+            if(i==0){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday1().add(a);
+                            }
+                        });
+            }else if(i==1){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday2().add(a);
+                            }
+                        });
+            }else if(i==2){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday3().add(a);
+                            }
+                        });
+            }else if(i==3){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday4().add(a);
+                            }
+                        });
+            }else if(i==4){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday5().add(a);
+                            }
+                        });
+            }else if(i==5){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday6().add(a);
+                            }
+                        });
+            }else if(i==6){
+                startTimeStr.append(sdf.format(allDate.get(i)));
+                Optional.ofNullable(personList).orElseGet(Collections::emptyList)
+                        .stream()
+                        .forEach(a->{
+                            if(startTimeStr.toString().equals(a.get("dutyTime"))){
+                                dutyPersonVo.getWeekday7().add(a);
+                            }
+                        });
+            }
+            startTimeStr.delete(0,startTimeStr.length());
+        }
+        return dutyPersonVo;
+    }
+
     public List<Date> dateToWeek(Date mdate) {
         int b = mdate.getDay();
         Date fdate;

+ 26 - 0
zd-modules/zd-base/src/main/java/com/zd/base/app/domain/board/DutyPersonVo.java

@@ -0,0 +1,26 @@
+package com.zd.base.app.domain.board;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Controller
+ *
+ * @author cyl
+ * @date 2023/3/30
+ */
+@ApiModel("返回一周的人员信息")
+@Data
+public class DutyPersonVo {
+    List <Map <String, Object>> weekday1 = new ArrayList <>();
+    List <Map <String, Object>> weekday2 = new ArrayList <>();
+    List <Map <String, Object>> weekday3 = new ArrayList <>();
+    List <Map <String, Object>> weekday4 = new ArrayList <>();
+    List <Map <String, Object>> weekday5 = new ArrayList <>();
+    List <Map <String, Object>> weekday6 = new ArrayList <>();
+    List <Map <String, Object>> weekday7 = new ArrayList <>();
+}

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpDutyMapper.xml

@@ -87,7 +87,7 @@
 
 
     <select id="selectDutyUserList" resultType="java.util.Map">
-        select user_name userName,user_phone userPhone,user_img userImg from  xxp_duty xxp
+        select user_name userName,user_phone userPhone,user_img userImg,duty_time dutyTime from  xxp_duty xxp
         <where>
             xxp.subject_id=#{labId}
             <if test="startTime!=null">

+ 14 - 1
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpInspectionMapper.xml

@@ -66,13 +66,26 @@
     </select>
 
     <select id="selectUserXxpInspectionList" resultType="java.util.Map">
-     SELECT user_id userId,
+
+    SELECT i.user_id userId,
+                i.user_name userName,
+                i.user_img userImg,
+                DATE_FORMAT(i.sign_in,'%Y-%m-%d %H:%i:%s') AS signTime,
+                date_format(MAX(i.sign_out),'%Y-%m-%d %H:%i:%s') AS signOut,
+                COUNT(1) AS signNumber,
+                d.duty_time dutyTime
+                FROM  `xxp_inspection` i left join xxp_duty d on DATE_FORMAT(i.sign_in,'%Y-%m-%d') = DATE_FORMAT(d.duty_time,'%Y-%m-%d')
+                and i.user_id = d.user_id and i.subject_id = d.subject_id
+                WHERE i.subject_id=#{labId} GROUP BY i.sign_in,i.user_id
+
+     <!--SELECT user_id userId,
             user_name userName,
             user_img userImg,
             DATE_FORMAT(sign_in,'%Y-%m-%d %H:%i:%s') AS signTime,
             date_format(MAX(sign_out),'%Y-%m-%d %H:%i:%s') AS signOut,
             COUNT(*) AS signNumber
             FROM  `xxp_inspection` WHERE subject_id=#{labId} GROUP BY signTime,user_id
+            -->
     </select>
 
     <insert id="insertXxpInspection" parameterType="com.zd.laboratory.domain.XxpInspection">