linwei
2024-01-29 87c0cb5ed6477f1760034bcf1de608102b29e442
九小场所检查
12 files modified
24 files added
2100 ■■■■■ changed files
src/main/java/org/springblade/common/utils/NodeTreeUtil.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml 47 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/article/vo/ArticleVO.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/controller/PatrolGroupController.java 178 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/controller/PatrolGroupItemController.java 122 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/controller/PatrolRecordController.java 171 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/dto/PatrolGroupDTO.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/dto/PatrolGroupItemDTO.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/dto/PatrolRecordDTO.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/entity/PatrolGroup.java 61 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/entity/PatrolGroupItem.java 70 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/entity/PatrolRecord.java 75 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupItemMapper.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupItemMapper.xml 77 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupMapper.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupMapper.xml 212 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolRecordMapper.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/mapper/PatrolRecordMapper.xml 244 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/IPatrolGroupItemService.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/IPatrolGroupService.java 46 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/IPatrolRecordService.java 58 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/impl/PatrolGroupItemServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/impl/PatrolGroupServiceImpl.java 71 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/service/impl/PatrolRecordServiceImpl.java 96 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/vo/PatrolGroupItemVO.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/vo/PatrolGroupVO.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/patrol/vo/PatrolRecordVO.java 72 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/controller/PlaceCheckController.java 6 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/entity/PlaceCheckEntity.java 64 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceCheckMapper.xml 52 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/IPlaceCheckService.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/impl/PlaceCheckServiceImpl.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/vo/PlaceCheckVO.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/mapper/TaskReportForRepairsMapper.xml 27 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/vo/TaskReportForRepairsVO.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/utils/NodeTreeUtil.java
@@ -3,6 +3,7 @@
import org.springblade.common.node.TreeIntegerNode;
import org.springblade.common.node.TreeLongNode;
import org.springblade.common.node.TreeStringNode;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVOTree;
import org.springblade.modules.house.vo.HouseTree;
@@ -117,4 +118,30 @@
        }
        return tree;
    }
    /**
     * list 转 tree 组织机构
     * @param parentList
     * @param childrenList
     * @return
     */
    public  static List<TreeNode> getNodeTree(List<TreeNode> parentList, List<TreeNode> childrenList){
        // 遍历
        for (TreeNode parentNode : parentList) {
            // 判断是否有孩子
            if (parentNode.getHasChildren()) {
                List<TreeNode> tree = new ArrayList<>();
                // 遍历子集合
                for (TreeNode childrenNode : childrenList) {
                    if (parentNode.getId().equals(childrenNode.getParentId())) {
                        tree.add(childrenNode);
                    }
                }
                // 设置孩子节点
                parentNode.setChildren(tree);
            }
        }
        return parentList;
    }
}
src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml
@@ -180,45 +180,64 @@
    </select>
    <!--查询资讯分页列表信息-->
    <select id="selectArticlePage" resultType="org.springblade.modules.article.entity.Article">
        select * from jczz_article
    <select id="selectArticlePage" resultType="org.springblade.modules.article.vo.ArticleVO">
        SELECT
        ja.*,
        br.`village_name` communityName,
        br.town_name streetName
        FROM
        jczz_article ja
        LEFT JOIN jczz_district jd ON ja.district_id = jd.id
        LEFT JOIN blade_region br on br.`code` = jd.community_code
        where 1=1
        and is_deleted = 0
        and ja.is_deleted = 0
        <if test="article.propertyFlag!=null ">
            and ja.district_id IS NOT NULL
            <if test="article.communityName!=null and article.communityName!=''">
                and br.`village_name` like concat('%',#{article.communityName},'%')
            </if>
            <if test="article.streetName!=null and article.streetName!=''">
                and br.town_name like concat('%',#{article.streetName},'%')
            </if>
        </if>
        <if test="article.title!=null and article.title!=''">
            and title like concat('%',#{article.title},'%')
            and ja.title like concat('%',#{article.title},'%')
        </if>
        <if test="article.sourceName!=null and article.sourceName!=''">
            and source_name like concat('%',#{article.sourceName},'%')
            and ja.source_name like concat('%',#{article.sourceName},'%')
        </if>
        <if test="article.startTime!=null and article.startTime!=''">
            and create_time&gt;=#{article.startTime}
            and ja.create_time&gt;=#{article.startTime}
        </if>
        <if test="article.endTime!=null and article.endTime!=''">
            and create_time&lt;=#{article.endTime}
            and ja.create_time&lt;=#{article.endTime}
        </if>
        <if test="article.publish!=null and article.publish!=''">
            and publish = #{article.publish}
            and ja.publish = #{article.publish}
        </if>
        <if test="article.articleType!=null and article.articleType!=''">
            and article_type like concat('%',#{article.articleType},'%')
            and ja.article_type like concat('%',#{article.articleType},'%')
        </if>
        <if test="article.type != null ">and type = #{article.type}</if>
        <if test="article.type != null ">and ja.type = #{article.type}</if>
        <if test="article.keyword!=null and article.keyword!=''">
            AND CONCAT(title,source_name)
            AND CONCAT(ja.title,ja.source_name)
            LIKE CONCAT ('%', #{article.keyword},'%')
        </if>
        <if test="article.districtIdList != null and article.districtIdList.size() > 0 ">
            and (article_range like
            and (ja.article_range like
            <foreach collection="article.districtIdList" separator=" or article_range like" item="id">'%${id}%'
            </foreach>
            )
            and district_id in
            and ja.district_id in
            <foreach collection="article.districtIdList" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        order by id desc
        order by ja.create_time desc
    </select>
    <!--查询资讯敏感词预警-->
src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java
@@ -71,6 +71,7 @@
            if (districtIds.size() == 0) {
                return page.setRecords(new ArrayList<>());
            }
            article.setPropertyFlag(1);
        }
        if (userRole.contains("jdgly")) {
            List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
src/main/java/org/springblade/modules/article/vo/ArticleVO.java
@@ -80,4 +80,11 @@
    private List<String> districtIdList;
    // 物业标记
    private Integer propertyFlag;
    private String streetName;
    private String communityName;
}
src/main/java/org/springblade/modules/patrol/controller/PatrolGroupController.java
New file
@@ -0,0 +1,178 @@
package org.springblade.modules.patrol.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.patrol.entity.PatrolGroup;
import org.springblade.modules.patrol.service.IPatrolGroupService;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
 * @Description: 巡查指标组
 */
@Slf4j
@Api(tags = "巡查指标组")
@RestController
@RequestMapping("/patrol/patrolGroup")
@AllArgsConstructor
public class PatrolGroupController extends BladeController {
    private IPatrolGroupService patrolGroupService;
    /**
     * 分页列表查询
     *
     * @param patrolGroup
     */
    @ApiOperation(value = "巡查指标组-分页列表查询", notes = "巡查指标组-分页列表查询")
    @GetMapping(value = "/list")
    public R queryPageList(PatrolGroup patrolGroup, Query query) {
//        IPage<PatrolGroup> pageList = patrolGroupService.selectPatrolConfig(Condition.getPage(query),patrolGroup);
        IPage<PatrolGroup> pageList = patrolGroupService.page(Condition.getPage(query), Condition.getQueryWrapper(patrolGroup));
        return R.data(pageList);
    }
    /**
     * 添加
     *
     * @param patrolGroup
     * @return
     */
    @ApiOperation(value = "巡查指标组-添加", notes = "巡查指标组-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody PatrolGroup patrolGroup) {
        return R.data(patrolGroupService.save(patrolGroup));
    }
    /**
     * 编辑
     *
     * @param patrolGroup
     * @return
     */
    @ApiOperation(value = "巡查指标组-编辑", notes = "巡查指标组-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public R edit(@RequestBody PatrolGroup patrolGroup) {
        return R.data(patrolGroupService.updateById(patrolGroup));
    }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "巡查指标组-通过id删除", notes = "巡查指标组-通过id删除")
    @PostMapping(value = "/delete")
    public R delete(@RequestParam(name = "id", required = true) String id) {
        return R.data(patrolGroupService.removeById(id));
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @ApiOperation(value = "巡查指标组-批量删除", notes = "巡查指标组-批量删除")
    @PostMapping(value = "/deleteBatch")
    public R deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        return R.data(patrolGroupService.removeByIds(Arrays.asList(ids.split(","))));
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "巡查指标组-通过id查询", notes = "巡查指标组-通过id查询")
    @GetMapping(value = "/queryById")
    public R queryById(@RequestParam(name = "id", required = true) String id) {
        PatrolGroup patrolGroup = patrolGroupService.getById(id);
        return R.data(patrolGroup);
    }
    /**
     * 根据工程id查询巡查指标组
     *
     * @return
     */
    @ApiOperation(value = "巡查指标组-根据工程id查询巡查指标组", notes = "巡查指标组-根据工程id查询巡查指标组")
    @GetMapping(value = "/getPatrolGroupByProjectId")
    public R queryTree(@RequestParam(name = "projectId", required = true) String projectId) {
        List<PatrolGroup> list = patrolGroupService.getPatrolGroupByProjectId(projectId);
        return R.data(list);
    }
    /**
     * 获取全部指标组
     *
     * @return
     */
    @ApiOperation(value = "获取全部指标组", notes = "获取全部指标组")
    @GetMapping(value = "/all")
    public R getAll() {
        List<PatrolGroup> list = patrolGroupService.list();
        return R.data(list);
    }
    /**
     * 查询巡查项树数据
     * @return
     */
    @ApiOperation(value = "查询巡查项树数据", notes = "查询巡查项树数据")
    @GetMapping(value = "/getPatrolGroupTree")
    public R getPatrolGroupTree() {
        return R.data(patrolGroupService.getPatrolGroupTree());
    }
    /**
     * 根据项id查询组id
     * @return
     */
    @ApiOperation(value = "根据项id查询组id", notes = "根据项id查询组id")
    @GetMapping(value = "/getPatrolGroupByItemId")
    public R getPatrolGroupByItemId(String itemIds) {
        return R.data(patrolGroupService.getPatrolGroupByItemId(itemIds));
    }
    /**
     * 根据任务id获取巡查项,可判断是否已选
     */
    @GetMapping(value = "/getAllPatrolGroupByTaskId")
    public R getAllPatrolGroupByTaskId(String taskId) {
        return R.data(patrolGroupService.getAllPatrolGroupByTaskId(taskId));
    }
    /**
     * 根据任务id获取巡查组,返回组下的record
     */
    @GetMapping(value = "/getPatrolGroupDTO")
    public R getPatrolGroupDTO(String taskId) {
        return R.data(patrolGroupService.getPatrolGroupDTO(taskId));
    }
    /**
     * 根据任务id获取巡查组
     */
    @GetMapping(value = "/getPatrolGroupByTaskId")
    public R getPatrolGroupByTaskId(String taskId) {
        return R.data(patrolGroupService.getPatrolGroupByTaskId(taskId));
    }
    /**
     * 根据任务id获取巡查组,返回组下的record(web任务详情)
     */
    @GetMapping(value = "/getGroupDTORecord")
    public R getGroupDTORecord(String taskId){
        return R.data(patrolGroupService.getGroupDTORecord(taskId));
    }
}
src/main/java/org/springblade/modules/patrol/controller/PatrolGroupItemController.java
New file
@@ -0,0 +1,122 @@
package org.springblade.modules.patrol.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
import org.springblade.modules.patrol.service.IPatrolGroupItemService;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
 * @Description: 巡查指标项目
 */
@Slf4j
@Api(tags="巡查指标项目")
@RestController
@RequestMapping("/patrol/patrolGroupItem")
@AllArgsConstructor
public class PatrolGroupItemController extends BladeController {
    private IPatrolGroupItemService patrolGroupItemService;
    /**
     * 分页列表查询
     *
     * @param patrolGroupItem
     * @return
     */
    @ApiOperation(value="巡查指标项目-分页列表查询", notes="巡查指标项目-分页列表查询")
    @GetMapping(value = "/list")
    public R queryPageList(PatrolGroupItemVO patrolGroupItem, Query query) {
        IPage<PatrolGroupItemVO> pageList = patrolGroupItemService.selectPatrolConfig(Condition.getPage(query),patrolGroupItem);
        return R.data(pageList);
    }
    /**
     * 列表查询
     *
     * @param patrolGroupItem
     * @return
     */
    @ApiOperation(value="巡查指标项目-列表查询", notes="巡查指标项目-列表查询")
    @GetMapping(value = "/queryList")
    public R queryList(PatrolGroupItemVO patrolGroupItem) {
        List<PatrolGroupItemVO> list = patrolGroupItemService.selectPatrolGroupItemList(patrolGroupItem);
        return R.data(list);
    }
    /**
     * 添加
     *
     * @param patrolGroupItem
     * @return
     */
    @ApiOperation(value="巡查指标项目-添加", notes="巡查指标项目-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody PatrolGroupItem patrolGroupItem) {
        return R.data(patrolGroupItemService.save(patrolGroupItem));
    }
    /**
     * 编辑
     *
     * @param patrolGroupItem
     * @return
     */
    @ApiOperation(value="巡查指标项目-编辑", notes="巡查指标项目-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public R edit(@RequestBody PatrolGroupItem patrolGroupItem) {
        return R.data(patrolGroupItemService.updateById(patrolGroupItem));
    }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value="巡查指标项目-通过id删除", notes="巡查指标项目-通过id删除")
    @PostMapping(value = "/delete")
    public R delete(@RequestParam(name="id",required=true) String id) {
        return R.data(patrolGroupItemService.removeById(id));
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @ApiOperation(value="巡查指标项目-批量删除", notes="巡查指标项目-批量删除")
    @PostMapping(value = "/deleteBatch")
    public R deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        return R.data(patrolGroupItemService.removeByIds(Arrays.asList(ids.split(","))));
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value="巡查指标项目-通过id查询", notes="巡查指标项目-通过id查询")
    @GetMapping(value = "/queryById")
    public R queryById(@RequestParam(name="id",required=true) String id) {
        PatrolGroupItem patrolGroupItem = patrolGroupItemService.getById(id);
        return R.data(patrolGroupItem);
    }
}
src/main/java/org/springblade/modules/patrol/controller/PatrolRecordController.java
New file
@@ -0,0 +1,171 @@
package org.springblade.modules.patrol.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.service.IPatrolRecordService;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import org.springblade.modules.patrol.vo.PatrolRecordVO;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @Description: 巡查记录
*/
@Slf4j
@Api(tags="巡查记录")
@RestController
@RequestMapping("/patrol/patrolRecord")
@AllArgsConstructor
public class PatrolRecordController extends BladeController {
   private IPatrolRecordService patrolRecordService;
   /**
    * 分页列表查询
    */
   @ApiOperation(value="巡查记录-分页列表查询", notes="巡查记录-分页列表查询")
   @GetMapping(value = "/list")
   public R queryPageList(PatrolRecordVO patrolRecord, Query query) {
       IPage<PatrolRecord> pageList = patrolRecordService.selectPatrolRecord(Condition.getPage(query),patrolRecord);
       return R.data(pageList);
   }
    /**
     * 获取所有巡查记录
     */
    @ApiOperation(value="获取所有巡查类型", notes="获取所有巡查类型")
    @GetMapping(value = "/all")
   public R getAll(PatrolRecord patrolRecord){
       List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord));
       return R.data(list);
   }
   /**
    * 添加
    */
   @ApiOperation(value="巡查记录-添加", notes="巡查记录-添加")
   @PostMapping(value = "/add")
   public R add(@RequestBody PatrolRecord patrolRecord) {
       return R.data(patrolRecordService.save(patrolRecord));
   }
   /**
    * 编辑
    */
   @ApiOperation(value="巡查记录-编辑", notes="巡查记录-编辑")
   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
   public R edit(@RequestBody PatrolRecord patrolRecord) {
       return R.data(patrolRecordService.updateById(patrolRecord));
   }
   /**
    * 通过id删除
    *
    * @param id
    * @return
    */
   @ApiOperation(value="巡查记录-通过id删除", notes="巡查记录-通过id删除")
   @PostMapping(value = "/delete")
   public R delete(@RequestParam(name="id",required=true) String id) {
       return R.data(patrolRecordService.removeById(id));
   }
   /**
    * 批量删除
    *
    * @param ids
    * @return
    */
   @ApiOperation(value="巡查记录-批量删除", notes="巡查记录-批量删除")
   @PostMapping(value = "/deleteBatch")
   public R deleteBatch(@RequestParam(name="ids",required=true) String ids) {
       return R.data(patrolRecordService.removeByIds(Arrays.asList(ids.split(","))));
   }
   /**
    * 通过id查询
    *
    * @param id
    * @return
    */
   @ApiOperation(value="巡查记录-通过id查询", notes="巡查记录-通过id查询")
   @GetMapping(value = "/queryById")
   public R queryById(@RequestParam(name="id",required=true) String id) {
       PatrolRecordVO patrolRecordVO = patrolRecordService.getDetail(id);
       return R.data(patrolRecordVO);
   }
    /**
     * 通过taskId,itemsIds查询(用来判断是否完成任务)
     * @return
     */
    @ApiOperation(value="巡查记录-通过taskId,itemsIds查询", notes="巡查记录-通过taskId,itemsIds查询")
    @GetMapping(value = "/getPatrolRecordByTaskId")
    public R getPatrolRecordByTaskId(String taskId,String itemIds) {
        List<PatrolGroupItemVO> list = patrolRecordService.getPatrolRecordByTaskId(taskId,itemIds);
        return R.data(list);
    }
    /**
     * 通过taskId,itemsIds查询(用来查询巡查记录)
     * @return
     */
    @ApiOperation(value="巡查记录-通过itemId查询", notes="巡查记录-通过itemId查询")
    @GetMapping(value = "/getByTaskIdAndItemId")
    public R getByTaskIdAndItemId(String taskId,String itemIds){
        List<PatrolRecordVO> list = patrolRecordService.getByTaskIdAndItemId(taskId,itemIds);
        return R.data(list);
    }
    /**
     * 通过itemIds查询(用于巡查上报时的回显)
     *
     * @return
     */
    @ApiOperation(value="巡查指标项目-通过itemIds查询", notes="巡查指标项目-通过itemIds查询")
    @GetMapping(value = "/getItemByItemIds")
    public R getItemByItemIds(String itemIds,String groupId,String taskId){
        List list = patrolRecordService.getItemByItemIds(itemIds,groupId,taskId);
        return R.data(list);
    }
    /**
     * 通过任务id和组id获取记录表中的数据,用于数据回显
     *
     * @return
     */
    @GetMapping(value = "/getByTaskIdAndGroupId")
    public R getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO){
        List<PatrolRecord> list = patrolRecordService.getByTaskIdAndGroupId(patrolRecordVO);
        return R.data(list);
    }
    /**
     * 记录更新并且新增数据(适用于app处理)
     */
    // @ApiOperation(value="巡查记录-记录更新并且新增数据", notes="巡查记录-记录更新并且新增数据")
    // @RequestMapping(value = "/updateThenSaveBatch", method = {RequestMethod.PUT,RequestMethod.POST})
    // public R updateThenSaveBatch(@RequestBody RecordBatchVO recordBatchVO){
    //     return R.data(patrolRecordService.updateThenSaveBatch(recordBatchVO));
    // }
    /**
     * 获取历史记录
     */
    @ApiOperation(value="巡查记录-获取历史记录", notes="巡查记录-获取历史记录")
    @RequestMapping(value = "/getHistoryRecord", method = {RequestMethod.PUT,RequestMethod.POST})
    public R getHistoryRecord(PatrolRecordVO patrolRecordVO){
        return R.data(patrolRecordService.getHistoryRecord(patrolRecordVO));
    }
}
src/main/java/org/springblade/modules/patrol/dto/PatrolGroupDTO.java
New file
@@ -0,0 +1,17 @@
package org.springblade.modules.patrol.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolGroup;
/**
 * 巡查指标组对象 jczz_patrol_group
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolGroupDTO对象")
@Data
public class PatrolGroupDTO extends PatrolGroup {
}
src/main/java/org/springblade/modules/patrol/dto/PatrolGroupItemDTO.java
New file
@@ -0,0 +1,18 @@
package org.springblade.modules.patrol.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
/**
 * 巡查指标项目对象 jczz_patrol_group_item
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolGroupItemDTO对象")
@Data
public class PatrolGroupItemDTO extends PatrolGroupItem {
}
src/main/java/org/springblade/modules/patrol/dto/PatrolRecordDTO.java
New file
@@ -0,0 +1,18 @@
package org.springblade.modules.patrol.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolRecord;
/**
 * 巡查记录表对象 jczz_patrol_record
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolRecordDTO对象")
@Data
public class PatrolRecordDTO extends PatrolRecord {
}
src/main/java/org/springblade/modules/patrol/entity/PatrolGroup.java
New file
@@ -0,0 +1,61 @@
package org.springblade.modules.patrol.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 巡查指标组对象 jczz_patrol_group
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolGroup对象" , description = "巡查指标组")
@Data
@TableName("jczz_patrol_group")
public class PatrolGroup implements Serializable
{
    private static final long serialVersionUID = 1L;
    /** 主键 */
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    /** 名称 */
    @ApiModelProperty(value = "名称", example = "")
    @TableField("name")
    private String name;
    /** 创建人 */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_user")
    private Long createUser;
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    /** 修改时间 */
    @ApiModelProperty(value = "修改时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("update_time")
    private Date updateTime;
    /** 是否已删除 0: 否 1:是 */
    @ApiModelProperty(value = "是否已删除 0: 否 1:是", example = "")
    @TableField("is_deleted")
    private Integer isDeleted;
}
src/main/java/org/springblade/modules/patrol/entity/PatrolGroupItem.java
New file
@@ -0,0 +1,70 @@
package org.springblade.modules.patrol.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 巡查指标项目对象 jczz_patrol_group_item
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolGroupItem对象" , description = "巡查指标项目")
@Data
@TableName("jczz_patrol_group_item")
public class PatrolGroupItem implements Serializable
{
    private static final long serialVersionUID = 1L;
    /** 主键 */
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    /** 内容组id */
    @ApiModelProperty(value = "内容组id", example = "")
    @TableField("group_id")
    private Integer groupId;
    /** 名称 */
    @ApiModelProperty(value = "名称", example = "")
    @TableField("items_name")
    private String itemsName;
    /** 名称说明 */
    @ApiModelProperty(value = "名称说明", example = "")
    @TableField("description")
    private String description;
    /** 创建人 */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_user")
    private Long createUser;
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    /** 修改时间 */
    @ApiModelProperty(value = "修改时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("update_time")
    private Date updateTime;
    /** 是否已删除 0: 否 1:是 */
    @ApiModelProperty(value = "是否已删除 0: 否 1:是", example = "")
    @TableField("is_deleted")
    private Integer isDeleted;
}
src/main/java/org/springblade/modules/patrol/entity/PatrolRecord.java
New file
@@ -0,0 +1,75 @@
package org.springblade.modules.patrol.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 巡查记录表对象 jczz_patrol_record
 *
 * @author ${context.author}
 * @date 2024-01-29 13:40:49
 */
@ApiModel(value = "PatrolRecord对象" , description = "巡查记录表")
@Data
@TableName("jczz_patrol_record")
public class PatrolRecord implements Serializable
{
    private static final long serialVersionUID = 1L;
    /** 主键 */
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    /** 内容项id */
    @ApiModelProperty(value = "内容项id", example = "")
    @TableField("item_id")
    private Integer itemId;
    /** 场所检查id */
    @ApiModelProperty(value = "场所检查id", example = "")
    @TableField("place_check_id")
    private Long placeCheckId;
    /** 是否存在隐患 0:存在 1 不存在 */
    @ApiModelProperty(value = "是否存在隐患 0:存在 1 不存在", example = "")
    @TableField("state")
    private Integer state;
    /** 备注 */
    @ApiModelProperty(value = "备注", example = "")
    @TableField("remark")
    private String remark;
    /** 照片 */
    @ApiModelProperty(value = "照片", example = "")
    @TableField("image_urls")
    private String imageUrls;
    /** 创建人 */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_user")
    private Long createUser;
    /** 修改时间 */
    @ApiModelProperty(value = "修改时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    /** 是否删除 0: 否 1:是 */
    @ApiModelProperty(value = "是否删除 0: 否 1:是", example = "")
    @TableField("is_deleted")
    private Integer isDeleted;
}
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupItemMapper.java
New file
@@ -0,0 +1,21 @@
package org.springblade.modules.patrol.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import java.util.List;
/**
 * @Description: 巡查指标项目
 */
public interface PatrolGroupItemMapper extends BaseMapper<PatrolGroupItem> {
    List<PatrolGroupItemVO> selectPatrolGroupItemList(@Param("patrolGroupItem") PatrolGroupItemVO patrolGroupItem);
    PatrolGroupItemVO getPatrolGroupItemVOById(@Param("id") Long id);
    List<PatrolGroupItem> getItemByItemIds(@Param("itemIds") String itemIds, @Param("groupId") String groupId);
}
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupItemMapper.xml
New file
@@ -0,0 +1,77 @@
<?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="org.springblade.modules.patrol.mapper.PatrolGroupItemMapper">
    <select id="selectPatrolGroupItemList" resultType="org.springblade.modules.patrol.vo.PatrolGroupItemVO">
        SELECT
            spgi.id,spgi.group_id,spgi.items_name,spgi.description,
            spg.name as groupName
        FROM jczz_patrol_group_ITEM spgi
        left join jczz_patrol_group spg on spg.id = spgi.group_id
        WHERE spgi.is_deleted = 0
        <if test="patrolGroupItem.groupId != null and patrolGroupItem.groupId != '' ">
            and spgi.group_id = #{patrolGroupItem.groupId}
        </if>
        <if test="patrolGroupItem.itemsName !=null and patrolGroupItem.itemsName !=''">
            AND spgi.items_name LIKE CONCAT('%',#{patrolGroupItem.itemsName},'%')
        </if>
        <if test="patrolGroupItem.description !=null and patrolGroupItem.description !=''">
            AND spgi.description LIKE CONCAT('%',#{patrolGroupItem.description},'%')
        </if>
    </select>
    <select id="getPatrolGroupItemVOById" resultType="org.springblade.modules.patrol.vo.PatrolGroupItemVO">
        SELECT item.id,item.items_name,item.description,item.group_id,b.name groupName
        FROM jczz_patrol_group_item item
        LEFT JOIN sm_patrol_group b ON b.id = item.group_id
        WHERE item.is_deleted = 0
        AND item.id = #{id}
    </select>
    <select id="getItemByItemIds" resultType="org.springblade.modules.patrol.entity.PatrolGroupItem">
        SELECT ID,GROUP_ID,ITEMS_NAME,DESCRIPTION FROM jczz_patrol_group_ITEM
        WHERE ID IN
        <foreach collection="itemIds.split(',')" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
        AND is_deleted = 0 AND group_id = #{groupId}
    </select>
<!--    <resultMap type="org.springblade.modules.dto.PatrolGroupDTO" id="PatrolGroupDTOResult">-->
<!--        <result property="id"    column="id"    />-->
<!--        <result property="name"    column="name"    />-->
<!--        <result property="createUser"    column="create_user"    />-->
<!--        <result property="createTime"    column="create_time"    />-->
<!--        <result property="updateTime"    column="update_time"    />-->
<!--        <result property="isDeleted"    column="is_deleted"    />-->
<!--    </resultMap>-->
    <sql id="selectPatrolGroup">
        select
            id,
            name,
            create_user,
            create_time,
            update_time,
            is_deleted
        from
            jczz_patrol_group
    </sql>
<!--    <select id="selectPatrolGroupById" parameterType="long" resultMap="PatrolGroupDTOResult">-->
<!--        <include refid="selectPatrolGroup"/>-->
<!--        where-->
<!--        id = #{id}-->
<!--    </select>-->
<!--    <select id="selectPatrolGroupList" parameterType="org.springblade.modules.dto.PatrolGroupDTO" resultMap="PatrolGroupDTOResult">-->
<!--        <include refid="selectPatrolGroup"/>-->
<!--        <where>-->
<!--            <if test="id != null "> and id = #{id}</if>-->
<!--            <if test="name != null  and name != ''"> and name = #{name}</if>-->
<!--            <if test="createUser != null "> and create_user = #{createUser}</if>-->
<!--            <if test="createTime != null "> and create_time = #{createTime}</if>-->
<!--            <if test="updateTime != null "> and update_time = #{updateTime}</if>-->
<!--            <if test="isDeleted != null "> and is_deleted = #{isDeleted}</if>-->
<!--        </where>-->
<!--    </select>-->
</mapper>
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupMapper.java
New file
@@ -0,0 +1,41 @@
package org.springblade.modules.patrol.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolGroup;
import org.springblade.modules.patrol.vo.PatrolGroupVO;
import java.util.List;
/**
 * @Description: 巡查指标组
 */
public interface PatrolGroupMapper extends BaseMapper<PatrolGroup> {
    List<PatrolGroup> getPatrolGroupByProjectId(@Param("projectId") String projectId);
    /**
     * 查询巡查项树数据
     * @return
     */
    List<TreeNode> getPatrolGroupTree();
    /**
     * 查询巡查项树数据
     * @return
     */
    List<TreeNode> getPatrolGroupItemTree();
    List<PatrolGroup> getPatrolGroupByItemId(@Param("itemIds") String itemIds);
    List<PatrolGroupVO> getAllPatrolGroupByTaskId(@Param("taskId") String taskId);
    List<PatrolGroupDTO> getPatrolGroupDTO(@Param("taskId") String taskId);
    List<PatrolGroup> getPatrolGroupByTaskId(String taskId);
    List<PatrolGroupDTO> getGroupDTORecord(@Param("taskId")String taskId);
}
src/main/java/org/springblade/modules/patrol/mapper/PatrolGroupMapper.xml
New file
@@ -0,0 +1,212 @@
<?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="org.springblade.modules.patrol.mapper.PatrolGroupMapper">
    <select id="getPatrolGroupByProjectId" resultType="org.springblade.modules.patrol.entity.PatrolGroup">
        SELECT g.id,g.name
        FROM jczz_patrol_group g
        WHERE g.is_deleted = 0
        AND g.project_id = #{projectId}
    </select>
    <!--查询巡查项树数据-->
<!--    <select id="getPatrolGroupTree" resultType="org.springblade.core.tool.node.TreeNode" >-->
<!--        (-->
<!--        SELECT-->
<!--        spg.id,-->
<!--        spg.name,-->
<!--        0 as parentId,-->
<!--        (-->
<!--            SELECT-->
<!--                CASE WHEN count(1) > 0 THEN 1 ELSE 0 END-->
<!--            FROM-->
<!--                jczz_patrol_group_item-->
<!--            WHERE-->
<!--                group_id = spg.id and is_deleted = 0-->
<!--        ) AS "has_children"-->
<!--        FROM jczz_patrol_group spg where spg.is_deleted = 0-->
<!--        )-->
<!--        union all-->
<!--        (-->
<!--        SELECT-->
<!--        spgi.id,-->
<!--        spgi.items_name as name,-->
<!--        spgi.group_id as parentId,-->
<!--        false AS hasChildren-->
<!--        FROM jczz_patrol_group_item spgi where spgi.is_deleted = 0-->
<!--        )-->
<!--    </select>-->
    <!--查询巡查项树数据-->
    <select id="getPatrolGroupTree" resultType="org.springblade.core.tool.node.TreeNode" >
        SELECT
        spg.id,
        spg.name as title,
        0 as parentId,
        (
            SELECT
                CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
            FROM
                jczz_patrol_group_item
            WHERE
                group_id = spg.id and is_deleted = 0
        ) AS "has_children"
        FROM jczz_patrol_group spg where spg.is_deleted = 0
    </select>
    <!--查询巡查项树数据-->
    <select id="getPatrolGroupItemTree" resultType="org.springblade.core.tool.node.TreeNode" >
        SELECT
            spgi.id,
            spgi.items_name as title,
            spgi.group_id as parentId,
            false AS hasChildren
        FROM jczz_patrol_group_item spgi where spgi.is_deleted = 0
    </select>
    <select id="getPatrolGroupByItemId" resultType="org.springblade.modules.patrol.entity.PatrolGroup">
        SELECT distinct b.ID,b.NAME FROM
        (
            SELECT ID,GROUP_ID FROM SM_PATROL_GROUP_ITEM WHERE ID IN
            <foreach collection="itemIds.split(',')" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
        ) a ,SM_PATROL_GROUP b
        WHERE b.is_deleted = 0 AND a.group_id = b.id
    </select>
    <select id="getAllPatrolGroupByTaskId" resultType="org.springblade.modules.patrol.vo.PatrolGroupVO">
        SELECT G.*,IF(C.GROUP_ID,1,2) isSelect,IFNULL(C.problemCount,0) problemCount  FROM SM_PATROL_GROUP G
        LEFT JOIN (
            <!--获取巡查记录表中的已选项,并获取问题数量-->
            SELECT DISTINCT I.GROUP_ID,D.problemCount FROM SM_PATROL_RECORD R
            INNER JOIN SM_PATROL_GROUP_ITEM I ON R.ITEM_ID = I.ID
            LEFT JOIN (
                SELECT I.GROUP_ID,COUNT(*) problemCount FROM SM_PATROL_RECORD R
                INNER JOIN SM_PATROL_GROUP_ITEM I ON R.ITEM_ID = I.ID
                WHERE R.IS_DELETED = 0 AND R.TASK_ID = #{taskId}
                AND R.STATUS = 2
                AND R.SOLUTION = 2
                AND R.state = 0
                GROUP BY I.GROUP_ID
            )D ON D.GROUP_ID = I.GROUP_ID
            WHERE R.IS_DELETED = 0 AND R.TASK_ID = #{taskId}
        )C ON C.GROUP_ID = G.ID
        WHERE IS_DELETED = 0
        ORDER BY G.CREATE_TIME
    </select>
    <resultMap id="patrolGroupDTO" type="org.springblade.modules.patrol.dto.PatrolGroupDTO">
        <id property="id" column="id"/>
        <result property="name" column="gname"/>
        <collection property="patrolRecordVOList" javaType="java.util.List" ofType="org.springblade.modules.patrol.vo.PatrolRecordVO">
            <result property="id" column="rId"/>
            <result property="videos" column="videos" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
            <result property="images" column="images" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
            <result property="status" column="status"/>
            <result property="isDeleted" column="isDeleted"/>
            <result property="itemId" column="itemId"/>
            <result property="itemsName" column="itemsName"/>
            <result property="taskId" column="taskId"/>
            <result property="solution" column="solution"/>
            <result property="content" column="content"/>
        </collection>
    </resultMap>
    <select id="getPatrolGroupDTO" resultMap="patrolGroupDTO">
       SELECT G.ID,
              G.NAME AS gname,
             R.ID AS rId,
              R.VIDEOS,
              R.IMAGES,
              R.STATUS,
              R.IS_DELETED,
              R.ITEM_ID  AS itemId,
        I.ITEMS_NAME AS itemsName,
              R.TASK_ID AS taskId ,
              R.SOLUTION,
              R.CONTENT
       FROM SM_PATROL_GROUP G
       LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
       LEFT JOIN SM_PATROL_RECORD R ON R.ITEM_ID = I.ID
       WHERE G.IS_DELETED = 0
       AND R.STATUS = 2 AND R.state = 0 AND R.SOLUTION = 2
       AND R.TASK_ID = #{taskId}
    </select>
    <select id="getPatrolGroupByTaskId" resultType="org.springblade.modules.patrol.entity.PatrolGroup">
       SELECT G.ID,G.NAME FROM SM_PATROL_GROUP G
       LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
       LEFT JOIN SM_PATROL_REPORT R ON R.ITEM_ID = I.ID
       WHERE G.IS_DELETED = 0
       AND R.STATUS = 2
       AND R.TASK_ID = #{taskId}
    </select>
    <select id="getGroupDTORecord" resultMap="patrolGroupDTO">
        SELECT G.ID,
               G.NAME AS gname,
               R.ID AS rId,
               R.VIDEOS,
               R.IMAGES,
               R.STATUS,
               R.IS_DELETED,
               R.ITEM_ID  AS itemId,
               I.ITEMS_NAME AS itemsName,
               R.TASK_ID AS taskId ,
               R.SOLUTION,
               R.CONTENT
        FROM SM_PATROL_GROUP G
                 LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
                 LEFT JOIN SM_PATROL_RECORD R ON R.ITEM_ID = I.ID
        WHERE G.IS_DELETED = 0
          AND R.STATUS = 2
          AND R.TASK_ID = #{taskId}
    </select>
<!--    <resultMap type="org.springblade.modules.dto.PatrolGroupItemDTO" id="PatrolGroupItemDTOResult">-->
<!--        <result property="id"    column="id"    />-->
<!--        <result property="groupId"    column="group_id"    />-->
<!--        <result property="itemsName"    column="items_name"    />-->
<!--        <result property="description"    column="description"    />-->
<!--        <result property="createUser"    column="create_user"    />-->
<!--        <result property="createTime"    column="create_time"    />-->
<!--        <result property="updateTime"    column="update_time"    />-->
<!--        <result property="isDeleted"    column="is_deleted"    />-->
<!--    </resultMap>-->
    <sql id="selectPatrolGroupItem">
        select
            id,
            group_id,
            items_name,
            description,
            create_user,
            create_time,
            update_time,
            is_deleted
        from
            jczz_patrol_group_item
    </sql>
<!--    <select id="selectPatrolGroupItemById" parameterType="long" resultMap="PatrolGroupItemDTOResult">-->
<!--        <include refid="selectPatrolGroupItem"/>-->
<!--        where-->
<!--        id = #{id}-->
<!--    </select>-->
<!--    <select id="selectPatrolGroupItemList" parameterType="org.springblade.modules.dto.PatrolGroupItemDTO" resultMap="PatrolGroupItemDTOResult">-->
<!--        <include refid="selectPatrolGroupItem"/>-->
<!--        <where>-->
<!--            <if test="id != null "> and id = #{id}</if>-->
<!--            <if test="groupId != null "> and group_id = #{groupId}</if>-->
<!--            <if test="itemsName != null  and itemsName != ''"> and items_name = #{itemsName}</if>-->
<!--            <if test="description != null  and description != ''"> and description = #{description}</if>-->
<!--            <if test="createUser != null "> and create_user = #{createUser}</if>-->
<!--            <if test="createTime != null "> and create_time = #{createTime}</if>-->
<!--            <if test="updateTime != null "> and update_time = #{updateTime}</if>-->
<!--            <if test="isDeleted != null "> and is_deleted = #{isDeleted}</if>-->
<!--        </where>-->
<!--    </select>-->
</mapper>
src/main/java/org/springblade/modules/patrol/mapper/PatrolRecordMapper.java
New file
@@ -0,0 +1,27 @@
package org.springblade.modules.patrol.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.vo.PatrolRecordVO;
import java.util.List;
public interface PatrolRecordMapper extends BaseMapper<PatrolRecord> {
    List<PatrolRecord> selectPatrolRecord(IPage<PatrolRecord> page, @Param("patrolRecord") PatrolRecordVO patrolRecord);
    PatrolRecordVO getDetail(@Param("id") String id);
    PatrolRecord selectPatrolRecordByTaskIdAndItemId(@Param("taskId") String taskId, @Param("itemId") Long itemId);
    List<PatrolRecordVO> getByTaskIdAndItemId(@Param("taskId") String taskId, @Param("itemIds") String itemIds);
    PatrolRecordVO getPatrolRecordVO(@Param("itemId") Long itemId, @Param("taskId") String taskId);
    List<PatrolRecord> getByTaskIdAndGroupId(@Param("vo") PatrolRecordVO patrolRecordVO);
    List<PatrolGroupDTO> getHistoryRecord(@Param("vo") PatrolRecordVO patrolRecordVO);
}
src/main/java/org/springblade/modules/patrol/mapper/PatrolRecordMapper.xml
New file
@@ -0,0 +1,244 @@
<?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="org.springblade.modules.patrol.mapper.PatrolRecordMapper">
    <resultMap id="selectPatrolRecordList" type="org.springblade.modules.patrol.vo.PatrolRecordVO">
        <result column="id" property="id"/>
        <result column="patrol_type" property="patrolType"/>
        <result column="device_ids" property="deviceIds"/>
        <result column="images" property="images"
                typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
        <result column="videos" property="videos"
                typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
        <result column="content" property="content"/>
        <result column="status" property="status"/>
        <result column="item_id" property="itemId"/>
        <result column="task_id" property="taskId"/>
        <result column="patrol_route" property="patrolRoute"/>
        <result column="taskRoute" property="taskRoute"/>
        <result property="groupName" column="groupName"/>
        <result property="groupId" column="groupId"/>
        <result property="itemsName" column="itemsName"/>
        <result property="description" column="description"/>
        <result property="patrolTime" column="update_time"/>
        <result property="phone" column="phone"/>
        <result property="toUserId" column="create_user"/>
        <result property="toUserName" column="real_name"/>
        <result property="taskName" column="taskName"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
    <select id="selectPatrolRecord" resultMap="selectPatrolRecordList">
        SELECT
        record.id,record.patrol_type,record.device_ids,record.images,record.videos,record.content,record.status,record.item_id,record.task_id,record.patrol_route,record.create_time,record.update_time,record.solution,
        task.route_coordinates taskRoute,task.title taskName,
        item.items_name itemsName,item.description,
        u.real_name,res."name" resName,res."guid" resGuid,res."res_reg_code" resRegCode,res."res_loc" resLoc
        FROM SM_PATROL_RECORD record
        LEFT JOIN sm_patrol_type type ON type.id = record.patrol_type
        LEFT JOIN sm_patrol_task task ON task.id = record.task_id
        LEFT JOIN sjzt_md."att_res_base" res ON task.project_id = res."guid"
        LEFT JOIN jczz_patrol_group_item item ON item.id = record.item_id
        LEFT JOIN BLADE_USER u ON u.id = record.create_user
        WHERE record.is_deleted = 0
        <if test="patrolRecord.status !=null and patrolRecord.status != '' ">
            AND record.status = #{patrolRecord.status}
        </if>
        <if test="patrolRecord.patrolType !=null and patrolRecord.patrolType !=''">
            AND record.patrolType = #{patrolRecord.patrolType}
        </if>
        <if test="patrolRecord.taskId !=null and patrolRecord.taskId !=''">
            AND record.task_id = #{patrolRecord.taskId}
        </if>
        <if test="patrolRecord.resName != null and patrolRecord.resName !=''">
            AND res."name" LIKE CONCAT('%',#{patrolRecord.resName},'%')
        </if>
        ORDER BY record.create_time DESC
    </select>
    <select id="getDetail" resultMap="selectPatrolRecordList">
        SELECT
            record.id,record.patrol_type,record.images,record.videos,record.content,record.status,record.item_id,record.content,record.task_id,record.patrol_route,record.create_user,record.solution,
            item.description,
            u.phone
        FROM SM_PATROL_RECORD record
        LEFT JOIN sm_patrol_type type ON type.id = record.patrol_type
        LEFT JOIN sm_patrol_task task ON task.id = record.task_id
        LEFT JOIN jczz_patrol_group_item item ON item.id = record.item_id
        LEFT JOIN BLADE_USER u ON u.id = record.create_user
        WHERE record.is_deleted = 0
        AND record.id =#{id}
    </select>
    <select id="selectPatrolRecordByTaskIdAndItemId" resultType="org.springblade.modules.patrol.entity.PatrolRecord">
        SELECT id FROM sm_patrol_record WHERE is_deleted = 0 AND task_id = #{taskId} AND item_id = #{itemId}
    </select>
    <select id="getByTaskIdAndItemId" resultMap="selectPatrolRecordList">
        SELECT r.id,r.patrol_type,r.device_ids,r.images,r.videos,r.content,r.status,r.item_id,r.task_id,r.update_time,r.solution,
        c.name groupName,c.id groupId,c.items_name itemsName,c.description,
        u.real_name
        FROM SM_PATROL_RECORD r
        LEFT JOIN
        (SELECT g.ID,g.NAME,a.id itemId, a.items_name,description FROM
        (
        SELECT ID,GROUP_ID,items_name,description FROM SM_PATROL_GROUP_ITEM WHERE ID IN
        <foreach collection="itemIds.split(',')" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
        ) a ,SM_PATROL_GROUP g
        WHERE g.is_deleted = 0 AND a.group_id = g.id) c
        ON c.itemId = r.item_id
        LEFT JOIN SM_PATROL_TASK t ON t.id = r.task_id
        LEFT JOIN BLADE_USER u ON u.id = r.create_user
        where r.task_id = #{taskId}
    </select>
    <select id="getPatrolRecordVO" resultMap="selectPatrolRecordList">
        SELECT r.id,r.patrol_type,r.device_ids,r.images,r.videos,r.content,r.status,r.item_id,r.task_id,r.create_user,r.create_dept,r.solution,
        i.items_name itemsName,i.description
        FROM sm_patrol_record r
        LEFT JOIN jczz_patrol_group_item i ON i.id = r.item_id
        WHERE r.is_deleted = 0
        AND r.item_id = #{itemId}
        AND r.task_id = #{taskId}
    </select>
    <select id="getByTaskIdAndGroupId" resultMap="selectPatrolRecordList">
        SELECT
               c.group_id AS groupId,
               r.id,
               r.patrol_type,
               r.device_ids,
               r.images,
               r.videos,
               r.content,
               r.status,
               r.item_id,
               r.task_id,
               r.create_user,
               r.create_dept,
               r.solution,
                C.items_name AS itemsName,
               C.description
        FROM SM_PATROL_RECORD r
        RIGHT JOIN (
         SELECT B.ID,B.GROUP_ID,B.ITEMS_NAME,B.DESCRIPTION
         FROM SM_PATROL_GROUP A
         INNER JOIN SM_PATROL_GROUP_ITEM B ON A.ID = B.GROUP_ID
         WHERE  1=1
         <if test="vo.groupId != null and vo.groupId !=''">
            AND  B.GROUP_ID = #{vo.groupId}
         </if>
         ORDER BY B.GROUP_ID
        )C ON C.ID = r.ITEM_ID
        WHERE  r.state = 0
        <if test="vo.taskId != null and vo.taskId !=''">
           AND r.task_id = #{vo.taskId}
        </if>
        <if test="vo.flowTaskId != null and vo.flowTaskId !=''">
            AND r.flow_task_id = #{vo.flowTaskId}
        </if>
    </select>
    <resultMap id="patrolGroupDTO" type="org.springblade.modules.patrol.dto.PatrolGroupDTO">
        <id property="id" column="id"/>
        <result property="name" column="gname"/>
        <collection property="patrolRecordVOList" javaType="java.util.List" ofType="org.springblade.modules.patrol.vo.PatrolRecordVO">
            <result property="id" column="rId"/>
            <result property="videos" column="videos" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
            <result property="images" column="images" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
            <result property="status" column="status"/>
            <result property="isDeleted" column="isDeleted"/>
            <result property="itemId" column="itemId"/>
            <result property="itemsName" column="itemsName"/>
            <result property="taskId" column="taskId"/>
            <result property="solution" column="solution"/>
            <result property="content" column="content"/>
        </collection>
    </resultMap>
    <select id="getHistoryRecord" resultMap="patrolGroupDTO">
        SELECT G.ID,
               G.NAME AS gname,
               R.ID AS rId,
               R.VIDEOS,
               R.IMAGES,
               R.STATUS,
               R.IS_DELETED,
               R.ITEM_ID  AS itemId,
               I.ITEMS_NAME AS itemsName,
               R.TASK_ID AS taskId ,
               R.SOLUTION,
               R.CONTENT
        FROM SM_PATROL_GROUP G
                 LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
                 LEFT JOIN SM_PATROL_RECORD R ON R.ITEM_ID = I.ID
        WHERE G.IS_DELETED = 0
          <if test="vo.flowTaskId != null and vo.flowTaskId !='' ">
              AND R.FLOW_TASK_ID = #{vo.flowTaskId}
          </if>
         <if test="vo.taskId !=null and vo.taskId !='' ">
             AND R.TASK_ID = #{vo.taskId}
         </if>
        <if test="vo.recordType !=null and vo.recordType !=''">
            AND R.record_type = #{vo.recordType}
        </if>
    </select>
<!--    <resultMap type="org.springblade.modules.dto.PatrolRecordDTO" id="PatrolRecordDTOResult">-->
<!--        <result property="id"    column="id"    />-->
<!--        <result property="itemId"    column="item_id"    />-->
<!--        <result property="placeCheckId"    column="place_check_id"    />-->
<!--        <result property="state"    column="state"    />-->
<!--        <result property="remark"    column="remark"    />-->
<!--        <result property="imageUrls"    column="image_urls"    />-->
<!--        <result property="createUser"    column="create_user"    />-->
<!--        <result property="createTime"    column="create_time"    />-->
<!--        <result property="isDeleted"    column="is_deleted"    />-->
<!--    </resultMap>-->
    <sql id="selectPatrolRecord">
        select
            id,
            item_id,
            place_check_id,
            state,
            remark,
            image_urls,
            create_user,
            create_time,
            is_deleted
        from
            jczz_patrol_record
    </sql>
<!--    <select id="selectPatrolRecordById" parameterType="long" resultMap="PatrolRecordDTOResult">-->
<!--        <include refid="selectPatrolRecord"/>-->
<!--        where-->
<!--        id = #{id}-->
<!--    </select>-->
<!--    <select id="selectPatrolRecordList" parameterType="org.springblade.modules.dto.PatrolRecordDTO" resultMap="PatrolRecordDTOResult">-->
<!--        <include refid="selectPatrolRecord"/>-->
<!--        <where>-->
<!--            <if test="id != null "> and id = #{id}</if>-->
<!--            <if test="itemId != null "> and item_id = #{itemId}</if>-->
<!--            <if test="placeCheckId != null "> and place_check_id = #{placeCheckId}</if>-->
<!--            <if test="state != null "> and state = #{state}</if>-->
<!--            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>-->
<!--            <if test="imageUrls != null  and imageUrls != ''"> and image_urls = #{imageUrls}</if>-->
<!--            <if test="createUser != null "> and create_user = #{createUser}</if>-->
<!--            <if test="createTime != null "> and create_time = #{createTime}</if>-->
<!--            <if test="isDeleted != null "> and is_deleted = #{isDeleted}</if>-->
<!--        </where>-->
<!--    </select>-->
</mapper>
src/main/java/org/springblade/modules/patrol/service/IPatrolGroupItemService.java
New file
@@ -0,0 +1,45 @@
package org.springblade.modules.patrol.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import java.util.List;
/**
 * @Description: 巡查指标项目
 */
public interface IPatrolGroupItemService extends IService<PatrolGroupItem> {
    /**
     * 查询全部
     * @param patrolGroupItem
     * @return
     */
    List<PatrolGroupItemVO> selectPatrolGroupItemList(PatrolGroupItemVO patrolGroupItem);
    /**
     * 自定义分页
     * @param page
     * @param patrolGroupItem
     * @return
     */
    IPage<PatrolGroupItemVO> selectPatrolConfig(IPage<PatrolGroupItemVO> page, PatrolGroupItemVO patrolGroupItem);
    /**
     * 获取vo数据
     * @param id
     * @return
     */
    PatrolGroupItemVO getPatrolGroupItemVOById(Long id);
    /**
     * 获取项集合
     * @param itemIds 指标项ids
     * @param groupId 组id
     * @return
     */
    List<PatrolGroupItem> getItemByItemIds(String itemIds, String groupId);
}
src/main/java/org/springblade/modules/patrol/service/IPatrolGroupService.java
New file
@@ -0,0 +1,46 @@
package org.springblade.modules.patrol.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolGroup;
import org.springblade.modules.patrol.vo.PatrolGroupVO;
import java.util.List;
/**
 * @Description: 巡查指标组
 */
public interface IPatrolGroupService extends IService<PatrolGroup> {
    /**
     * 自定义分页查询
     * @param page
     * @param patrolGroup
     * @return
     */
    IPage<PatrolGroup> selectPatrolConfig(IPage<Object> page, PatrolGroup patrolGroup);
    List<PatrolGroup> getPatrolGroupByProjectId(String projectId);
    /**
     * 查询巡查项树数据
     * @return
     */
    Object getPatrolGroupTree();
    /**
     * 获取组
     * @param itemIds 项ids
     * @return
     */
    List<PatrolGroup> getPatrolGroupByItemId(String itemIds);
    List<PatrolGroupVO> getAllPatrolGroupByTaskId(String taskId);
    List<PatrolGroupDTO> getPatrolGroupDTO(String taskId);
    List<PatrolGroup> getPatrolGroupByTaskId(String taskId);
    List<PatrolGroupDTO> getGroupDTORecord(String taskId);
}
src/main/java/org/springblade/modules/patrol/service/IPatrolRecordService.java
New file
@@ -0,0 +1,58 @@
package org.springblade.modules.patrol.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import org.springblade.modules.patrol.vo.PatrolRecordVO;
import java.util.List;
public interface IPatrolRecordService extends IService<PatrolRecord> {
    /**
     * 自定义分页查询
     * @param page
     * @param patrolRecord
     * @return
     */
    IPage<PatrolRecord> selectPatrolRecord(IPage<PatrolRecord> page, PatrolRecordVO patrolRecord);
    /**
     * 获取详情
     * @param id
     * @return
     */
    PatrolRecordVO getDetail(String id);
    /**
     * 根据任务id查询巡查记录表中的内容
     * @param taskId
     * @param itemIds
     * @return
     */
    List<PatrolGroupItemVO> getPatrolRecordByTaskId(String taskId, String itemIds);
    /**
     * 通过taskId,itemsIds查询(用来查询巡查记录)
     * @param taskId 任务id
     * @param itemIds 项ids
     * @return
     */
    List<PatrolRecordVO> getByTaskIdAndItemId(String taskId, String itemIds);
    /**
     * 用于app巡查上报
     * @param itemIds
     * @param groupId
     * @param taskId
     * @return
     */
    List getItemByItemIds(String itemIds, String groupId, String taskId);
    List<PatrolRecord> getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO);
    // Boolean updateThenSaveBatch(RecordBatchVO recordBatchVO);
    List<PatrolGroupDTO> getHistoryRecord(PatrolRecordVO patrolRecordVO);
}
src/main/java/org/springblade/modules/patrol/service/impl/PatrolGroupItemServiceImpl.java
New file
@@ -0,0 +1,43 @@
package org.springblade.modules.patrol.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
import org.springblade.modules.patrol.mapper.PatrolGroupItemMapper;
import org.springblade.modules.patrol.service.IPatrolGroupItemService;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @Description: 巡查指标项目
 */
@Service
@AllArgsConstructor
public class PatrolGroupItemServiceImpl extends ServiceImpl<PatrolGroupItemMapper, PatrolGroupItem> implements IPatrolGroupItemService {
    @Override
    public List<PatrolGroupItemVO> selectPatrolGroupItemList(PatrolGroupItemVO patrolGroupItem) {
        return baseMapper.selectPatrolGroupItemList(patrolGroupItem);
    }
    @Override
    public IPage<PatrolGroupItemVO> selectPatrolConfig(IPage<PatrolGroupItemVO> page, PatrolGroupItemVO patrolGroupItem) {
        return page.setRecords(baseMapper.selectPatrolGroupItemList(patrolGroupItem));
    }
    @Override
    public PatrolGroupItemVO getPatrolGroupItemVOById(Long id) {
        return baseMapper.getPatrolGroupItemVOById(id);
    }
    @Override
    public List<PatrolGroupItem> getItemByItemIds(String itemIds, String groupId) {
        return baseMapper.getItemByItemIds(itemIds,groupId);
    }
}
src/main/java/org/springblade/modules/patrol/service/impl/PatrolGroupServiceImpl.java
New file
@@ -0,0 +1,71 @@
package org.springblade.modules.patrol.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.core.tool.node.TreeNode;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolGroup;
import org.springblade.modules.patrol.mapper.PatrolGroupMapper;
import org.springblade.modules.patrol.service.IPatrolGroupService;
import org.springblade.modules.patrol.vo.PatrolGroupVO;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @Description: 巡查指标组
 */
@Service
public class PatrolGroupServiceImpl extends ServiceImpl<PatrolGroupMapper, PatrolGroup> implements IPatrolGroupService {
    @Override
    public IPage<PatrolGroup> selectPatrolConfig(IPage<Object> page, PatrolGroup patrolGroup) {
        return null;
    }
    @Override
    public List<PatrolGroup> getPatrolGroupByProjectId(String projectId) {
        return baseMapper.getPatrolGroupByProjectId(projectId);
    }
    /**
     * 查询巡查项树数据
     * @return
     */
    @Override
    public Object getPatrolGroupTree() {
        // 查询父树目录
        List<TreeNode> patrolGroupTree = baseMapper.getPatrolGroupTree();
        // 查询孩子树目录
        List<TreeNode> patrolGroupItemTree = baseMapper.getPatrolGroupItemTree();
        // 数据处理
        return NodeTreeUtil.getNodeTree(patrolGroupTree,patrolGroupItemTree);
    }
    @Override
    public List<PatrolGroup> getPatrolGroupByItemId(String itemIds) {
        return baseMapper.getPatrolGroupByItemId(itemIds);
    }
    @Override
    public List<PatrolGroupVO> getAllPatrolGroupByTaskId(String taskId) {
        return baseMapper.getAllPatrolGroupByTaskId(taskId);
    }
    @Override
    public List<PatrolGroupDTO> getPatrolGroupDTO(String taskId) {
        return baseMapper.getPatrolGroupDTO(taskId);
    }
    @Override
    public List<PatrolGroup> getPatrolGroupByTaskId(String taskId) {
        return baseMapper.getPatrolGroupByTaskId(taskId);
    }
    @Override
    public List<PatrolGroupDTO> getGroupDTORecord(String taskId) {
        return baseMapper.getGroupDTORecord(taskId);
    }
}
src/main/java/org/springblade/modules/patrol/service/impl/PatrolRecordServiceImpl.java
New file
@@ -0,0 +1,96 @@
package org.springblade.modules.patrol.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.modules.patrol.dto.PatrolGroupDTO;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.mapper.PatrolRecordMapper;
import org.springblade.modules.patrol.service.IPatrolGroupItemService;
import org.springblade.modules.patrol.service.IPatrolRecordService;
import org.springblade.modules.patrol.vo.PatrolGroupItemVO;
import org.springblade.modules.patrol.vo.PatrolRecordVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@AllArgsConstructor
public class PatrolRecordServiceImpl extends ServiceImpl<PatrolRecordMapper, PatrolRecord> implements IPatrolRecordService {
    IPatrolGroupItemService patrolGroupItemService;
    @Override
    public IPage<PatrolRecord> selectPatrolRecord(IPage<PatrolRecord> page, PatrolRecordVO patrolRecord) {
        return page.setRecords(baseMapper.selectPatrolRecord(page, patrolRecord));
    }
    @Override
    public PatrolRecordVO getDetail(String id) {
        return baseMapper.getDetail(id);
    }
    @Override
    public List<PatrolGroupItemVO> getPatrolRecordByTaskId(String taskId, String itemIds) {
        List<Long> longList = Func.toLongList(itemIds);
        List<PatrolGroupItemVO> patrolGroupItemVOList = new ArrayList<>();
        longList.forEach(e -> {
            PatrolRecord patrolRecord = baseMapper.selectPatrolRecordByTaskIdAndItemId(taskId, e);
            if (ObjectUtil.isEmpty(patrolRecord)) {
                PatrolGroupItemVO patrolGroupItemVO = patrolGroupItemService.getPatrolGroupItemVOById(e);
                patrolGroupItemVOList.add(patrolGroupItemVO);
            }
        });
        return patrolGroupItemVOList;
    }
    @Override
    public List<PatrolRecordVO> getByTaskIdAndItemId(String taskId, String itemIds) {
        return baseMapper.getByTaskIdAndItemId(taskId, itemIds);
    }
    @Override
    public List getItemByItemIds(String itemIds, String groupId, String taskId) {
        List<PatrolGroupItem> itemList = patrolGroupItemService.getItemByItemIds(itemIds, groupId);
        List<PatrolRecord> patrolRecordList = new ArrayList<>();
        itemList.forEach(item -> {
            PatrolRecordVO one = baseMapper.getPatrolRecordVO(item.getId(), taskId);
            if (ObjectUtil.isNotEmpty(one)) {
                patrolRecordList.add(one);
            }
        });
        if (patrolRecordList.size() > 0) {
            return patrolRecordList;
        } else {
            return itemList;
        }
    }
    @Override
    public List<PatrolRecord> getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO) {
        return baseMapper.getByTaskIdAndGroupId(patrolRecordVO);
    }
    // @Override
    // @Transactional(rollbackFor = Exception.class)
    // public Boolean updateThenSaveBatch(RecordBatchVO recordBatchVO) {
    //
    //
    //     boolean b = updateBatchById(recordBatchVO.getUpdateList());
    //     boolean b1 = saveBatch(recordBatchVO.getAddList());
    //
    //     return b && b1;
    // }
    @Override
    public List<PatrolGroupDTO> getHistoryRecord(PatrolRecordVO patrolRecordVO) {
        return baseMapper.getHistoryRecord(patrolRecordVO);
    }
}
src/main/java/org/springblade/modules/patrol/vo/PatrolGroupItemVO.java
New file
@@ -0,0 +1,18 @@
package org.springblade.modules.patrol.vo;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolGroupItem;
/**
 * 巡查组明细 vo
 * @author zhongrj
 * @date 2023-03-31
 */
@Data
public class PatrolGroupItemVO extends PatrolGroupItem {
    /**
     * 组名称
     */
    private String groupName;
}
src/main/java/org/springblade/modules/patrol/vo/PatrolGroupVO.java
New file
@@ -0,0 +1,22 @@
package org.springblade.modules.patrol.vo;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolGroup;
/**
 * 巡查组vo
 */
@Data
public class PatrolGroupVO extends PatrolGroup {
    /**
     * 是否在记录表中
     */
    private String isSelect;
    /**
     * 问题数量
     */
    private Integer problemCount;
}
src/main/java/org/springblade/modules/patrol/vo/PatrolRecordVO.java
New file
@@ -0,0 +1,72 @@
package org.springblade.modules.patrol.vo;
import lombok.Data;
import org.springblade.modules.patrol.entity.PatrolRecord;
@Data
public class PatrolRecordVO extends PatrolRecord {
    /**
     * 任务巡查路线
     */
    private String taskRoute;
    /**
     * 组名称
     */
    private String groupName;
    /**
     * 组id
     */
    private String groupId;
    /**
     * 项名称
     */
    private String itemsName;
    /**
     * 项描述
     */
    private String description;
    /**
     * 巡查时间
     */
    private String patrolTime;
    /**
     * 巡查人id
     */
    private String toUserId;
    /**
     * 巡查人名
     */
    private String toUserName;
    /**
     * 联系方式
     */
    private String phone;
    /**
     * 任务名称
     */
    private String taskName;
    /**
     * 水库编码
     */
    private String resGuid;
    /**
     * 水库名称
     */
    private String resName;
    /**
     * 水库注册登记码
     */
    private String resRegCode;
    /**
     * 水库所在位置
     */
    private String resLoc;
}
src/main/java/org/springblade/modules/place/controller/PlaceCheckController.java
@@ -88,8 +88,8 @@
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入placeCheck")
    public R save(@Valid @RequestBody PlaceCheckEntity placeCheck) {
        return R.status(placeCheckService.save(placeCheck));
    public R save(@Valid @RequestBody PlaceCheckVO placeCheck) throws Exception {
        return R.status(placeCheckService.savePlace(placeCheck));
    }
    /**
@@ -108,7 +108,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入placeCheck")
    public R submit(@Valid @RequestBody PlaceCheckEntity placeCheck) {
    public R submit(@Valid @RequestBody PlaceCheckVO placeCheck) {
        return R.status(placeCheckService.saveOrUpdate(placeCheck));
    }
src/main/java/org/springblade/modules/place/entity/PlaceCheckEntity.java
@@ -42,57 +42,41 @@
public class PlaceCheckEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("主键id")
    /** 主键id */
    @ApiModelProperty(value = "主键ID", example = "")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 门牌地址编码
     */
    @ApiModelProperty(value = "门牌地址编码")
    /** 门牌地址编码 */
    @ApiModelProperty(value = "门牌地址编码", example = "")
    @TableField("house_code")
    private String houseCode;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    /** 其他隐患问题 */
    @ApiModelProperty(value = "其他隐患问题", example = "")
    @TableField("remark")
    private String remark;
    /**
     * 照片
     */
    @ApiModelProperty(value = "照片")
    private String imageUrls;
    /**
     * 签名路径
     */
    @ApiModelProperty(value = "签名路径")
    /** 签名路径 */
    @ApiModelProperty(value = "签名路径", example = "")
    @TableField("signature_path")
    private String signaturePath;
    /**
     * 创建人
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    /** 创建人 */
    @ApiModelProperty(value = "创建人", example = "")
    @TableField("create_user")
    private Long createUser;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间", example = "")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("create_time")
    private Date createTime;
    /**
     * 是否删除
     */
    @TableLogic
    @ApiModelProperty("是否已删除 0:否  1:是")
    /** 是否删除 0:否  1:是 */
    @ApiModelProperty(value = "是否删除 0:否  1:是", example = "")
    @TableField("is_deleted")
    private Integer isDeleted;
}
src/main/java/org/springblade/modules/place/mapper/PlaceCheckMapper.xml
@@ -3,7 +3,7 @@
<mapper namespace="org.springblade.modules.place.mapper.PlaceCheckMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="placeCheckResultMap" type="org.springblade.modules.place.entity.PlaceCheckEntity">
    <resultMap id="placeCheckResultMap" type="org.springblade.modules.place.vo.PlaceCheckVO">
        <result column="id" property="id"/>
        <result column="house_code" property="houseCode"/>
        <result column="remark" property="remark"/>
@@ -12,6 +12,12 @@
        <result column="create_user" property="createUser"/>
        <result column="create_time" property="createTime"/>
        <result column="is_deleted" property="isDeleted"/>
        <collection property="patrolRecordVOList" column="id" select="selectTaskRepairStepList"
                    javaType="java.util.List" ofType="org.springblade.modules.patrol.entity.PatrolRecord"
                    autoMapping="true">
            <id property="placeCheckId" column="id"/>
        </collection>
    </resultMap>
    <!--自定义分页查询-->
@@ -29,4 +35,48 @@
    </select>
<!--    <resultMap type="org.springblade.modules.dto.PlaceCheckDTO" id="PlaceCheckDTOResult">-->
<!--        <result property="id"    column="id"    />-->
<!--        <result property="houseCode"    column="house_code"    />-->
<!--        <result property="remark"    column="remark"    />-->
<!--        <result property="signaturePath"    column="signature_path"    />-->
<!--        <result property="createUser"    column="create_user"    />-->
<!--        <result property="createTime"    column="create_time"    />-->
<!--        <result property="isDeleted"    column="is_deleted"    />-->
<!--    </resultMap>-->
    <sql id="selectPlaceCheck">
        select
            id,
            house_code,
            remark,
            signature_path,
            create_user,
            create_time,
            is_deleted
        from
            jczz_place_check
    </sql>
<!--    <select id="selectPlaceCheckById" parameterType="long" resultMap="PlaceCheckDTOResult">-->
<!--        <include refid="selectPlaceCheck"/>-->
<!--        where-->
<!--        id = #{id}-->
<!--    </select>-->
<!--    <select id="selectPlaceCheckList" parameterType="org.springblade.modules.dto.PlaceCheckDTO" resultMap="PlaceCheckDTOResult">-->
<!--        <include refid="selectPlaceCheck"/>-->
<!--        <where>-->
<!--            <if test="id != null "> and id = #{id}</if>-->
<!--            <if test="houseCode != null  and houseCode != ''"> and house_code = #{houseCode}</if>-->
<!--            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>-->
<!--            <if test="signaturePath != null  and signaturePath != ''"> and signature_path = #{signaturePath}</if>-->
<!--            <if test="createUser != null "> and create_user = #{createUser}</if>-->
<!--            <if test="createTime != null "> and create_time = #{createTime}</if>-->
<!--            <if test="isDeleted != null "> and is_deleted = #{isDeleted}</if>-->
<!--        </where>-->
<!--    </select>-->
</mapper>
src/main/java/org/springblade/modules/place/service/IPlaceCheckService.java
@@ -40,4 +40,5 @@
    IPage<PlaceCheckVO> selectPlaceCheckPage(IPage<PlaceCheckVO> page, PlaceCheckVO placeCheck);
    Boolean savePlace(PlaceCheckVO placeCheck) throws Exception;
}
src/main/java/org/springblade/modules/place/service/impl/PlaceCheckServiceImpl.java
@@ -17,6 +17,9 @@
package org.springblade.modules.place.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.service.IPatrolRecordService;
import org.springblade.modules.place.entity.PlaceCheckEntity;
import org.springblade.modules.place.vo.PlaceCheckVO;
import org.springblade.modules.place.mapper.PlaceCheckMapper;
@@ -24,6 +27,10 @@
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 场所检查表 服务实现类
@@ -39,5 +46,22 @@
        return page.setRecords(baseMapper.selectPlaceCheckPage(page, placeCheck));
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean savePlace(PlaceCheckVO placeCheck) throws Exception {
        boolean save = save(placeCheck);
        if (save) {
            IPatrolRecordService bean = SpringUtil.getBean(IPatrolRecordService.class);
            List<PatrolRecord> patrolRecordVOList = placeCheck.getPatrolRecordVOList();
            patrolRecordVOList.stream().forEach(item -> {
                item.setPlaceCheckId(placeCheck.getId());
            });
            boolean b = bean.saveBatch(placeCheck.getPatrolRecordVOList());
            if (b) {
                return b;
            }
            throw new Exception("保存失败!");
        }
        return false;
    }
}
src/main/java/org/springblade/modules/place/vo/PlaceCheckVO.java
@@ -16,10 +16,16 @@
 */
package org.springblade.modules.place.vo;
import liquibase.pro.packaged.P;
import org.springblade.modules.grid.entity.GridPatrolRecordEntity;
import org.springblade.modules.patrol.entity.PatrolRecord;
import org.springblade.modules.patrol.vo.PatrolRecordVO;
import org.springblade.modules.place.entity.PlaceCheckEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * 场所检查表 视图实体类
@@ -42,4 +48,7 @@
     */
    private String endTime;
    private List<PatrolRecord> patrolRecordVOList;
}
src/main/java/org/springblade/modules/task/mapper/TaskReportForRepairsMapper.xml
@@ -152,16 +152,36 @@
        jtrfr.lat,
        jtrfr.address,
        jtrfr.view_type,
        br.town_name streetName,
        jg.grid_name,
        jda.aoi_name,
        br.village_name communityName,
        jda.address_name as addressName
        from jczz_task_report_for_repairs jtrfr
        left join jczz_doorplate_address jda on jda.address_code = jtrfr.address_code
        left join jczz_grid_range jgr on jgr.house_code = jtrfr.address_code
        left join jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
        LEFT JOIN jczz_house jh on jh.house_code=jtrfr.address_code
        left join jczz_grid jg on jg.grid_code = jh.grid_code and jg.is_deleted = 0
        left join blade_region br on br.code = jg.community_code
        where jtrfr.is_deleted = 0
        <if test="vo.createUser != null and vo.createUser != ''">
            AND jtrfr.create_user = #{vo.createUser}
        </if>
        <if test="vo.streetName != null and vo.streetName != ''">
            AND br.town_name like concat('%',#{vo.streetName},'%')
        </if>
        <if test="vo.communityName != null and vo.communityName != ''">
            AND br.village_name like concat('%',#{vo.communityName},'%')
        </if>
        <if test="vo.gridName != null and vo.gridName != ''">
            AND jg.grid_name like concat('%',#{vo.gridName},'%')
        </if>
        <if test="vo.aoiName != null and vo.aoiName != ''">
            AND jda.aoi_name like concat('%',#{vo.aoiName},'%')
        </if>
        <if test="vo.type != null">
            AND jtrfr.type = #{vo.type}
        </if>
@@ -208,8 +228,7 @@
                        or jtrfr.confirm_user_id = #{vo.confirmUserId})
                    </when>
                    <otherwise>
                        and (jda.address_code in ('')
                        or jtrfr.confirm_user_id = #{vo.confirmUserId})
                        and (jtrfr.confirm_user_id = #{vo.confirmUserId})
                    </otherwise>
                </choose>
            </if>
src/main/java/org/springblade/modules/task/vo/TaskReportForRepairsVO.java
@@ -17,6 +17,7 @@
package org.springblade.modules.task.vo;
import io.swagger.annotations.ApiModelProperty;
import liquibase.pro.packaged.S;
import org.springblade.modules.task.entity.TaskRepairAppraiseEntity;
import org.springblade.modules.task.entity.TaskRepairStepEntity;
import org.springblade.modules.task.entity.TaskReportForRepairsEntity;
@@ -58,6 +59,15 @@
     */
    private String regionCode;
    private String streetName;
    private String communityName;
    // 网格名称
    private String gridName;
    // 小区名称
    private String aoiName;
    /**
     * 事件步骤
     */