소스 검색

添加警示桩巡查记录

JX.Li 1 년 전
부모
커밋
19167f5732
23개의 변경된 파일1053개의 추가작업 그리고 9개의 파일을 삭제
  1. 113 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/GPatrolRecordController.java
  2. 9 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/GWarningPileController.java
  3. 93 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/mobile/MPatrolRecordController.java
  4. 1 1
      ruoyi-admin/src/main/resources/application.yml
  5. 49 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GPatrolRecord.java
  6. 42 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GPatrolRecordPhoto.java
  7. 80 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GPatrolRecordBo.java
  8. 73 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GPatrolRecordPhotoBo.java
  9. 0 3
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPileBo.java
  10. 49 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GPatrolRecordPhotoVo.java
  11. 58 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GPatrolRecordVo.java
  12. 22 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GPatrolRecordMapper.java
  13. 18 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GPatrolRecordPhotoMapper.java
  14. 3 1
      ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPileMapper.java
  15. 60 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGPatrolRecordPhotoService.java
  16. 56 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGPatrolRecordService.java
  17. 6 3
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGWarningPileService.java
  18. 93 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GPatrolRecordPhotoServiceImpl.java
  19. 146 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GPatrolRecordServiceImpl.java
  20. 5 0
      ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPileServiceImpl.java
  21. 45 0
      ruoyi-gas/src/main/resources/mapper/GPatrolRecordMapper.xml
  22. 26 0
      ruoyi-gas/src/main/resources/mapper/GPatrolRecordPhotoMapper.xml
  23. 6 1
      ruoyi-gas/src/main/resources/mapper/GWarningPileMapper.xml

