‘liusuyi’
2023-07-25 2f07c0e336517efc48f0386eb04bee28804af5a7
增加app任务打卡
增加app按用户查询任务列表
已添加6个文件
已修改8个文件
924 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/taskdetail/controller/ArdAppTaskDetailPicController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/taskdetail/domain/ArdAppTaskDetailPic.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/taskdetail/mapper/ArdAppTaskDetailPicMapper.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/taskdetail/service/IArdAppTaskDetailPicService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/taskdetail/service/impl/ArdAppTaskDetailPicServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/app/ArdAppTaskDetailPicMapper.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 262 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
@@ -5,8 +5,11 @@
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.alarm.steal.domain.ArdAlarmStealelec;
import com.ruoyi.app.task.domain.ArdAppTaskDetail;
import com.ruoyi.common.utils.spring.SpringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -29,8 +32,7 @@
@Api(tags = "app任务管理")
@RestController
@RequestMapping("/app/task")
public class ArdAppTaskController extends BaseController
{
public class ArdAppTaskController extends BaseController {
    @Autowired
    private IArdAppTaskService ardAppTaskService;
@@ -40,21 +42,26 @@
    @ApiOperation("查询app任务管理列表")
    @PreAuthorize("@ss.hasPermi('app:task:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdAppTask ardAppTask)
    {
    public TableDataInfo list(ArdAppTask ardAppTask) {
        startPage();
        List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask);
        return getDataTable(list);
    }
    @ApiOperation("查询app任务管理列表(详情)")
    @PreAuthorize("@ss.hasPermi('app:task:list')")
    @GetMapping("/listWithDetail")
    public TableDataInfo userlist(ArdAppTask ardAppTask) {
        startPage();
        List<ArdAppTask> ardAppTasks = ardAppTaskService.selectArdAppTaskListWithDetail(ardAppTask);
        return getDataTable(ardAppTasks);
    }
    /**
     * å¯¼å‡ºapp任务管理列表
     */
    @PreAuthorize("@ss.hasPermi('app:task:export')")
    @Log(title = "app任务管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdAppTask ardAppTask)
    {
    public void export(HttpServletResponse response, ArdAppTask ardAppTask) {
        List<ArdAppTask> list = ardAppTaskService.selectArdAppTaskList(ardAppTask);
        ExcelUtil<ArdAppTask> util = new ExcelUtil<ArdAppTask>(ArdAppTask.class);
        util.exportExcel(response, list, "app任务管理数据");
@@ -66,8 +73,7 @@
    @ApiOperation("获取app任务管理详细信息")
    @PreAuthorize("@ss.hasPermi('app:task:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfoWithPic(@PathVariable("id") String id)
    {
    public AjaxResult getInfoWithPic(@PathVariable("id") String id) {
        return success(ardAppTaskService.selectArdAppTaskById(id));
    }
@@ -78,8 +84,7 @@
    @PreAuthorize("@ss.hasPermi('app:task:add')")
    @Log(title = "app任务管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdAppTask ardAppTask)
    {
    public AjaxResult add(@RequestBody ArdAppTask ardAppTask) {
        return toAjax(ardAppTaskService.insertArdAppTask(ardAppTask));
    }
@@ -89,8 +94,7 @@
    @PreAuthorize("@ss.hasPermi('app:task:edit')")
    @Log(title = "app任务管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdAppTask ardAppTask)
    {
    public AjaxResult edit(@RequestBody ArdAppTask ardAppTask) {
        return toAjax(ardAppTaskService.updateArdAppTask(ardAppTask));
    }
@@ -100,8 +104,18 @@
    @PreAuthorize("@ss.hasPermi('app:task:remove')")
    @Log(title = "app任务管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
    public AjaxResult remove(@PathVariable String[] ids) {
        return toAjax(ardAppTaskService.deleteArdAppTaskByIds(ids));
    }
    /**
     * æ›´æ–°app任务详情
     */
    @ApiOperation("更新app任务详情(打卡)")
    @PreAuthorize("@ss.hasPermi('app:taskdetail:edit')")
    @Log(title = "更新app任务详情", businessType = BusinessType.UPDATE)
    @PutMapping("/detail")
    public AjaxResult editDetail(@RequestBody ArdAppTaskDetail ardAppTaskDetail) {
        return toAjax(ardAppTaskService.updateArdAppTaskDetail(ardAppTaskDetail));
    }
}
ard-work/src/main/java/com/ruoyi/app/task/domain/ArdAppTaskDetail.java
@@ -1,9 +1,13 @@
package com.ruoyi.app.task.domain;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
 * app任务详情对象 ard_app_task_detail
@@ -50,7 +54,18 @@
    @Excel(name = "任务ID")
    private String taskId;
    public void setId(String id)
    /** app任务详情图片信息 */
    private List<ArdAppTaskDetailPic> ardAppTaskDetailPic;
    public List<ArdAppTaskDetailPic> getArdAppTaskDetailPic() {
        return ardAppTaskDetailPic;
    }
    public void setArdAppTaskDetailPic(List<ArdAppTaskDetailPic> ardAppTaskDetailPic) {
        this.ardAppTaskDetailPic = ardAppTaskDetailPic;
    }
    public void setId(String id)
    {
        this.id = id;
    }
ard-work/src/main/java/com/ruoyi/app/task/mapper/ArdAppTaskMapper.java
@@ -4,6 +4,7 @@
import com.ruoyi.app.task.domain.ArdAppTask;
import com.ruoyi.app.task.domain.ArdAppTaskDetail;
import com.ruoyi.app.task.domain.ArdAppTaskPic;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
/**
 * app任务管理Mapper接口
@@ -29,7 +30,13 @@
     * @return app任务管理集合
     */
    public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask);
    /**
     * æŸ¥è¯¢app任务管理列表带详情图片
     *
     * @param ardAppTask app任务管理
     * @return app任务管理集合
     */
    public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask);
    /**
     * æ–°å¢žapp任务管理
     *
@@ -111,4 +118,28 @@
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailByTaskId(String id);
    /**
     * ä¿®æ”¹app任务详情
     *
     * @param ardAppTaskDetail app任务详情对象
     * @return ç»“æžœ
     */
    public int updateArdAppTaskDetail(ArdAppTaskDetail ardAppTaskDetail);
    /**
     * æ‰¹é‡æ–°å¢žapp任务详情图片
     *
     * @param ardAppTaskDetailPicList app任务详情图片列表
     * @return ç»“æžœ
     */
    public int batchArdAppTaskDetailPic(List<ArdAppTaskDetailPic> ardAppTaskDetailPicList);
    /**
     * æ‰¹é‡åˆ é™¤app任务详情图片
     *
     * @param id éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailPicByTaskDetailId(String id);
}
ard-work/src/main/java/com/ruoyi/app/task/service/IArdAppTaskService.java
@@ -2,6 +2,7 @@
import java.util.List;
import com.ruoyi.app.task.domain.ArdAppTask;
import com.ruoyi.app.task.domain.ArdAppTaskDetail;
/**
 * app任务管理Service接口
@@ -26,6 +27,14 @@
     * @return app任务管理集合
     */
    public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask);
    /**
     * æŸ¥è¯¢app任务详情管理列表
     *
     * @param ardAppTask app任务详情对象
     * @return app任务详情集合
     */
    public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask);
    /**
     * æ–°å¢žapp任务管理
@@ -58,4 +67,13 @@
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskById(String id);
    /**
     * ä¿®æ”¹app任务详情管理
     *
     * @param ardAppTaskDetail app任务详情管理
     * @return ç»“æžœ
     */
    public int updateArdAppTaskDetail(ArdAppTaskDetail ardAppTaskDetail);
}
ard-work/src/main/java/com/ruoyi/app/task/service/impl/ArdAppTaskServiceImpl.java
@@ -1,20 +1,15 @@
package com.ruoyi.app.task.service.impl;
import java.util.List;
import com.ruoyi.app.task.domain.ArdAppTaskDetail;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
import com.ruoyi.app.tasktext.domain.ArdAppTaskText;
import com.ruoyi.app.tasktext.mapper.ArdAppTaskTextMapper;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.transaction.annotation.Transactional;
@@ -22,7 +17,6 @@
import com.ruoyi.app.task.mapper.ArdAppTaskMapper;
import com.ruoyi.app.task.domain.ArdAppTask;
import com.ruoyi.app.task.service.IArdAppTaskService;
import javax.annotation.Resource;
/**
@@ -59,6 +53,17 @@
    @DataScope(deptAlias = "d", userAlias = "u")
    public List<ArdAppTask> selectArdAppTaskList(ArdAppTask ardAppTask) {
        return ardAppTaskMapper.selectArdAppTaskList(ardAppTask);
    }
    /**
     * æŸ¥è¯¢app任务详情管理列表
     *
     * @param ardAppTask app任务对象
     * @return app任务详情列表
     */
    @Override
    public List<ArdAppTask> selectArdAppTaskListWithDetail(ArdAppTask ardAppTask) {
        ardAppTask.setUserId(SecurityUtils.getUserId());
        return ardAppTaskMapper.selectArdAppTaskListWithDetail(ardAppTask);
    }
    /**
@@ -180,6 +185,10 @@
    public void insertArdAppTaskText(ArdAppTask ardAppTask) {
        String userId = ardAppTask.getUserId();
        String text = ardAppTask.getText();
        if(StringUtils.isEmpty(text))
        {
            return;
        }
        ArdAppTaskText ardAppTaskText = new ArdAppTaskText();
        ardAppTaskText.setId(IdUtils.simpleUUID());
        ardAppTaskText.setUserId(userId);
@@ -189,4 +198,37 @@
            ardAppTaskTextMapper.insertArdAppTaskText(ardAppTaskText);
        }
    }
    /**
     * ä¿®æ”¹app任务详情
     *
     * @param ardAppTaskDetail app任务详情对象
     */
    @Override
    public int updateArdAppTaskDetail(ArdAppTaskDetail ardAppTaskDetail) {
        insertArdAppTaskPic(ardAppTaskDetail);
        return ardAppTaskMapper.updateArdAppTaskDetail(ardAppTaskDetail);
    }
    /**
     * æ–°å¢žapp任务详情图片信息
     *
     * @param ardAppTaskDetail app任务详情对象
     */
    public void insertArdAppTaskPic(ArdAppTaskDetail ardAppTaskDetail) {
        List<ArdAppTaskDetailPic> ardAppTaskDetailPicList = ardAppTaskDetail.getArdAppTaskDetailPic();
        String detailId = ardAppTaskDetail.getId();
        if (StringUtils.isNotNull(ardAppTaskDetailPicList)) {
            List<ArdAppTaskDetailPic> list = new ArrayList<ArdAppTaskDetailPic>();
            for (ArdAppTaskDetailPic ardAppTaskDetailPic : ardAppTaskDetailPicList) {
                ardAppTaskDetailPic.setId(IdUtils.simpleUUID());
                ardAppTaskDetailPic.setTaskDetailId(detailId);
                list.add(ardAppTaskDetailPic);
            }
            if (list.size() > 0) {
                ardAppTaskMapper.deleteArdAppTaskDetailPicByTaskDetailId(detailId);
                ardAppTaskMapper.batchArdAppTaskDetailPic(list);
            }
        }
    }
}
ard-work/src/main/java/com/ruoyi/app/taskdetail/controller/ArdAppTaskDetailPicController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.ruoyi.app.taskdetail.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
import com.ruoyi.app.taskdetail.service.IArdAppTaskDetailPicService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * app任务详情图片Controller
 *
 * @author ard
 * @date 2023-07-25
 */
@RestController
@RequestMapping("/app/pic")
public class ArdAppTaskDetailPicController extends BaseController
{
    @Autowired
    private IArdAppTaskDetailPicService ardAppTaskDetailPicService;
    /**
     * æŸ¥è¯¢app任务详情图片列表
     */
    @PreAuthorize("@ss.hasPermi('app:pic:list')")
    @GetMapping("/list")
    public TableDataInfo list(ArdAppTaskDetailPic ardAppTaskDetailPic)
    {
        startPage();
        List<ArdAppTaskDetailPic> list = ardAppTaskDetailPicService.selectArdAppTaskDetailPicList(ardAppTaskDetailPic);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºapp任务详情图片列表
     */
    @PreAuthorize("@ss.hasPermi('app:pic:export')")
    @Log(title = "app任务详情图片", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ArdAppTaskDetailPic ardAppTaskDetailPic)
    {
        List<ArdAppTaskDetailPic> list = ardAppTaskDetailPicService.selectArdAppTaskDetailPicList(ardAppTaskDetailPic);
        ExcelUtil<ArdAppTaskDetailPic> util = new ExcelUtil<ArdAppTaskDetailPic>(ArdAppTaskDetailPic.class);
        util.exportExcel(response, list, "app任务详情图片数据");
    }
    /**
     * èŽ·å–app任务详情图片详细信息
     */
    @PreAuthorize("@ss.hasPermi('app:pic:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") String id)
    {
        return success(ardAppTaskDetailPicService.selectArdAppTaskDetailPicById(id));
    }
    /**
     * æ–°å¢žapp任务详情图片
     */
    @PreAuthorize("@ss.hasPermi('app:pic:add')")
    @Log(title = "app任务详情图片", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ArdAppTaskDetailPic ardAppTaskDetailPic)
    {
        return toAjax(ardAppTaskDetailPicService.insertArdAppTaskDetailPic(ardAppTaskDetailPic));
    }
    /**
     * ä¿®æ”¹app任务详情图片
     */
    @PreAuthorize("@ss.hasPermi('app:pic:edit')")
    @Log(title = "app任务详情图片", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ArdAppTaskDetailPic ardAppTaskDetailPic)
    {
        return toAjax(ardAppTaskDetailPicService.updateArdAppTaskDetailPic(ardAppTaskDetailPic));
    }
    /**
     * åˆ é™¤app任务详情图片
     */
    @PreAuthorize("@ss.hasPermi('app:pic:remove')")
    @Log(title = "app任务详情图片", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable String[] ids)
    {
        return toAjax(ardAppTaskDetailPicService.deleteArdAppTaskDetailPicByIds(ids));
    }
}
ard-work/src/main/java/com/ruoyi/app/taskdetail/domain/ArdAppTaskDetailPic.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.ruoyi.app.taskdetail.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * app任务详情图片对象 ard_app_task_detail_pic
 *
 * @author ard
 * @date 2023-07-25
 */
public class ArdAppTaskDetailPic extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    private String id;
    /** app任务详情ID */
    @Excel(name = "app任务详情ID")
    private String taskDetailId;
    /** app任务图片url */
    @Excel(name = "app任务图片url")
    private String picUrl;
    public void setId(String id)
    {
        this.id = id;
    }
    public String getId()
    {
        return id;
    }
    public void setTaskDetailId(String taskDetailId)
    {
        this.taskDetailId = taskDetailId;
    }
    public String getTaskDetailId()
    {
        return taskDetailId;
    }
    public void setPicUrl(String picUrl)
    {
        this.picUrl = picUrl;
    }
    public String getPicUrl()
    {
        return picUrl;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("taskDetailId", getTaskDetailId())
            .append("picUrl", getPicUrl())
            .toString();
    }
}
ard-work/src/main/java/com/ruoyi/app/taskdetail/mapper/ArdAppTaskDetailPicMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.app.taskdetail.mapper;
import java.util.List;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
/**
 * app任务详情图片Mapper接口
 *
 * @author ard
 * @date 2023-07-25
 */
public interface ArdAppTaskDetailPicMapper
{
    /**
     * æŸ¥è¯¢app任务详情图片
     *
     * @param id app任务详情图片主键
     * @return app任务详情图片
     */
    public ArdAppTaskDetailPic selectArdAppTaskDetailPicById(String id);
    /**
     * æŸ¥è¯¢app任务详情图片列表
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return app任务详情图片集合
     */
    public List<ArdAppTaskDetailPic> selectArdAppTaskDetailPicList(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * æ–°å¢žapp任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    public int insertArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * ä¿®æ”¹app任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    public int updateArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * åˆ é™¤app任务详情图片
     *
     * @param id app任务详情图片主键
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailPicById(String id);
    /**
     * æ‰¹é‡åˆ é™¤app任务详情图片
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailPicByIds(String[] ids);
}
ard-work/src/main/java/com/ruoyi/app/taskdetail/service/IArdAppTaskDetailPicService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.ruoyi.app.taskdetail.service;
import java.util.List;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
/**
 * app任务详情图片Service接口
 *
 * @author ard
 * @date 2023-07-25
 */
public interface IArdAppTaskDetailPicService
{
    /**
     * æŸ¥è¯¢app任务详情图片
     *
     * @param id app任务详情图片主键
     * @return app任务详情图片
     */
    public ArdAppTaskDetailPic selectArdAppTaskDetailPicById(String id);
    /**
     * æŸ¥è¯¢app任务详情图片列表
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return app任务详情图片集合
     */
    public List<ArdAppTaskDetailPic> selectArdAppTaskDetailPicList(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * æ–°å¢žapp任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    public int insertArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * ä¿®æ”¹app任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    public int updateArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic);
    /**
     * æ‰¹é‡åˆ é™¤app任务详情图片
     *
     * @param ids éœ€è¦åˆ é™¤çš„app任务详情图片主键集合
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailPicByIds(String[] ids);
    /**
     * åˆ é™¤app任务详情图片信息
     *
     * @param id app任务详情图片主键
     * @return ç»“æžœ
     */
    public int deleteArdAppTaskDetailPicById(String id);
}
ard-work/src/main/java/com/ruoyi/app/taskdetail/service/impl/ArdAppTaskDetailPicServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.app.taskdetail.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.app.taskdetail.mapper.ArdAppTaskDetailPicMapper;
import com.ruoyi.app.taskdetail.domain.ArdAppTaskDetailPic;
import com.ruoyi.app.taskdetail.service.IArdAppTaskDetailPicService;
/**
 * app任务详情图片Service业务层处理
 *
 * @author ard
 * @date 2023-07-25
 */
@Service
public class ArdAppTaskDetailPicServiceImpl implements IArdAppTaskDetailPicService {
    @Autowired
    private ArdAppTaskDetailPicMapper ardAppTaskDetailPicMapper;
    /**
     * æŸ¥è¯¢app任务详情图片
     *
     * @param id app任务详情图片主键
     * @return app任务详情图片
     */
    @Override
    public ArdAppTaskDetailPic selectArdAppTaskDetailPicById(String id) {
        return ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicById(id);
    }
    /**
     * æŸ¥è¯¢app任务详情图片列表
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return app任务详情图片
     */
    @Override
    public List<ArdAppTaskDetailPic> selectArdAppTaskDetailPicList(ArdAppTaskDetailPic ardAppTaskDetailPic) {
        return ardAppTaskDetailPicMapper.selectArdAppTaskDetailPicList(ardAppTaskDetailPic);
    }
    /**
     * æ–°å¢žapp任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    @Override
    public int insertArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic) {
            return ardAppTaskDetailPicMapper.insertArdAppTaskDetailPic(ardAppTaskDetailPic);
    }
    /**
     * ä¿®æ”¹app任务详情图片
     *
     * @param ardAppTaskDetailPic app任务详情图片
     * @return ç»“æžœ
     */
    @Override
    public int updateArdAppTaskDetailPic(ArdAppTaskDetailPic ardAppTaskDetailPic) {
        return ardAppTaskDetailPicMapper.updateArdAppTaskDetailPic(ardAppTaskDetailPic);
    }
    /**
     * æ‰¹é‡åˆ é™¤app任务详情图片
     *
     * @param ids éœ€è¦åˆ é™¤çš„app任务详情图片主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAppTaskDetailPicByIds(String[] ids) {
        return ardAppTaskDetailPicMapper.deleteArdAppTaskDetailPicByIds(ids);
    }
    /**
     * åˆ é™¤app任务详情图片信息
     *
     * @param id app任务详情图片主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteArdAppTaskDetailPicById(String id) {
        return ardAppTaskDetailPicMapper.deleteArdAppTaskDetailPicById(id);
    }
}
ard-work/src/main/resources/mapper/app/ArdAppTaskDetailPicMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.app.taskdetail.mapper.ArdAppTaskDetailPicMapper">
    <resultMap type="ArdAppTaskDetailPic" id="ArdAppTaskDetailPicResult">
        <result property="id"    column="id"    />
        <result property="taskDetailId"    column="task_detail_id"    />
        <result property="picUrl"    column="pic_url"    />
    </resultMap>
    <sql id="selectArdAppTaskDetailPicVo">
        select id, task_detail_id, pic_url from ard_app_task_detail_pic
    </sql>
    <select id="selectArdAppTaskDetailPicList" parameterType="ArdAppTaskDetailPic" resultMap="ArdAppTaskDetailPicResult">
        <include refid="selectArdAppTaskDetailPicVo"/>
        <where>
            <if test="taskDetailId != null  and taskDetailId != ''"> and task_detail_id = #{taskDetailId}</if>
            <if test="picUrl != null  and picUrl != ''"> and pic_url = #{picUrl}</if>
        </where>
    </select>
    <select id="selectArdAppTaskDetailPicById" parameterType="String" resultMap="ArdAppTaskDetailPicResult">
        <include refid="selectArdAppTaskDetailPicVo"/>
        where id = #{id}
    </select>
    <insert id="insertArdAppTaskDetailPic" parameterType="ArdAppTaskDetailPic">
        insert into ard_app_task_detail_pic
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="taskDetailId != null">task_detail_id,</if>
            <if test="picUrl != null">pic_url,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="taskDetailId != null">#{taskDetailId},</if>
            <if test="picUrl != null">#{picUrl},</if>
         </trim>
    </insert>
    <update id="updateArdAppTaskDetailPic" parameterType="ArdAppTaskDetailPic">
        update ard_app_task_detail_pic
        <trim prefix="SET" suffixOverrides=",">
            <if test="taskDetailId != null">task_detail_id = #{taskDetailId},</if>
            <if test="picUrl != null">pic_url = #{picUrl},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteArdAppTaskDetailPicById" parameterType="String">
        delete from ard_app_task_detail_pic where id = #{id}
    </delete>
    <delete id="deleteArdAppTaskDetailPicByIds" parameterType="String">
        delete from ard_app_task_detail_pic where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ard-work/src/main/resources/mapper/app/ArdAppTaskMapper.xml
@@ -73,7 +73,33 @@
            ${params.dataScope}
        </where>
    </select>
    <select id="selectArdAppTaskListWithDetail" parameterType="ArdAppTask" resultMap="ArdAppTaskSubResult">
        select a.id,
        a.name,
        a.text,
        a.voice,
        a.dept_id,
        a.user_id,
        a.create_by,
        a.create_time,
        a.update_by,
        a.update_time,
        b.id      as sub2_id,
        b.task_id as sub2_task_id,
        b.pic_url as sub2_pic_url,
        c.id   as sub1_id,
        c.name as sub1_name,
        c.longitude as sub1_longitude,
        c.latitude as sub1_latitde,
        c.altitude as sub1_altitude,
        c.user_id as sub1_user_id,
        c.text as sub1_text,
        c.voice as sub1_voice
        from ard_app_task a
        left join ard_app_task_pic b on b.task_id = a.id
        left join ard_app_task_detail c on c.task_id = a.id
        where c.user_id = #{userId}
    </select>
    <select id="selectArdAppTaskById" parameterType="String" resultMap="ArdAppTaskSubResult">
        select a.id,
               a.name,
@@ -219,6 +245,7 @@
            ( #{item.id}, #{item.taskId}, #{item.picUrl})
        </foreach>
    </insert>
    <delete id="deleteArdAppTaskDetailByTaskIds" parameterType="String">
        delete from ard_app_task_detail where task_id in
        <foreach item="taskId" collection="array" open="(" separator="," close=")">
@@ -239,4 +266,24 @@
            #{item.text}, #{item.voice}, #{item.taskId})
        </foreach>
    </insert>
    <update id="updateArdAppTaskDetail" parameterType="ArdAppTaskDetail">
        update ard_app_task_detail
        <trim prefix="SET" suffixOverrides=",">
            <if test="text != null">text = #{text},</if>
            <if test="voice != null">voice = #{voice},</if>
        </trim>
        where id = #{id}
    </update>
    <insert id="batchArdAppTaskDetailPic">
        insert into ard_app_task_detail_pic( id, task_detail_id, pic_url) values
        <foreach item="item" index="index" collection="list" separator=",">
            ( #{item.id}, #{item.taskDetailId}, #{item.picUrl})
        </foreach>
    </insert>
    <delete id="deleteArdAppTaskDetailPicByTaskDetailId" parameterType="String">
        delete
        from ard_app_task_detail_pic
        where task_detail_id = #{taskDetailId}
    </delete>
</mapper>
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -19,90 +19,128 @@
/**
 * ç”¨æˆ·å¯¹è±¡ sys_user
 *
 *
 * @author ruoyi
 */
public class SysUser extends BaseEntity
{
public class SysUser extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** ç”¨æˆ·ID */
    /**
     * ç”¨æˆ·ID
     */
    @Excel(name = "用户序号", cellType = ColumnType.STRING, prompt = "用户编号")
    private String userId;
    /** éƒ¨é—¨ID */
    /**
     * éƒ¨é—¨ID
     */
    @Excel(name = "部门编号", type = Type.IMPORT)
    private Long deptId;
    /** ç”¨æˆ·è´¦å· */
    /**
     * ç”¨æˆ·è´¦å·
     */
    @Excel(name = "登录名称")
    private String userName;
    /** ç”¨æˆ·æ˜µç§° */
    /**
     * ç”¨æˆ·æ˜µç§°
     */
    @Excel(name = "用户名称")
    private String nickName;
    /** ç”¨æˆ·é‚®ç®± */
    /**
     * ç”¨æˆ·é‚®ç®±
     */
    @Excel(name = "用户邮箱")
    private String email;
    /** æ‰‹æœºå·ç  */
    /**
     * æ‰‹æœºå·ç 
     */
    @Excel(name = "手机号码")
    private String phonenumber;
    /** ç”¨æˆ·æ€§åˆ« */
    /**
     * ç”¨æˆ·æ€§åˆ«
     */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;
    /** ç”¨æˆ·å¤´åƒ */
    /**
     * ç”¨æˆ·å¤´åƒ
     */
    private String avatar;
    /** å¯†ç  */
    /**
     * å¯†ç 
     */
    @Excel(name = "密码")
    private String password;
    /** å¸å·çŠ¶æ€ï¼ˆ0正常 1停用) */
    /**
     * å¸å·çŠ¶æ€ï¼ˆ0正常 1停用)
     */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    /**
     * åˆ é™¤æ ‡å¿—(0代表存在 2代表删除)
     */
    private String delFlag;
    /** æœ€åŽç™»å½•IP */
    /**
     * æœ€åŽç™»å½•IP
     */
    @Excel(name = "最后登录IP", type = Type.EXPORT)
    private String loginIp;
    /** æœ€åŽç™»å½•æ—¶é—´ */
    /**
     * æœ€åŽç™»å½•æ—¶é—´
     */
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date loginDate;
    /** éƒ¨é—¨å¯¹è±¡ */
    /**
     * éƒ¨é—¨å¯¹è±¡
     */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
            @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
            @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    private SysDept dept;
    /** è§’色对象 */
    /**
     * è§’色对象
     */
    private List<SysRole> roles;
    /** è§’色组 */
    /**
     * è§’色组
     */
    private Long[] roleIds;
    /** å²—位组 */
    /**
     * å²—位组
     */
    private Long[] postIds;
    /** è§’色ID */
    /**
     * è§’色ID
     */
    private Long roleId;
    /** ç›¸æœºæ“æŽ§ä¼˜å…ˆçº§ */
    /**
     * ç›¸æœºæ“æŽ§ä¼˜å…ˆçº§
     */
    private Integer cameraPriority;
    /** ç”¨æˆ·èžäº‘token */
    /**
     * ç”¨æˆ·èžäº‘token
     */
    private String rongCloudToken;
    public SysUser()
    {
    public SysUser() {
    }
@@ -122,239 +160,203 @@
        this.cameraPriority = cameraPriority;
    }
    public SysUser(String userId)
    {
    public SysUser(String userId) {
        this.userId = userId;
    }
    public String getUserId()
    {
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId)
    {
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public boolean isAdmin()
    {
    public boolean isAdmin() {
        return isAdmin(this.userId);
    }
    public static boolean isAdmin(String userId)
    {
    public static boolean isAdmin(String userId) {
        return userId != null && userId.equals("1");
    }
    public boolean isApp()
    {
        return isApp(this.userId);
    /**
     * æ˜¯å¦app指挥端
     */
    public boolean isAppLeader() {
        return isAppLeader(this.userId);
    }
    public boolean isApp(String userId)
    {
    public boolean isAppLeader(String userId) {
        return userId != null && this.getRoles().stream().anyMatch(sysRole -> sysRole.getRoleKey().contains("appLeader"));
    }
    public Long getDeptId()
    {
    public Long getDeptId() {
        return deptId;
    }
    public void setDeptId(Long deptId)
    {
    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }
    @Xss(message = "用户昵称不能包含脚本字符")
    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    public String getNickName()
    {
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName)
    {
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    @Xss(message = "用户账号不能包含脚本字符")
    @NotBlank(message = "用户账号不能为空")
    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    public String getUserName()
    {
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName)
    {
    public void setUserName(String userName) {
        this.userName = userName;
    }
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
    public String getEmail() {
        return email;
    }
    public void setEmail(String email)
    {
    public void setEmail(String email) {
        this.email = email;
    }
    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    public String getPhonenumber()
    {
    public String getPhonenumber() {
        return phonenumber;
    }
    public void setPhonenumber(String phonenumber)
    {
    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }
    public String getSex()
    {
    public String getSex() {
        return sex;
    }
    public void setSex(String sex)
    {
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getAvatar()
    {
    public String getAvatar() {
        return avatar;
    }
    public void setAvatar(String avatar)
    {
    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }
    public String getPassword()
    {
    public String getPassword() {
        return password;
    }
    public void setPassword(String password)
    {
    public void setPassword(String password) {
        this.password = password;
    }
    public String getStatus()
    {
    public String getStatus() {
        return status;
    }
    public void setStatus(String status)
    {
    public void setStatus(String status) {
        this.status = status;
    }
    public String getDelFlag()
    {
    public String getDelFlag() {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }
    public String getLoginIp()
    {
    public String getLoginIp() {
        return loginIp;
    }
    public void setLoginIp(String loginIp)
    {
    public void setLoginIp(String loginIp) {
        this.loginIp = loginIp;
    }
    public Date getLoginDate()
    {
    public Date getLoginDate() {
        return loginDate;
    }
    public void setLoginDate(Date loginDate)
    {
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }
    public SysDept getDept()
    {
    public SysDept getDept() {
        return dept;
    }
    public void setDept(SysDept dept)
    {
    public void setDept(SysDept dept) {
        this.dept = dept;
    }
    public List<SysRole> getRoles()
    {
    public List<SysRole> getRoles() {
        return roles;
    }
    public void setRoles(List<SysRole> roles)
    {
    public void setRoles(List<SysRole> roles) {
        this.roles = roles;
    }
    public Long[] getRoleIds()
    {
    public Long[] getRoleIds() {
        return roleIds;
    }
    public void setRoleIds(Long[] roleIds)
    {
    public void setRoleIds(Long[] roleIds) {
        this.roleIds = roleIds;
    }
    public Long[] getPostIds()
    {
    public Long[] getPostIds() {
        return postIds;
    }
    public void setPostIds(Long[] postIds)
    {
    public void setPostIds(Long[] postIds) {
        this.postIds = postIds;
    }
    public Long getRoleId()
    {
    public Long getRoleId() {
        return roleId;
    }
    public void setRoleId(Long roleId)
    {
    public void setRoleId(Long roleId) {
        this.roleId = roleId;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("userName", getUserName())
            .append("nickName", getNickName())
            .append("email", getEmail())
            .append("phonenumber", getPhonenumber())
            .append("sex", getSex())
            .append("avatar", getAvatar())
            .append("password", getPassword())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("loginIp", getLoginIp())
            .append("loginDate", getLoginDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .toString();
                .append("userId", getUserId())
                .append("deptId", getDeptId())
                .append("userName", getUserName())
                .append("nickName", getNickName())
                .append("email", getEmail())
                .append("phonenumber", getPhonenumber())
                .append("sex", getSex())
                .append("avatar", getAvatar())
                .append("password", getPassword())
                .append("status", getStatus())
                .append("delFlag", getDelFlag())
                .append("loginIp", getLoginIp())
                .append("loginDate", getLoginDate())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("dept", getDept())
                .toString();
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -69,8 +69,8 @@
        if (StringUtils.isNotNull(loginUser))
        {
            SysUser currentUser = loginUser.getUser();
            // å¦‚果是超级管理员,则不过滤数据
            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()&& !currentUser.isApp())
            // å¦‚果是超级管理员,则不过滤数据;如果是app指挥端,则不过滤数据;
            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()&& !currentUser.isAppLeader())
            {
                String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
                dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),