From f50f1839aaa33be713561da03cf056662ac44f18 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 28 七月 2023 11:30:25 +0800
Subject: [PATCH] 增加app任务查看时间和查看位置 修改app任务详情为打卡时间和打卡位置

---
 ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java |   48 +++++++++------
 ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml                       |   12 +++
 ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java         |    1 
 ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java    |    2 
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java    |   78 +++++++++-----------------
 ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java            |    8 +-
 ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java                  |   25 ++++++++
 ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml                    |    3 +
 8 files changed, 100 insertions(+), 77 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
index 3910fd7..afe193d 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
@@ -50,6 +50,7 @@
         List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask);
         return getDataTable(list);
     }
+
     @ApiOperation("鍗曞叺绔� - 涓嬪彂缁欐垜鐨勪换鍔″垪琛�")
     @PreAuthorize("@ss.hasPermi('app:task:list')")
     @GetMapping("/listWithDetail")
@@ -99,6 +100,7 @@
     /**
      * 淇敼app浠诲姟绠$悊
      */
+    @ApiOperation("鎸囨尌绔�-淇敼浠诲姟")
     @PreAuthorize("@ss.hasPermi('app:task:edit')")
     @Log(title = "app浠诲姟绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java
index 3dfe20e..3bbdfba 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java
@@ -1,7 +1,9 @@
 package com.ruoyi.app.task.domain;
 
+import java.util.Date;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -50,6 +52,29 @@
     /** app浠诲姟璇︽儏淇℃伅 */
     @ApiModelProperty(notes = "app浠诲姟璇︽儏淇℃伅")
     private List<ArdAppTaskDetail> ardAppTaskDetailList;
+    /** 棣栨鏌ョ湅鏃堕棿 */
+    @Excel(name = "棣栨鏌ョ湅鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date viewTime;
+    /** 棣栨鏌ョ湅浣嶇疆 */
+    @Excel(name = "棣栨鏌ョ湅浣嶇疆")
+    private String viewPosition;
+
+    public Date getViewTime() {
+        return viewTime;
+    }
+
+    public void setViewTime(Date viewTime) {
+        this.viewTime = viewTime;
+    }
+
+    public String getViewPosition() {
+        return viewPosition;
+    }
+
+    public void setViewPosition(String viewPosition) {
+        this.viewPosition = viewPosition;
+    }
 
     public List<ArdAppTaskPic> getArdAppTaskPicList()
     {
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java
index e2279ec..9af3442 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java
@@ -68,12 +68,12 @@
 
     /** app浠诲姟璇︽儏鍥剧墖淇℃伅 */
     private List<ArdAppTaskDetailPic> ardAppTaskDetailPic;
-    /** 棣栨鏌ョ湅鏃堕棿 */
-    @Excel(name = "棣栨鏌ョ湅鏃堕棿")
+    /** 鎵撳崱鏃堕棿 */
+    @Excel(name = "鎵撳崱鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date viewTime;
-    /** 棣栨鏌ョ湅浣嶇疆 */
-    @Excel(name = "棣栨鏌ョ湅浣嶇疆")
+    /** 鎵撳崱浣嶇疆 */
+    @Excel(name = "鎵撳崱浣嶇疆")
     private String viewPosition;
 
     public Date getViewTime() {
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
index 8d18b1e..470081c 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
@@ -41,6 +41,7 @@
      * @return app浠诲姟璇︽儏闆嗗悎
      */
     public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask);
+
     public List<ArdAppTask> selectArdAppTaskListWithDetailById(ArdAppTask ardAppTask);
     /**
      * 鏂板app浠诲姟绠$悊
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
index ca958c8..b6986bd 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
@@ -57,8 +57,7 @@
         ArdAppTaskDetailPic ardAppTaskDetailPic = new ArdAppTaskDetailPic();
         ardAppTaskDetailPic.setTaskDetailId(id);
         List<ArdAppTaskDetailPic> ardAppTaskDetailPicList = ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicList(ardAppTaskDetailPic);
-        if(ardAppTaskDetailPicList.size()>0)
-        {
+        if (ardAppTaskDetailPicList.size() > 0) {
             appTaskDetail.setArdAppTaskDetailPic(ardAppTaskDetailPicList);
         }
         return appTaskDetail;
@@ -132,8 +131,7 @@
     public int updateArdAppTask(ArdAppTask ardAppTask) {
         ardAppTask.setUpdateBy(SecurityUtils.getUsername());
         ardAppTask.setUpdateTime(DateUtils.getNowDate());
-        ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId());
-        ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId());
+
         insertArdAppTaskPic(ardAppTask);
         insertArdAppTaskDetail(ardAppTask);
         return ardAppTaskMapper.updateArdAppTask(ardAppTask);
@@ -173,8 +171,10 @@
      */
     public void insertArdAppTaskPic(ArdAppTask ardAppTask) {
         List<ArdAppTaskPic> ardAppTaskPicList = ardAppTask.getArdAppTaskPicList();
-        String id = ardAppTask.getId();
         if (StringUtils.isNotNull(ardAppTaskPicList)) {
+            ardAppTaskMapper.deleteArdAppTaskPicByTaskId(ardAppTask.getId());
+            String id = ardAppTask.getId();
+
             List<ArdAppTaskPic> list = new ArrayList<ArdAppTaskPic>();
             for (ArdAppTaskPic ardAppTaskPic : ardAppTaskPicList) {
                 ardAppTaskPic.setId(IdUtils.simpleUUID());
@@ -193,21 +193,29 @@
      * @param ardAppTask app浠诲姟绠$悊瀵硅薄
      */
     public void insertArdAppTaskDetail(ArdAppTask ardAppTask) {
-        List<String> userIds = ardAppTask.getUserIds();
-        for (String userId : userIds) {
-            List<ArdAppTaskDetail> ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList();
-            String id = ardAppTask.getId();
-            if (StringUtils.isNotNull(ardAppTaskDetailList)) {
-                List<ArdAppTaskDetail> list = new ArrayList<ArdAppTaskDetail>();
-                for (ArdAppTaskDetail ardAppTaskDetail : ardAppTaskDetailList) {
-                    ardAppTaskDetail.setId(IdUtils.simpleUUID());
-                    ardAppTaskDetail.setStatus("0");
-                    ardAppTaskDetail.setTaskId(id);
-                    ardAppTaskDetail.setUserId(userId);
-                    list.add(ardAppTaskDetail);
-                }
-                if (list.size() > 0) {
-                    ardAppTaskMapper.batchArdAppTaskDetail(list);
+        List<ArdAppTaskDetail> ardAppTaskDetailList = ardAppTask.getArdAppTaskDetailList();
+        if (StringUtils.isNotNull(ardAppTaskDetailList)) {
+            if (ardAppTaskDetailList.size() > 0) {
+                List<String> userIds = ardAppTask.getUserIds();
+                if (userIds.size() > 0) {
+                    ardAppTaskMapper.deleteArdAppTaskDetailByTaskId(ardAppTask.getId());
+                    for (String userId : userIds) {
+                        String id = ardAppTask.getId();
+                        if (StringUtils.isNotNull(ardAppTaskDetailList)) {
+                            List<ArdAppTaskDetail> list = new ArrayList<ArdAppTaskDetail>();
+                            for (ArdAppTaskDetail ardAppTaskDetail : ardAppTaskDetailList) {
+                                ardAppTaskDetail.setId(IdUtils.simpleUUID());
+                                ardAppTaskDetail.setStatus("0");
+                                ardAppTaskDetail.setTaskId(id);
+                                ardAppTaskDetail.setUserId(userId);
+                                list.add(ardAppTaskDetail);
+                            }
+                            if (list.size() > 0) {
+
+                                ardAppTaskMapper.batchArdAppTaskDetail(list);
+                            }
+                        }
+                    }
                 }
             }
         }
diff --git a/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
index 0805696..61ed850 100644
--- a/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
+++ b/ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
@@ -15,6 +15,8 @@
         <result property="createTime" column="create_time"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
+        <result property="viewTime" column="view_time"/>
+        <result property="viewPosition" column="view_position"/>
     </resultMap>
     <resultMap id="ArdAppTaskSubResult" type="ArdAppTask" extends="ArdAppTaskResult">
         <collection property="ardAppTaskPicList" notNullColumn="sub2_id" javaType="java.util.List"
@@ -61,7 +63,9 @@
                c.create_by,
                c.create_time,
                c.update_by,
-               c.update_time
+               c.update_time,
+               c.view_time,
+               c.view_position
         from ard_app_task c
                  left join sys_dept d on d.dept_id = c.dept_id
                  left join sys_user u on u.user_id = c.user_id
@@ -77,6 +81,8 @@
                a.create_time,
                a.update_by,
                a.update_time,
+               a.view_time,
+               a.view_position,
                b.id as sub2_id,
                b.task_id as sub2_task_id,
                b.pic_url as sub2_pic_url,
@@ -190,6 +196,8 @@
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="viewTime != null">view_time = #{viewTime},</if>
+            <if test="viewPosition != null">view_position = #{viewPosition},</if>
         </trim>
         where id = #{id}
     </update>
@@ -282,7 +290,7 @@
                c.text,
                c.voice,
                c.status,
-               c.clock_in_pic_url
+               c.clock_in_pic_url,
                c.view_time,
                c.view_position
         from ard_app_task_detail c
diff --git a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
index 7907744..fb9ab8e 100644
--- a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
+++ b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -92,6 +92,9 @@
             <if test="camMaxVisibleDistance != null ">and c.cam_max_visible_distance = #{camMaxVisibleDistance}</if>
             <if test="camAlarmGuideEnable != null ">and c.cam_alarm_guide_enable = #{camAlarmGuideEnable}</if>
             <if test="loginId != null ">and c.login_id = #{loginId}</if>
+            <if test="deptId != null ">and (d.dept_id = #{deptId} OR d.dept_id IN ( SELECT t.dept_id FROM sys_dept t
+                WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) ))
+            </if>
             <!-- 鏁版嵁鑼冨洿杩囨护 -->
             ${params.dataScope}
         </where>
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
index a4dcc41..74ce1bd 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
@@ -23,8 +24,7 @@
  */
 @Aspect
 @Component
-public class DataScopeAspect
-{
+public class DataScopeAspect {
     /**
      * 鍏ㄩ儴鏁版嵁鏉冮檺
      */
@@ -56,22 +56,18 @@
     public static final String DATA_SCOPE = "dataScope";
 
     @Before("@annotation(controllerDataScope)")
-    public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable
-    {
+    public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
         clearDataScope(point);
         handleDataScope(point, controllerDataScope);
     }
 
-    protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope)
-    {
+    protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope) {
         // 鑾峰彇褰撳墠鐨勭敤鎴�
         LoginUser loginUser = SecurityUtils.getLoginUser();
-        if (StringUtils.isNotNull(loginUser))
-        {
+        if (StringUtils.isNotNull(loginUser)) {
             SysUser currentUser = loginUser.getUser();
             // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹�;濡傛灉鏄痑pp鎸囨尌绔紝鍒欎笉杩囨护鏁版嵁;
-            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
-            {
+            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
                 String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
                 dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
                         controllerDataScope.userAlias(), permission);
@@ -83,58 +79,42 @@
     /**
      * 鏁版嵁鑼冨洿杩囨护
      *
-     * @param joinPoint 鍒囩偣
-     * @param user 鐢ㄦ埛
-     * @param deptAlias 閮ㄩ棬鍒悕
-     * @param userAlias 鐢ㄦ埛鍒悕
+     * @param joinPoint  鍒囩偣
+     * @param user       鐢ㄦ埛
+     * @param deptAlias  閮ㄩ棬鍒悕
+     * @param userAlias  鐢ㄦ埛鍒悕
      * @param permission 鏉冮檺瀛楃
      */
-    public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission)
-    {
+    public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission) {
         StringBuilder sqlString = new StringBuilder();
         List<String> conditions = new ArrayList<String>();
 
-        for (SysRole role : user.getRoles())
-        {
+        for (SysRole role : user.getRoles()) {
             String dataScope = role.getDataScope();
-            if (!DATA_SCOPE_CUSTOM.equals(dataScope) && conditions.contains(dataScope))
-            {
+            if (!DATA_SCOPE_CUSTOM.equals(dataScope) && conditions.contains(dataScope)) {
                 continue;
             }
             if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions())
-                    && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
-            {
+                    && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) {
                 continue;
             }
-            if (DATA_SCOPE_ALL.equals(dataScope))
-            {
+            if (DATA_SCOPE_ALL.equals(dataScope)) {
                 sqlString = new StringBuilder();
                 break;
-            }
-            else if (DATA_SCOPE_CUSTOM.equals(dataScope))
-            {
+            } else if (DATA_SCOPE_CUSTOM.equals(dataScope)) {
                 sqlString.append(StringUtils.format(
                         " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias,
                         role.getRoleId()));
-            }
-            else if (DATA_SCOPE_DEPT.equals(dataScope))
-            {
+            } else if (DATA_SCOPE_DEPT.equals(dataScope)) {
                 sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
-            }
-            else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope))
-            {
+            } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {//" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or '{}'= any(string_to_array(ancestors,',') ))",
                 sqlString.append(StringUtils.format(
-                        " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or '{}'= any(string_to_array(ancestors,',') ))",
-                        deptAlias, user.getDeptId(), user.getDeptId()));
-            }
-            else if (DATA_SCOPE_SELF.equals(dataScope))
-            {
-                if (StringUtils.isNotBlank(userAlias))
-                {
+                        " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE CAST ( {} AS VARCHAR ) = ANY ( string_to_array( ancestors, ',' )))",
+                        deptAlias, user.getDeptId()));
+            } else if (DATA_SCOPE_SELF.equals(dataScope)) {
+                if (StringUtils.isNotBlank(userAlias)) {
                     sqlString.append(StringUtils.format(" OR {}.user_id = '{}' ", userAlias, user.getUserId()));
-                }
-                else
-                {
+                } else {
                     // 鏁版嵁鏉冮檺涓轰粎鏈汉涓旀病鏈塽serAlias鍒悕涓嶆煡璇换浣曟暟鎹�
                     sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
                 }
@@ -142,11 +122,9 @@
             conditions.add(dataScope);
         }
 
-        if (StringUtils.isNotBlank(sqlString.toString()))
-        {
+        if (StringUtils.isNotBlank(sqlString.toString())) {
             Object params = joinPoint.getArgs()[0];
-            if (StringUtils.isNotNull(params) && params instanceof BaseEntity)
-            {
+            if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
                 BaseEntity baseEntity = (BaseEntity) params;
                 baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
             }
@@ -156,11 +134,9 @@
     /**
      * 鎷兼帴鏉冮檺sql鍓嶅厛娓呯┖params.dataScope鍙傛暟闃叉娉ㄥ叆
      */
-    private void clearDataScope(final JoinPoint joinPoint)
-    {
+    private void clearDataScope(final JoinPoint joinPoint) {
         Object params = joinPoint.getArgs()[0];
-        if (StringUtils.isNotNull(params) && params instanceof BaseEntity)
-        {
+        if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
             BaseEntity baseEntity = (BaseEntity) params;
             baseEntity.getParams().put(DATA_SCOPE, "");
         }

--
Gitblit v1.9.3