+ 113 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/GPatrolRecordController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.web.controller.gas;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.gas.domain.bo.GPatrolRecordBo;
+import com.ruoyi.gas.domain.vo.GPatrolRecordVo;
+import com.ruoyi.gas.service.IGPatrolRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 巡查记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Validated
+@Api(value = "巡查记录控制器", tags = {"巡查记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/gas/patrolRecord")
+public class GPatrolRecordController extends BaseController {
+
+    private final IGPatrolRecordService iGPatrolRecordService;
+
+    /**
+     * 查询巡查记录列表
+     */
+    @ApiOperation("查询巡查记录列表")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:list')")
+    @GetMapping("/list")
+    public TableDataInfo<GPatrolRecordVo> list(@Validated(QueryGroup.class) GPatrolRecordBo bo) {
+        return iGPatrolRecordService.queryPageList(bo);
+    }
+
+    /**
+     * 导出巡查记录列表
+     */
+    @ApiOperation("导出巡查记录列表")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:export')")
+    @Log(title = "巡查记录", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(@Validated GPatrolRecordBo bo, HttpServletResponse response) {
+        List<GPatrolRecordVo> list = iGPatrolRecordService.queryList(bo);
+        ExcelUtil.exportExcel(list, "巡查记录", GPatrolRecordVo.class, response);
+    }
+
+    /**
+     * 获取巡查记录详细信息
+     */
+    @ApiOperation("获取巡查记录详细信息")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<GPatrolRecordVo> getInfo(@NotNull(message = "主键不能为空")
+                                                  @PathVariable("id") Long id) {
+        return AjaxResult.success(iGPatrolRecordService.queryById(id));
+    }
+
+    /**
+     * 新增巡查记录
+     */
+    @ApiOperation("新增巡查记录")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:add')")
+    @Log(title = "巡查记录", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody GPatrolRecordBo bo) {
+        return toAjax(iGPatrolRecordService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改巡查记录
+     */
+    @ApiOperation("修改巡查记录")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:edit')")
+    @Log(title = "巡查记录", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody GPatrolRecordBo bo) {
+        return toAjax(iGPatrolRecordService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除巡查记录
+     */
+    @ApiOperation("删除巡查记录")
+    @PreAuthorize("@ss.hasPermi('gas:patrolRecord:remove')")
+    @Log(title = "巡查记录" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iGPatrolRecordService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+}

+ 9 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/GWarningPileController.java

@@ -88,6 +88,15 @@ public class GWarningPileController extends BaseController {
     }
 
     /**
+     * 工人下拉
+     * @return
+     */
+    @GetMapping("/getWarningPile")
+    public AjaxResult getWarningPile() {
+        return AjaxResult.success(iGWarningPileService.getWarningPile());
+    }
+
+    /**
      * 修改警示桩
      */
     @ApiOperation("修改警示桩")

+ 93 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/mobile/MPatrolRecordController.java

@@ -0,0 +1,93 @@
+package com.ruoyi.web.controller.mobile;
+
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.gas.domain.bo.GPatrolRecordBo;
+import com.ruoyi.gas.domain.vo.GPatrolRecordVo;
+import com.ruoyi.gas.service.IGPatrolRecordService;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 巡查记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Validated
+@Api(value = "巡查记录控制器", tags = {"巡查记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/gas/patrolRecord")
+public class MPatrolRecordController extends BaseController {
+
+    private final IGPatrolRecordService iGPatrolRecordService;
+
+    /**
+     * 查询巡查记录列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<GPatrolRecordVo> list(@Validated(QueryGroup.class) GPatrolRecordBo bo) {
+        return iGPatrolRecordService.queryPageList(bo);
+    }
+
+    /**
+     * 导出巡查记录列表
+     */
+    @GetMapping("/export")
+    public void export(@Validated GPatrolRecordBo bo, HttpServletResponse response) {
+        List<GPatrolRecordVo> list = iGPatrolRecordService.queryList(bo);
+        ExcelUtil.exportExcel(list, "巡查记录", GPatrolRecordVo.class, response);
+    }
+
+    /**
+     * 获取巡查记录详细信息
+     */
+    @GetMapping("/{id}")
+    public AjaxResult<GPatrolRecordVo> getInfo(@NotNull(message = "主键不能为空")
+                                                  @PathVariable("id") Long id) {
+        return AjaxResult.success(iGPatrolRecordService.queryById(id));
+    }
+
+    /**
+     * 新增巡查记录
+     */
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody GPatrolRecordBo bo) {
+        return toAjax(iGPatrolRecordService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改巡查记录
+     */
+    @RepeatSubmit()
+    @PutMapping()
+    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody GPatrolRecordBo bo) {
+        return toAjax(iGPatrolRecordService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除巡查记录
+     */
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iGPatrolRecordService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+}

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -25,7 +25,7 @@ captcha:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8082
+  port: 8080
   servlet:
     # 应用的访问路径
     context-path: /

+ 49 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GPatrolRecord.java

@@ -0,0 +1,49 @@
+package com.ruoyi.gas.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 巡查记录对象 g_patrol_record
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@Accessors(chain = true)
+@TableName("g_patrol_record")
+public class GPatrolRecord extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 巡查人员id
+     */
+    private Long userId;
+    /**
+     * 警示桩id
+     */
+    private Long warningPileId;
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    private String delFlag;
+
+}

+ 42 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GPatrolRecordPhoto.java

@@ -0,0 +1,42 @@
+package com.ruoyi.gas.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 巡查记录照片对象 g_patrol_record_photo
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@Accessors(chain = true)
+@TableName("g_patrol_record_photo")
+public class GPatrolRecordPhoto extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 巡查记录id
+     */
+    private Long patrolRecordId;
+    /**
+     * 照片
+     */
+    private String picUrl;
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    private String delFlag;
+
+}

+ 80 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GPatrolRecordBo.java

@@ -0,0 +1,80 @@
+package com.ruoyi.gas.domain.bo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 巡查记录业务对象 g_patrol_record
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("巡查记录业务对象")
+public class GPatrolRecordBo extends BaseEntity {
+
+    private List<String> photoList;
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(value = "主键id", required = true)
+    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 巡查人员id
+     */
+    @ApiModelProperty(value = "巡查人员id", required = true)
+    @NotNull(message = "巡查人员id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 警示桩id
+     */
+    @ApiModelProperty(value = "警示桩id", required = true)
+    @NotNull(message = "警示桩id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long warningPileId;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注", required = true)
+    private String remarks;
+
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

+ 73 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GPatrolRecordPhotoBo.java

@@ -0,0 +1,73 @@
+package com.ruoyi.gas.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 巡查记录照片业务对象 g_patrol_record_photo
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("巡查记录照片业务对象")
+public class GPatrolRecordPhotoBo extends BaseEntity {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(value = "主键id", required = true)
+    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 巡查记录id
+     */
+    @ApiModelProperty(value = "巡查记录id", required = true)
+    @NotNull(message = "巡查记录id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long patrolRecordId;
+
+    /**
+     * 照片
+     */
+    @ApiModelProperty(value = "照片", required = true)
+    @NotBlank(message = "照片不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String picUrl;
+
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

+ 0 - 3
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPileBo.java

@@ -57,21 +57,18 @@ public class GWarningPileBo extends BaseEntity {
      * 经度
      */
     @ApiModelProperty(value = "经度", required = true)
-    @NotBlank(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
     private String longitude;
 
     /**
      * 纬度
      */
     @ApiModelProperty(value = "纬度", required = true)
-    @NotBlank(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
     private String latitude;
 
     /**
      * 备注
      */
     @ApiModelProperty(value = "备注", required = true)
-    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
     private String remarks;
 
 

+ 49 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GPatrolRecordPhotoVo.java

@@ -0,0 +1,49 @@
+package com.ruoyi.gas.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 巡查记录照片视图对象 g_patrol_record_photo
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@ApiModel("巡查记录照片视图对象")
+@ExcelIgnoreUnannotated
+public class GPatrolRecordPhotoVo {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+	@ExcelProperty(value = "主键id")
+	@ApiModelProperty("主键id")
+	private Long id;
+
+    /**
+     * 巡查记录id
+     */
+	@ExcelProperty(value = "巡查记录id")
+	@ApiModelProperty("巡查记录id")
+	private Long patrolRecordId;
+
+    /**
+     * 照片
+     */
+	@ExcelProperty(value = "照片")
+	@ApiModelProperty("照片")
+	private String picUrl;
+
+
+}

+ 58 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GPatrolRecordVo.java

@@ -0,0 +1,58 @@
+package com.ruoyi.gas.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 巡查记录视图对象 g_patrol_record
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Data
+@ApiModel("巡查记录视图对象")
+@ExcelIgnoreUnannotated
+public class GPatrolRecordVo {
+
+	private static final long serialVersionUID = 1L;
+
+	private List<String> photoList;
+    /**
+     * 主键id
+     */
+	@ExcelProperty(value = "主键id")
+	@ApiModelProperty("主键id")
+	private Long id;
+
+    /**
+     * 巡查人员id
+     */
+	@ExcelProperty(value = "巡查人员id")
+	@ApiModelProperty("巡查人员id")
+	private Long userId;
+	private String userName;
+
+    /**
+     * 警示桩id
+     */
+	@ExcelProperty(value = "警示桩id")
+	@ApiModelProperty("警示桩id")
+	private Long warningPileId;
+	private String warningPileName;
+
+    /**
+     * 创建时间
+     */
+	@ExcelProperty(value = "创建时间")
+	@ApiModelProperty("创建时间")
+	private Date createTime;
+
+
+}

+ 22 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GPatrolRecordMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.gas.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.gas.domain.GPatrolRecord;
+import com.ruoyi.gas.domain.bo.GPatrolRecordBo;
+import com.ruoyi.gas.domain.vo.GPatrolRecordVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 巡查记录Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface GPatrolRecordMapper extends BaseMapperPlus<GPatrolRecord> {
+    Page<GPatrolRecordVo> getList(@Param("p") GPatrolRecordBo bo, Page<?> page);
+    List<String> getPhoto(Long id);
+
+}

+ 18 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GPatrolRecordPhotoMapper.java

@@ -0,0 +1,18 @@
+package com.ruoyi.gas.mapper;
+
+import com.ruoyi.gas.domain.GPatrolRecordPhoto;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 巡查记录照片Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface GPatrolRecordPhotoMapper extends BaseMapperPlus<GPatrolRecordPhoto> {
+    int deleteByUrl(@Param("patrolRecordId") Long patrolRecordId, @Param("list") List<String> list);
+
+}

+ 3 - 1
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPileMapper.java

@@ -1,7 +1,8 @@
 package com.ruoyi.gas.mapper;
 
-import com.ruoyi.gas.domain.GWarningPile;
 import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.gas.domain.GWarningPile;
+import com.ruoyi.gas.domain.vo.GWarningPileVo;
 
 import java.util.List;
 
@@ -13,5 +14,6 @@ import java.util.List;
  */
 public interface GWarningPileMapper extends BaseMapperPlus<GWarningPile> {
     List<String> getPhoto(Long id);
+    List<GWarningPileVo>  getWarningPile();
 
 }

+ 60 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGPatrolRecordPhotoService.java

@@ -0,0 +1,60 @@
+package com.ruoyi.gas.service;
+
+import com.ruoyi.gas.domain.GPatrolRecordPhoto;
+import com.ruoyi.gas.domain.vo.GPatrolRecordPhotoVo;
+import com.ruoyi.gas.domain.bo.GPatrolRecordPhotoBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 巡查记录照片Service接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface IGPatrolRecordPhotoService extends IServicePlus<GPatrolRecordPhoto, GPatrolRecordPhotoVo> {
+
+	void deleteByUrl(Long patrolRecordId, List<String> list);
+
+
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	GPatrolRecordPhotoVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<GPatrolRecordPhotoVo> queryPageList(GPatrolRecordPhotoBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<GPatrolRecordPhotoVo> queryList(GPatrolRecordPhotoBo bo);
+
+	/**
+	 * 根据新增业务对象插入巡查记录照片
+	 * @param bo 巡查记录照片新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(GPatrolRecordPhotoBo bo);
+
+	/**
+	 * 根据编辑业务对象修改巡查记录照片
+	 * @param bo 巡查记录照片编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(GPatrolRecordPhotoBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 56 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGPatrolRecordService.java

@@ -0,0 +1,56 @@
+package com.ruoyi.gas.service;
+
+import com.ruoyi.gas.domain.GPatrolRecord;
+import com.ruoyi.gas.domain.vo.GPatrolRecordVo;
+import com.ruoyi.gas.domain.bo.GPatrolRecordBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 巡查记录Service接口
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+public interface IGPatrolRecordService extends IServicePlus<GPatrolRecord, GPatrolRecordVo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	GPatrolRecordVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<GPatrolRecordVo> queryPageList(GPatrolRecordBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<GPatrolRecordVo> queryList(GPatrolRecordBo bo);
+
+	/**
+	 * 根据新增业务对象插入巡查记录
+	 * @param bo 巡查记录新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(GPatrolRecordBo bo);
+
+	/**
+	 * 根据编辑业务对象修改巡查记录
+	 * @param bo 巡查记录编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(GPatrolRecordBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 6 - 3
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGWarningPileService.java

@@ -1,10 +1,10 @@
 package com.ruoyi.gas.service;
 
-import com.ruoyi.gas.domain.GWarningPile;
-import com.ruoyi.gas.domain.vo.GWarningPileVo;
-import com.ruoyi.gas.domain.bo.GWarningPileBo;
 import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.gas.domain.GWarningPile;
+import com.ruoyi.gas.domain.bo.GWarningPileBo;
+import com.ruoyi.gas.domain.vo.GWarningPileVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -16,6 +16,9 @@ import java.util.List;
  * @date 2023-10-26
  */
 public interface IGWarningPileService extends IServicePlus<GWarningPile, GWarningPileVo> {
+
+	List<GWarningPileVo>  getWarningPile();
+
 	/**
 	 * 查询单个
 	 * @return

+ 93 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GPatrolRecordPhotoServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.gas.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.gas.domain.bo.GPatrolRecordPhotoBo;
+import com.ruoyi.gas.domain.vo.GPatrolRecordPhotoVo;
+import com.ruoyi.gas.domain.GPatrolRecordPhoto;
+import com.ruoyi.gas.mapper.GPatrolRecordPhotoMapper;
+import com.ruoyi.gas.service.IGPatrolRecordPhotoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 巡查记录照片Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Service
+public class GPatrolRecordPhotoServiceImpl extends ServicePlusImpl<GPatrolRecordPhotoMapper, GPatrolRecordPhoto, GPatrolRecordPhotoVo> implements IGPatrolRecordPhotoService {
+    @Override
+    public void deleteByUrl(Long patrolRecordId, List<String> list) {
+        baseMapper.deleteByUrl(patrolRecordId, list);
+    }
+
+    @Override
+    public GPatrolRecordPhotoVo queryById(Long id) {
+        return getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<GPatrolRecordPhotoVo> queryPageList(GPatrolRecordPhotoBo bo) {
+        PagePlus<GPatrolRecordPhoto, GPatrolRecordPhotoVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<GPatrolRecordPhotoVo> queryList(GPatrolRecordPhotoBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<GPatrolRecordPhoto> buildQueryWrapper(GPatrolRecordPhotoBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GPatrolRecordPhoto> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getPatrolRecordId() != null, GPatrolRecordPhoto::getPatrolRecordId, bo.getPatrolRecordId());
+        lqw.eq(StringUtils.isNotBlank(bo.getPicUrl()), GPatrolRecordPhoto::getPicUrl, bo.getPicUrl());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(GPatrolRecordPhotoBo bo) {
+        GPatrolRecordPhoto add = BeanUtil.toBean(bo, GPatrolRecordPhoto.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(GPatrolRecordPhotoBo bo) {
+        GPatrolRecordPhoto update = BeanUtil.toBean(bo, GPatrolRecordPhoto.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GPatrolRecordPhoto entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return removeByIds(ids);
+    }
+}

+ 146 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GPatrolRecordServiceImpl.java

@@ -0,0 +1,146 @@
+package com.ruoyi.gas.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.gas.domain.GPatrolRecord;
+import com.ruoyi.gas.domain.bo.GPatrolRecordBo;
+import com.ruoyi.gas.domain.bo.GPatrolRecordPhotoBo;
+import com.ruoyi.gas.domain.vo.GPatrolRecordVo;
+import com.ruoyi.gas.mapper.GPatrolRecordMapper;
+import com.ruoyi.gas.service.IGPatrolRecordPhotoService;
+import com.ruoyi.gas.service.IGPatrolRecordService;
+import com.ruoyi.gas.service.IGUserService;
+import com.ruoyi.gas.service.IGWarningPileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 巡查记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-11-15
+ */
+@Service
+public class GPatrolRecordServiceImpl extends ServicePlusImpl<GPatrolRecordMapper, GPatrolRecord, GPatrolRecordVo> implements IGPatrolRecordService {
+
+    @Override
+    public GPatrolRecordVo queryById(Long id) {
+        GPatrolRecordVo voById = getVoById(id);
+        voById.setPhotoList(baseMapper.getPhoto(voById.getId()));
+        return voById;
+    }
+
+    @Autowired
+    private IGUserService igUserService;
+    @Autowired
+    private IGWarningPileService igWarningPileService;
+
+    @Override
+    public TableDataInfo<GPatrolRecordVo> queryPageList(GPatrolRecordBo bo) {
+        Page<GPatrolRecordVo> page = new Page<>(bo.getPageNum(), bo.getPageSize());
+        Page<GPatrolRecordVo> list = baseMapper.getList(bo, page);
+        list.getRecords().forEach(item -> {
+            item.setPhotoList(baseMapper.getPhoto(item.getId()));
+            item.setUserName(igUserService.getVoById(item.getUserId()).getName());
+            item.setWarningPileName(igWarningPileService.getVoById(item.getWarningPileId()).getName());
+        });
+        return PageUtils.buildDataInfo(list);
+    }
+
+    @Override
+    public List<GPatrolRecordVo> queryList(GPatrolRecordBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<GPatrolRecord> buildQueryWrapper(GPatrolRecordBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GPatrolRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, GPatrolRecord::getUserId, bo.getUserId());
+        lqw.eq(bo.getWarningPileId() != null, GPatrolRecord::getWarningPileId, bo.getWarningPileId());
+        lqw.eq(bo.getCreateTime() != null, GPatrolRecord::getCreateTime, bo.getCreateTime());
+        return lqw;
+    }
+
+    @Autowired
+    private IGPatrolRecordPhotoService igPatrolRecordPhotoService;
+
+    @Override
+    public Boolean insertByBo(GPatrolRecordBo bo) {
+        GPatrolRecord add = BeanUtil.toBean(bo, GPatrolRecord.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+            //添加照片
+            List<String> piclist = bo.getPhotoList();
+            if (piclist != null) {
+                for (int i = 0; i < bo.getPhotoList().size(); i++) {
+                    GPatrolRecordPhotoBo photo = new GPatrolRecordPhotoBo();
+                    photo.setPatrolRecordId(bo.getId());
+                    photo.setPicUrl(bo.getPhotoList().get(i));
+                    igPatrolRecordPhotoService.insertByBo(photo);
+                }
+            }
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(GPatrolRecordBo bo) {
+        GPatrolRecord update = BeanUtil.toBean(bo, GPatrolRecord.class);
+        validEntityBeforeSave(update);
+        List<String> piclist = bo.getPhotoList();
+        if (piclist != null) {
+            //原有的照片
+            List<String> photolist = baseMapper.getPhoto(bo.getId());
+            //原有的照片不在新传的照片里
+            List<String> dellist = photolist.stream().filter(i -> !piclist.contains(i)).collect(Collectors.toList());
+            //删除照片
+            if (dellist.size() > 0) {
+                igPatrolRecordPhotoService.deleteByUrl(bo.getId(), dellist);
+            }
+            //新传的照片不在原有的照片里
+            List<String> inslist = piclist.stream().filter(i -> !photolist.contains(i)).collect(Collectors.toList());
+            if (inslist.size() > 0) {
+                for (int i = 0; i < inslist.size(); i++) {
+                    if (StringUtils.isNotEmpty(inslist.get(i))) {
+                        //添加照片
+                        GPatrolRecordPhotoBo photo = new GPatrolRecordPhotoBo();
+                        photo.setPatrolRecordId(bo.getId());
+                        photo.setPicUrl(inslist.get(i));
+                        igPatrolRecordPhotoService.insertByBo(photo);
+                    }
+                }
+            }
+        }
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GPatrolRecord entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return removeByIds(ids);
+    }
+}

+ 5 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPileServiceImpl.java

@@ -36,6 +36,11 @@ public class GWarningPileServiceImpl extends ServicePlusImpl<GWarningPileMapper,
     private IGWarningPilePhotoService igWarningPilePhotoService;
 
     @Override
+    public List<GWarningPileVo> getWarningPile() {
+        return baseMapper.getWarningPile();
+    }
+
+    @Override
     public GWarningPileVo queryById(Long id){
         GWarningPileVo voById = getVoById(id);
         voById.setPhotoList(baseMapper.getPhoto(voById.getId()));

+ 45 - 0
ruoyi-gas/src/main/resources/mapper/GPatrolRecordMapper.xml

@@ -0,0 +1,45 @@
+<?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.gas.mapper.GPatrolRecordMapper">
+
+    <resultMap type="com.ruoyi.gas.domain.GPatrolRecord" id="GPatrolRecordResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="warningPileId" column="warning_pile_id"/>
+        <result property="remarks" column="remarks"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+    <select id="getPhoto" resultType="java.lang.String">
+        select pic_url AS picUrl
+        from g_patrol_record_photo
+        where patrol_record_id = #{id}
+          and del_flag = '0'
+    </select>
+    <select id="getList" resultType="com.ruoyi.gas.domain.vo.GPatrolRecordVo">
+        select a.*,
+        b.name AS warningPileName,
+        c.name AS userName
+        from g_patrol_record a
+        left join g_warning_pile b on a.warning_pile_id = b.id and b.del_flag = '0'
+        left join g_user c on b.user_id = c.id and c.del_flag = '0'
+        <where>
+            a.del_flag = '0'
+            <if test="p.warningPileId != null  and p.warningPileId != ''">
+                and a.warning_pile_id = #{p.warningPileId}
+            </if>
+            <if test="p.userId != null  and p.userId != ''">
+                and a.user_id = #{p.userId}
+            </if>
+            <if test="p.createTime != null  and p.createTime != ''">
+                and a.create_time = #{p.createTime}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 26 - 0
ruoyi-gas/src/main/resources/mapper/GPatrolRecordPhotoMapper.xml

@@ -0,0 +1,26 @@
+<?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.gas.mapper.GPatrolRecordPhotoMapper">
+
+    <resultMap type="com.ruoyi.gas.domain.GPatrolRecordPhoto" id="GPatrolRecordPhotoResult">
+        <result property="id" column="id"/>
+        <result property="patrolRecordId" column="patrol_record_id"/>
+        <result property="picUrl" column="pic_url"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <delete id="deleteByUrl" parameterType="String">
+        delete from g_patrol_record_photo where patrol_record_id = #{patrolRecordId}
+        and pic_url in
+        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>

+ 6 - 1
ruoyi-gas/src/main/resources/mapper/GWarningPileMapper.xml

@@ -24,5 +24,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where warning_pile_id = #{id}
           and del_flag = '0'
     </select>
-
+    <select id="getWarningPile" resultType="com.ruoyi.gas.domain.vo.GWarningPileVo">
+        select id   as id,
+               name as name
+        from g_warning_pile
+        where del_flag = '0'
+    </select>
 </mapper>