‘liusuyi’
2023-07-28 f50f1839aaa33be713561da03cf056662ac44f18
增加app任务查看时间和查看位置
修改app任务详情为打卡时间和打卡位置
已修改8个文件
177 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTask.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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()
    {
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() {
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任务管理
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);
                            }
                        }
                    }
                }
            }
        }
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
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>
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();
            // 如果是超级管理员,则不过滤数据;如果是app指挥端,则不过滤数据;
            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 {
                    // 数据权限为仅本人且没有userAlias别名不查询任何数据
                    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, "");
        }