Browse Source

Merge branch 'refs/heads/feature-v1.5.0' into release-sy-v1.0.0

master_tdsql
hxh 9 months ago
parent
commit
e180f6fb7b
  1. 15
      shuili-system/src/main/java/com/kms/yg/sz/mapper/BsSgcSzFzrMapper.java
  2. 41
      shuili-system/src/main/java/com/kms/yg/sz/mapper/BsSgcSzSafeJbxxMapper.java
  3. 4
      shuili-system/src/main/java/com/kms/yxgh/common/dto/DocDto.java
  4. 2
      shuili-system/src/main/java/com/kms/yxgh/df/controller/DfCheckingLineController.java
  5. 2
      shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java
  6. 6
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfCheckingLineExportDto.java
  7. 4
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfRecordDetailExportDto.java
  8. 2
      shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfSuperviseWayProjectItemMapper.java
  9. 1
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfPlanService.java
  10. 2
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfSuperviseTaskService.java
  11. 93
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzCheckingLineController.java
  12. 47
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzPlanController.java
  13. 6
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzProjectController.java
  14. 38
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzRecordController.java
  15. 66
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzCheckingLine.java
  16. 61
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzCheckingPlanContent.java
  17. 24
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzPlan.java
  18. 8
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzPlanOperator.java
  19. 69
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzRecord.java
  20. 35
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzRecordItem.java
  21. 102
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineDto.java
  22. 36
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineExportDto.java
  23. 28
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineProjectListDto.java
  24. 36
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineSearchDto.java
  25. 78
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingPlanContentDto.java
  26. 33
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanDetailDto.java
  27. 29
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanSearchDto.java
  28. 38
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanSimpleDto.java
  29. 116
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordDetailDto.java
  30. 78
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordDetailExportDto.java
  31. 41
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordSearchDto.java
  32. 96
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordSimpleDto.java
  33. 34
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzSubPlanSearchDto.java
  34. 77
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzSubPlanSimpleDto.java
  35. 3
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhPlanSearchDto.java
  36. 68
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzCheckingLineMapper.java
  37. 30
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzCheckingPlanContentMapper.java
  38. 103
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzPlanMapper.java
  39. 8
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzPlanOperatorMapper.java
  40. 60
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzRecordMapper.java
  41. 3
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhPlanMapper.java
  42. 148
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzCheckingLineService.java
  43. 13
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzCheckingPlanContentService.java
  44. 234
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzPlanService.java
  45. 11
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzProjectService.java
  46. 254
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzRecordService.java
  47. 2
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzSuperviseTaskService.java
  48. 77
      sql/sy/v1.4.0/全量脚本/menu.sql
  49. 20
      sql/sy/v1.4.0/增量脚本/v1.4.0-update.sql

15
shuili-system/src/main/java/com/kms/yg/sz/mapper/BsSgcSzFzrMapper.java

@ -2,7 +2,9 @@ package com.kms.yg.sz.mapper;
import com.kms.yg.sz.domain.BsSgcSzFzr;
import com.kms.yg.sz.domain.dto.PieDto;
import com.kms.yxgh.common.dto.DutyHolderDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -17,6 +19,19 @@ import java.util.List;
*/
@Repository
public interface BsSgcSzFzrMapper extends BaseMapper<BsSgcSzFzr> {
@Select({
"<script>",
"SELECT ",
"fzr.name, fzr.phone, fzr.person_responsible_type dutyHolderType",
"FROM bs_sgc_sz_fzr fzr ",
"where 1=1 ",
"<if test='wagaCode != null and wagaCode != \"\"'>",
"and fzr.waga_code = #{wagaCode} ",
"and fzr.type = 0 ",
"</if>",
"</script>"
})
List<DutyHolderDto> getByWagaCode(@Param("wagaCode") String wagaCode);
List<BsSgcSzFzr> getList(@Param("id") String id,
@Param("wageName") String wageName,

41
shuili-system/src/main/java/com/kms/yg/sz/mapper/BsSgcSzSafeJbxxMapper.java

@ -22,6 +22,9 @@ import java.util.List;
@Repository
public interface BsSgcSzSafeJbxxMapper extends BaseMapper<BsSgcSzSafeJbxx> {
@Select("SELECT * FROM att_waga_base WHERE waga_code = #{wagaCode} AND expr_date IS NULL")
BsSgcSzSafeJbxx getByWagaCode(@Param("wagaCode") String wagaCode);
List<PieDto> getPie(@Param("layer") Integer layer,
@Param("adcd") String adcd);
@ -117,4 +120,42 @@ public interface BsSgcSzSafeJbxxMapper extends BaseMapper<BsSgcSzSafeJbxx> {
})
IPage<SzYqStatisticsProjectListDto> getSzYqProjectStatisticsWithPage(Page<SzYqStatisticsProjectListDto> page, @Param("szProject") SzYqStatisticsProjectQueDto szProject);
@Select({
"<script>",
"SELECT ",
"df.id waga_id, df.waga_code waga_code, df.waga_name waga_name, df.waga_type waga_type ",
"FROM att_waga_base df ",
"where 1=1 ",
"and df.expr_date is null ",
"<if test='dto.wagaName != null and dto.wagaName != \"\"'>",
"and df.waga_name like concat('%', #{dto.wagaName}, '%') ",
"</if>",
"<if test='dto.wagaType != null and dto.wagaType != \"\"'>",
"and df.waga_type = #{dto.wagaType} ",
"</if>",
"<if test='dto.adcd != null and dto.adcd != \"\"'>",
"and df.adcd like concat(#{dto.adcd}, '%') ",
"</if>",
"and EXISTS (SELECT 1 FROM bs_sgc_sz_xslx line WHERE line.waga_code = df.waga_code ",
"<if test='dto.lineName != null and dto.lineName != \"\"'>",
"and line.name like concat('%', #{dto.lineName}, '%') ",
"</if>",
"<if test='dto.type != null and dto.type != \"\"'>",
"and line.type = #{dto.type} ",
"</if>",
"<if test='dto.dutyHolderType != null and dto.dutyHolderType != \"\"'>",
"and line.duty_holder_type = #{dto.dutyHolderType} ",
"</if> )",
"</script>"
})
@Results(value = {
@Result(property = "wagaCode", column = "waga_code"),
@Result(property = "dutyHolders", column = "waga_code",
javaType = List.class,
many = @Many(select = "com.kms.yg.sz.mapper.BsSgcSzFzrMapper.getByWagaCode"))
})
IPage<SzCheckingLineProjectListDto> getSzCheckingLineProjectListWithPage(Page<SzProjectListDto> page, @Param("dto") SzCheckingLineSearchDto dto);
}

4
shuili-system/src/main/java/com/kms/yxgh/common/dto/DocDto.java

@ -1,11 +1,15 @@
package com.kms.yxgh.common.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DocDto {
@ApiModelProperty(value = "图片")
private List<String> images;

2
shuili-system/src/main/java/com/kms/yxgh/df/controller/DfCheckingLineController.java

@ -83,7 +83,7 @@ public class DfCheckingLineController {
return Response.ok(dfCheckingLineService.deleteById(ids));
}
@Log(title = "防巡视路线导出", businessType = BusinessType.EXPORT)
@Log(title = "防巡视路线导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("内容记录导出")
public AjaxResult export(@RequestBody DfCheckingLineSearchDto searchDto) {

2
shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java

@ -91,7 +91,7 @@ public class DfRecordController {
return Response.ok(dfRecordService.deleteById(ids));
}
@Log(title = "防巡视路线导出", businessType = BusinessType.EXPORT)
@Log(title = "防巡视路线导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("内容记录导出")
public AjaxResult export(@RequestBody DfRecordSearchDto searchDto) {

6
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfCheckingLineExportDto.java

@ -11,13 +11,13 @@ import java.util.Date;
@ApiModel("堤防巡视检查路线导出")
public class DfCheckingLineExportDto {
@Excel(name = "防编码", sort = 3)
@Excel(name = "防编码", sort = 3)
@ApiModelProperty("堤防代码")
private String dikeCode;
@Excel(name = "防名称", sort = 1)
@Excel(name = "防名称", sort = 1)
@ApiModelProperty("堤防名称")
private String dikeName;
@Excel(name = "防类型", dictType = "embankment_type", sort = 2)
@Excel(name = "防类型", dictType = "embankment_type", sort = 2)
@ApiModelProperty("堤防类型")
private String dikeType;
@Excel(name = "巡查路线名称", sort = 4)

4
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfRecordDetailExportDto.java

@ -21,11 +21,11 @@ import java.util.Date;
public class DfRecordDetailExportDto {
@Excel(name = "防名称", sort = 1)
@Excel(name = "防名称", sort = 1)
@ApiModelProperty("堤防名称")
private String dikeName;
@Excel(name = "防类型", dictType = "embankment_type", sort = 2)
@Excel(name = "防类型", dictType = "embankment_type", sort = 2)
@ApiModelProperty("堤防类型")
private String dikeType;

2
shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfSuperviseWayProjectItemMapper.java

@ -10,7 +10,7 @@ import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 防监督检查项目内容Mapper接口
* 防监督检查项目内容Mapper接口
*
* @author hry
* @date 2024/2/29 14:44

1
shuili-system/src/main/java/com/kms/yxgh/df/service/DfPlanService.java

@ -21,7 +21,6 @@ import com.shuili.common.core.service.BaseService;
import com.shuili.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.data.util.Optionals;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

2
shuili-system/src/main/java/com/kms/yxgh/df/service/DfSuperviseTaskService.java

@ -42,7 +42,7 @@ public class DfSuperviseTaskService extends BaseService<DfSuperviseTaskMapper, D
public DfSuperviseTaskDto add(DfSuperviseTaskDto dto){
DfSuperviseTask superviseTask = BeanCopyUtils.copy(dto, DfSuperviseTask.class);
superviseTask.setId(null);
// 当选择多个提防名称时,生成多条监督检查任务,命名为设置的“检查名称-提防名称”。
// 当选择多个堤防名称时,生成多条监督检查任务,命名为设置的“检查名称-堤防名称”。
String[] dikeCodes = superviseTask.getDikeCode().split(",");
String[] dikeNames = dto.getDikeName().split(",");
for (int i = 0; i < dikeCodes.length; i++) {

93
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzCheckingLineController.java

@ -0,0 +1,93 @@
package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.AddGroup;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.base.UpdateGroup;
import com.kms.yxgh.sz.dto.SzCheckingLineDto;
import com.kms.yxgh.sz.dto.SzCheckingLineSearchDto;
import com.kms.yxgh.sz.service.SzCheckingLineService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 水闸巡视检查路线Controller
*
* @author sy
* @date 2023-11-09
*/
@RestController
@AllArgsConstructor
@RequestMapping("/run/sz/checking-line")
@Api(tags = "水闸巡视检查路线管理")
public class SzCheckingLineController {
private final SzCheckingLineService dfCheckingLineService;
/**
* 查询水闸巡视检查路线列表
*/
@PostMapping("/list")
@ApiOperation("水闸巡视检查路线列表")
public IPage<SzCheckingLineDto> list(@RequestBody SearchParam<SzCheckingLineSearchDto> sp) {
return dfCheckingLineService.search(sp);
}
/**
* 获取水闸巡视检查路线详细信息
*/
@ApiOperation("水闸巡视检查路线详情")
@GetMapping(value = "/{id}")
public Response<SzCheckingLineDto> getInfo(@PathVariable("id") String id) {
return Response.ok(dfCheckingLineService.getDetailById(id));
}
/**
* 新增水闸巡视检查路线
*/
@Log(title = "水闸巡视检查路线新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("水闸巡视检查路线新增")
public Response<SzCheckingLineDto> add(@Validated(AddGroup.class)
@RequestBody SzCheckingLineDto dfCheckingLineDto) {
return Response.ok(dfCheckingLineService.add(dfCheckingLineDto));
}
/**
* 修改水闸巡视检查路线
*/
@ApiOperation("水闸巡视检查路线修改")
@Log(title = "水闸巡视检查路线修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<SzCheckingLineDto> edit(@Validated(UpdateGroup.class)
@RequestBody SzCheckingLineDto dfCheckingLineDto) {
return Response.ok(dfCheckingLineService.update(dfCheckingLineDto));
}
/**
* 删除水闸巡视检查路线
*/
@ApiOperation("水闸巡视检查路线删除")
@Log(title = "水闸巡视检查路线删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public Response<Boolean> remove(@PathVariable("ids") String[] ids) {
return Response.ok(dfCheckingLineService.deleteById(ids));
}
@Log(title = "堤防巡视路线导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("内容记录导出")
public AjaxResult export(@RequestBody SzCheckingLineSearchDto searchDto) {
return dfCheckingLineService.export(searchDto.getIds());
}
}

47
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzPlanController.java

@ -2,10 +2,7 @@ package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.sz.domain.SzPlan;
import com.kms.yxgh.sz.dto.SzPlanDetailDto;
import com.kms.yxgh.sz.dto.SzPlanSimpleDto;
import com.kms.yxgh.sz.dto.SzPointDto;
import com.kms.yxgh.sz.dto.*;
import com.kms.yxgh.sz.service.SzPlanService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.domain.SearchParam;
@ -15,8 +12,6 @@ import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 水闸巡视检查计划Controller
@ -37,10 +32,18 @@ public class SzPlanController {
*/
@PostMapping("/list")
@ApiOperation("水闸巡视检查计划列表")
public IPage<SzPlanSimpleDto> list(@RequestBody SearchParam<SzPlan> sp) {
public IPage<SzPlanSimpleDto> list(@RequestBody SearchParam<SzPlanSearchDto> sp) {
return szPlanService.search(sp);
}
/**
* 查询水闸巡视检查子计划列表
*/
@PostMapping("/sub/list")
@ApiOperation("水闸巡视检查子计划列表")
public IPage<SzSubPlanSimpleDto> subList(@RequestBody SearchParam<SzSubPlanSearchDto> sp) {
return szPlanService.searchSub(sp);
}
/**
* 获取水闸巡视检查计划详细信息
@ -57,8 +60,8 @@ public class SzPlanController {
@Log(title = "水闸巡视检查计划新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("水闸巡视检查计划新增")
public Response<SzPlanDetailDto> add(@RequestBody SzPlanDetailDto SzPlan) {
return Response.ok(szPlanService.add(SzPlan));
public Response<SzPlanDetailDto> add(@RequestBody SzPlanDetailDto szPlan) {
return Response.ok(szPlanService.add(szPlan));
}
/**
@ -67,8 +70,8 @@ public class SzPlanController {
@ApiOperation("水闸巡视检查计划修改")
@Log(title = "水闸巡视检查计划修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<SzPlanDetailDto> edit(@RequestBody SzPlanDetailDto SzPlan) {
return Response.ok(szPlanService.update(SzPlan));
public Response<SzPlanDetailDto> edit(@RequestBody SzPlanDetailDto szPlan) {
return Response.ok(szPlanService.update(szPlan));
}
/**
@ -76,29 +79,15 @@ public class SzPlanController {
*/
@ApiOperation("水闸巡视检查计划删除")
@Log(title = "水闸巡视检查计划删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(szPlanService.deleteById(id));
@DeleteMapping("/{ids}")
public Response<Boolean> remove(@PathVariable("ids") String[] ids) {
return Response.ok(szPlanService.deleteById(ids));
}
@ApiOperation("水闸巡视检查计划巡查点设置")
@Log(title = "水闸巡视检查计划巡查点设置", businessType = BusinessType.UPDATE)
@PostMapping("/points/{id}")
public Response<Boolean> addPoints(@PathVariable("id") String id,
@RequestBody List<SzPointDto> points) {
return Response.ok(szPlanService.addPoints(id, points));
}
@ApiOperation("水闸巡视检查计划巡查点位数据")
@Log(title = "水闸巡视检查计划巡查点位数据", businessType = BusinessType.SEARCH)
@GetMapping("/points/{id}")
public Response<List<SzPointDto>> addPoints(@PathVariable("id") String id) {
return Response.ok(szPlanService.getPoints(id));
}
//当天已巡查
@ApiOperation("水闸巡视检查计划当天已巡查")
@Log(title = "水闸巡视检查计划当天已巡查", businessType = BusinessType.SEARCH)
@GetMapping("/today/{id}")
public Response<Boolean> today(@PathVariable("id") String id) {
return Response.ok(szPlanService.today(id));

6
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzProjectController.java

@ -3,6 +3,7 @@ package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yg.sz.domain.BsSgcSzSafeJbxx;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.df.dto.DfCheckingLineProjectListDto;
import com.kms.yxgh.sz.dto.*;
import com.kms.yxgh.sz.service.SzProjectService;
import com.shuili.common.core.domain.SearchParam;
@ -65,4 +66,9 @@ public class SzProjectController {
return Response.ok(szProjectService.getRelChecking(wagaCode));
}
@PostMapping("/checking-line")
@ApiOperation("检查项线路")
public IPage<SzCheckingLineProjectListDto> checkingLine(@RequestBody SearchParam<SzCheckingLineSearchDto> sp) {
return szProjectService.checkingLine(sp);
}
}

38
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzRecordController.java

@ -1,18 +1,21 @@
package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.AddGroup;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.sz.domain.SzRecord;
import com.kms.yxgh.sz.dto.StartPlan;
import com.kms.yxgh.base.UpdateGroup;
import com.kms.yxgh.sz.dto.SzRecordDetailDto;
import com.kms.yxgh.sz.dto.SzRecordSearchDto;
import com.kms.yxgh.sz.dto.SzRecordSimpleDto;
import com.kms.yxgh.sz.service.SzRecordService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -35,7 +38,7 @@ public class SzRecordController {
*/
@PostMapping("/list")
@ApiOperation("水闸巡视检查记录列表")
public IPage<SzRecordSearchDto> list(@RequestBody SearchParam<SzRecord> sp) {
public IPage<SzRecordSimpleDto> list(@RequestBody SearchParam<SzRecordSearchDto> sp) {
return szRecordService.search(sp);
}
@ -55,8 +58,9 @@ public class SzRecordController {
@Log(title = "水闸巡视检查记录新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("水闸巡视检查记录新增")
public Response<SzRecordDetailDto> add(@RequestBody StartPlan startPlan) {
return Response.ok(szRecordService.start(startPlan));
public Response<SzRecordDetailDto> add(@Validated(AddGroup.class)
@RequestBody SzRecordDetailDto dto) {
return Response.ok(szRecordService.add(dto));
}
/**
@ -65,8 +69,16 @@ public class SzRecordController {
@ApiOperation("水闸巡视检查记录修改")
@Log(title = "水闸巡视检查记录修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<SzRecordDetailDto> edit(@RequestBody SzRecordDetailDto SzRecord) {
return Response.ok(szRecordService.update(SzRecord));
public Response<SzRecordDetailDto> edit(@Validated(UpdateGroup.class)
@RequestBody SzRecordDetailDto szRecord) {
return Response.ok(szRecordService.update(szRecord));
}
@ApiOperation("水闸巡视检查记录结束巡查")
@Log(title = "水闸巡视检查记录结束巡查", businessType = BusinessType.UPDATE)
@PutMapping("/finish/{id}")
public Response<SzRecordDetailDto> finish(@PathVariable("id") String id) {
return Response.ok(szRecordService.finish(id));
}
/**
@ -74,9 +86,15 @@ public class SzRecordController {
*/
@ApiOperation("水闸巡视检查记录删除")
@Log(title = "水闸巡视检查记录删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(szRecordService.deleteById(id));
@DeleteMapping("/{ids}")
public Response<Boolean> remove(@PathVariable("ids") String[] ids) {
return Response.ok(szRecordService.deleteById(ids));
}
@Log(title = "堤防巡视路线导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("内容记录导出")
public AjaxResult export(@RequestBody SzRecordSearchDto searchDto) {
return szRecordService.export(searchDto.getIds());
}
}

66
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzCheckingLine.java

@ -0,0 +1,66 @@
package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 水闸巡视检查路线表 bs_sgc_sz_xslx
*
* @author sy
* @date 2024-01-04
*/
@TableName("bs_sgc_sz_xslx")
@Data
@ApiModel("水闸巡视检查路线表")
public class SzCheckingLine extends SyBaseEntity {
private static final long serialVersionUID = 1L;
/**
* 水闸代码
*/
@ApiModelProperty("水闸代码")
private String wagaCode;
/**
* 巡查名称
*/
@ApiModelProperty("巡查名称")
private String name;
/**
* 巡查路线类型
*/
@ApiModelProperty("巡查路线类型")
private String type;
/**
* 巡查责任人类型
*/
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
/**
* 巡查ID
*/
@ApiModelProperty("巡查ID")
private String xcId;
/**
* 巡查路线点位
*/
@ApiModelProperty("巡查路线点位")
private String points;
/**
* 状态
*/
@ApiModelProperty("状态")
private String status = "0";
}

61
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzCheckingPlanContent.java

@ -0,0 +1,61 @@
package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 水闸巡视检查计划详情表 bs_sgc_sz_xsjhxq
*
* @author sy
* @date 2024-01-04
*/
@TableName("bs_sgc_sz_xsjhxq")
@Data
@ApiModel("水闸巡视检查计划详情表")
public class SzCheckingPlanContent extends SyBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("计划ID")
private String planId;
/**
* 巡查路线ID
*/
@ApiModelProperty("巡查路线ID")
private String lineId;
@ApiModelProperty("名称")
private String name;
/**
* 计划开始时间
*/
@ApiModelProperty("计划开始时间")
private Date startDate;
/**
* 计划结束时间
*/
@ApiModelProperty("计划结束时间")
private Date endDate;
/**
* 巡查范围
*/
@ApiModelProperty("巡查范围")
private String scope;
/**
* 状态
*/
@ApiModelProperty("状态")
private String status;
}

24
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzPlan.java

@ -34,6 +34,12 @@ public class SzPlan extends SyBaseEntity {
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
/**
* 名称
*/
@ -68,6 +74,12 @@ public class SzPlan extends SyBaseEntity {
@ApiModelProperty("是否提醒")
private Boolean isReminder;
/**
* 状态
*/
@ApiModelProperty("状态")
private String status;
/**
* 提醒时间
*/
@ -85,4 +97,16 @@ public class SzPlan extends SyBaseEntity {
private String files;
/**
* 计划开始时间
*/
@ApiModelProperty("计划开始时间")
private Date startDate;
/**
* 计划结束时间
*/
@ApiModelProperty("计划结束时间")
private Date endDate;
}

8
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzPlanOperator.java

@ -2,7 +2,6 @@ package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import com.shuili.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -24,23 +23,22 @@ public class SzPlanOperator extends SyBaseEntity {
/**
* 巡查计划ID
*/
@Excel(name = "巡查计划ID")
@ApiModelProperty("巡查计划ID")
private String planId;
private String subPlanId;
/**
* 执行人
*/
@Excel(name = "执行人")
@ApiModelProperty("执行人")
private String operatorUid;
/**
* 执行人
*/
@Excel(name = "执行人名称")
@ApiModelProperty("执行人名称")
private String operatorName;
}

69
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzRecord.java

@ -2,11 +2,12 @@ package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import com.shuili.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 水闸巡视检查记录对象 bs_sgc_sz_xsjhjl
@ -21,29 +22,65 @@ public class SzRecord extends SyBaseEntity {
private static final long serialVersionUID = 1L;
/**
* 巡查计划ID
*/
@Excel(name = "巡查计划ID")
private String name;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("水闸码")
@ApiModelProperty("水闸码")
private String wagaCode;
/**
* 巡查记录名称
*/
@Excel(name = "巡查记录名称")
@ApiModelProperty("巡查记录名称")
private String name;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
/**
* 状态
*/
@Excel(name = "状态")
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("处置状态")
private String handleStatus;
@ApiModelProperty("计划名称")
private String planName;
@ApiModelProperty("子计划ID")
private String subPlanId;
@ApiModelProperty("子计划名称")
private String subPlanName;
@ApiModelProperty("子项开始时间")
private Date subPlanStartDate;
@ApiModelProperty("子项结束时间")
private Date subPlanEndDate;
@ApiModelProperty("巡查路线ID")
private String lineId;
@ApiModelProperty("路线名称")
private String lineName;
@ApiModelProperty("路线类型")
private String lineType;
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@ApiModelProperty("记录开始时间")
private Date startDate;
@ApiModelProperty("记录结束时间")
private Date endDate;
@ApiModelProperty("巡查范围")
private String scope;
@ApiModelProperty("剩余巡查项")
private Long remaining;
public String getName() {
return this.lineName;
}
}

35
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzRecordItem.java

@ -1,11 +1,18 @@
package com.kms.yxgh.sz.domain;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import com.kms.yxgh.df.dto.VoiceDto;
import com.shuili.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
@ -56,4 +63,32 @@ public class SzRecordItem extends SyBaseEntity {
@ApiModelProperty("存在问题")
private String problem;
@ApiModelProperty("文件档案")
private String doc;
@ApiModelProperty("处置内容")
private String handleContent;
@ApiModelProperty("处置时间")
private Date handleTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Doc {
private List<String> problemImages;
private List<String> handleImages;
private List<VoiceDto> problemVoices;
}
public void setDoc(List<String> problemImages, List<String> handleImages, List<VoiceDto> problemVoices) {
this.doc = JSON.toJSONString(new Doc(problemImages, handleImages, problemVoices));
}
public Doc getDocObj() {
return JSON.parseObject(doc, Doc.class);
}
}

102
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineDto.java

@ -0,0 +1,102 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.base.AddGroup;
import com.kms.yxgh.base.UpdateGroup;
import com.kms.yxgh.common.dto.DutyHolderDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* 水闸巡视检查路线详情
*
* @author sy
* @date 2024-01-04
*/
@Data
@ApiModel("水闸巡视检查路线表")
public class SzCheckingLineDto {
@NotBlank(message = "水闸巡视检查路线表ID不能为空", groups = {UpdateGroup.class})
@ApiModelProperty("水闸巡视检查路线表ID")
private String id;
@ApiModelProperty("水闸ID")
private String wagaId;
/**
* 水闸代码
*/
@NotBlank(message = "水闸代码不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("责任人列表")
private List<DutyHolderDto> dutyHolders;
/**
* 巡查名称
*/
@NotBlank(message = "巡查名称不能为空", groups = {AddGroup.class, UpdateGroup.class})
@Size(max = 50, message = "巡查名称长度不能超过50个字符", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查名称")
private String name;
/**
* 巡查路线类型
*/
@NotBlank(message = "巡查路线类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查路线类型")
private String type;
/**
* 巡查责任人类型
*/
@NotBlank(message = "巡查责任人类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
/**
* 巡查ID
*/
@NotBlank(message = "巡查ID不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查ID")
private String xcId;
@ApiModelProperty("巡查详情")
private SzCheckingDetailDto checkingDetail;
/**
* 巡查路线点位
*/
@ApiModelProperty("巡查路线点位")
private String entries;
/**
* 状态
*/
@NotBlank(message = "状态不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("状态")
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("更新时间")
private Date updateTime;
}

36
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineExportDto.java

@ -0,0 +1,36 @@
package com.kms.yxgh.sz.dto;
import com.shuili.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("水闸巡视检查路线导出")
public class SzCheckingLineExportDto {
@Excel(name = "水闸编码", sort = 3)
@ApiModelProperty("水闸代码")
private String wagaCode;
@Excel(name = "水闸名称", sort = 1)
@ApiModelProperty("水闸名称")
private String wagaName;
@Excel(name = "水闸类型", dictType = "embankment_type", sort = 2)
@ApiModelProperty("水闸类型")
private String wagaType;
@Excel(name = "巡查路线名称", sort = 4)
@ApiModelProperty("巡查名称")
private String name;
@Excel(name = "巡查类型", dictType = "xs_classfy", sort = 5)
@ApiModelProperty("巡查路线类型")
private String type;
@Excel(name = "巡查责任人类型", sort = 6, dictType = "person_type")
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 7)
@ApiModelProperty("创建时间")
private Date createTime;
}

28
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineProjectListDto.java

@ -0,0 +1,28 @@
package com.kms.yxgh.sz.dto;
import com.kms.yxgh.common.dto.DutyHolderDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* SzCheckingLineProjectListDto类是一个数据传输对象用于表示水闸项目列表的信息
* 包含水闸编号水闸名称工程管理单位水务行政部门和最后巡查时间等属性
*/
@Data
public class SzCheckingLineProjectListDto {
@ApiModelProperty(value = "水闸ID")
private String wagaId;
@ApiModelProperty(value = "水闸编号")
private String wagaCode;
@ApiModelProperty(value = "水闸名称")
private String wagaName;
@ApiModelProperty(value = "水闸类型")
private String wagaType;
@ApiModelProperty("责任人列表")
private List<DutyHolderDto> dutyHolders;
}

36
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingLineSearchDto.java

@ -0,0 +1,36 @@
package com.kms.yxgh.sz.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("水闸巡视检查路线查询")
public class SzCheckingLineSearchDto {
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("巡查路线名称")
private String lineName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("行政区划")
private String adcd;
@ApiModelProperty("巡查路线类型")
private String type;
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@ApiModelProperty("路线ids")
private List<String> ids;
}

78
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzCheckingPlanContentDto.java

@ -0,0 +1,78 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.OperatorDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 水闸巡视检查计划内容 bs_sgc_sz_xsjhxq
*
* @author sy
* @date 2024-01-04
*/
@Data
@ApiModel("水闸巡视检查计划内容")
public class SzCheckingPlanContentDto {
@ApiModelProperty("主键")
private String id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("计划ID")
private String planId;
/**
* 巡查路线ID
*/
@ApiModelProperty("巡查路线ID")
private String lineId;
@ApiModelProperty("巡查路线名称")
private String lineName;
/**
* 计划开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("计划开始时间")
private Date startDate;
/**
* 计划结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("计划结束时间")
private Date endDate;
/**
* 巡查范围
*/
@ApiModelProperty("巡查范围")
private String scope;
/**
* 执行人
*/
@ApiModelProperty("执行人")
private List<OperatorDto> operator;
/**
* 状态
*/
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("备注")
private String remark;
}

33
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanDetailDto.java

@ -2,11 +2,11 @@ package com.kms.yxgh.sz.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.OperatorDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Size;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@ -28,6 +28,12 @@ public class SzPlanDetailDto {
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("名称")
private String name;
@ -50,12 +56,17 @@ public class SzPlanDetailDto {
@ApiModelProperty("提醒时间")
private Date reminderTime;
@ApiModelProperty("附加配置")
private JSONObject otherConfig;
@ApiModelProperty("计划可选配置")
private OptionConfig otherConfig;
@ApiModelProperty("执行人")
private List<OperatorDto> operators;
private String status = "1";
@Size(max = 50, message = "执行计划内容最多50个")
@ApiModelProperty("执行计划内容")
private List<SzCheckingPlanContentDto> contents;
@Size(max = 5, message = "检查依据文档最多5个")
@ApiModelProperty("检查依据文档")
private List<String> files = Collections.emptyList();
@ -65,5 +76,19 @@ public class SzPlanDetailDto {
return cycleType;
}
@Data
@ApiModel("计划可选配置")
public static class OptionConfig {
//每月哪天提醒
@ApiModelProperty("每月哪天提醒")
private List<Integer> reminderDays;
//每周哪天提醒
@ApiModelProperty("每周哪天提醒")
private List<Integer> reminderWeeks;
@ApiModelProperty("自定义可选配置")
private JSONObject options;
}
}

29
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanSearchDto.java

@ -0,0 +1,29 @@
package com.kms.yxgh.sz.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel(value = "水闸巡视检查计划查询")
public class SzPlanSearchDto {
@ApiModelProperty(value = "水闸编号")
private String wagaCode;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "记录状态")
private String recordStatus;
private String user;
@ApiModelProperty(value = "巡查人员id")
private List<String> userIds;
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
}

38
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzPlanSimpleDto.java

@ -15,10 +15,16 @@ import java.util.Date;
* @author: hxh
* @version: 1.0
*/
@ApiModel(value = "水闸巡查计划简单信息")
@ApiModel(value = "巡查计划简单信息")
@Data
public class SzPlanSimpleDto {
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("主键")
private String id;
@ -26,14 +32,24 @@ public class SzPlanSimpleDto {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("巡查ID")
private String xcId;
@ApiModelProperty("巡查计划类型")
private String planType;
@ApiModelProperty("巡查频次")
private String frequency;
@ApiModelProperty("子项数量")
private Integer itemCount;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("记录状态")
private String recordStatus;
@ApiModelProperty("记录id")
private String recordId;
@ApiModelProperty("巡查类型")
private String type;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("最后巡检时间")
private Date lastTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("最近修改时间")
private Date updateTime;
@ -41,4 +57,10 @@ public class SzPlanSimpleDto {
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("创建id")
private String createUid;
@ApiModelProperty("创建名称")
private String createName;
}

116
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordDetailDto.java

@ -1,10 +1,17 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.base.AddGroup;
import com.kms.yxgh.base.UpdateGroup;
import com.kms.yxgh.df.dto.VoiceDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
@ -19,27 +26,101 @@ import java.util.List;
@ApiModel("水闸巡视检查记录详情")
public class SzRecordDetailDto {
@NotBlank(message = "巡查记录ID不能为空", groups = {UpdateGroup.class})
@ApiModelProperty("巡查记录")
private String id;
@NotBlank(message = "巡查计划ID不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("水闸ID")
@NotBlank(message = "水闸编码不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("巡查记录名称")
private String name;
@NotBlank(message = "水闸名称不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("巡查项")
private List<SzRecordItemDto> items;
@ApiModelProperty("隐患状态")
private String handleStatus;
@ApiModelProperty("计划名称")
private String planName;
@NotBlank(message = "子计划ID不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("子计划ID")
private String subPlanId;
@ApiModelProperty("子计划名称")
private String subPlanName;
@NotNull(message = "子项开始时间", groups = {AddGroup.class, UpdateGroup.class})
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项开始时间")
private Date subPlanStartDate;
@NotNull(message = "子项结束时间", groups = {AddGroup.class, UpdateGroup.class})
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项结束时间")
private Date subPlanEndDate;
@NotBlank(message = "巡查路线ID不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查路线ID")
private String lineId;
@ApiModelProperty("路线名称")
private String lineName;
@ApiModelProperty("巡查路线点位")
private String entries;
@NotBlank(message = "路线类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("路线类型")
private String lineType;
@NotBlank(message = "巡查责任人类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@NotNull(message = "巡查开始时间不能为空", groups = {AddGroup.class, UpdateGroup.class})
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("巡查开始时间")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("巡查结束时间")
private Date endDate;
@ApiModelProperty("巡查范围")
private String scope;
@ApiModelProperty("创建者")
private String createUid;
@ApiModelProperty("创建者名称")
private String createName;
@ApiModelProperty("所有巡查项目")
private Long allItem = 0L;
private Long remaining = 0L;
@ApiModelProperty("当前已巡查项")
public Long getCurrentItem() {
return allItem - remaining;
}
@ApiModelProperty("巡查项")
private List<SzRecordItemDto> items = Collections.emptyList();
@ApiModelProperty("依据文件")
private List<String> files = Collections.emptyList();
@Data
public static class SzRecordItemDto {
@ -58,5 +139,26 @@ public class SzRecordDetailDto {
@ApiModelProperty("存在问题")
private String problem;
@ApiModelProperty("问题图片")
private List<String> problemImages = Collections.emptyList();
@ApiModelProperty("问题语音")
private List<VoiceDto> problemVoices = Collections.emptyList();
@ApiModelProperty("处置内容")
private String handleContent;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("处置时间")
private Date handleTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("上传时间")
private Date createTime;
@ApiModelProperty("处置图片")
private List<String> handleImages = Collections.emptyList();
}
}

78
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordDetailExportDto.java

@ -0,0 +1,78 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.shuili.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @ClassName: DfRecordDetailDto
* @Description: TODO
* @Date: 2023/11/15 上午10:36 *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("水闸巡视检查记录详情导出")
public class SzRecordDetailExportDto {
@Excel(name = "水闸名称", sort = 1)
@ApiModelProperty("水闸名称")
private String wagaName;
@Excel(name = "水闸类型", dictType = "embankment_type", sort = 2)
@ApiModelProperty("水闸类型")
private String wagaType;
@Excel(name = "巡查计划名称", sort = 3)
@ApiModelProperty("计划名称")
private String planName;
@Excel(name = "巡查计划子项名称", sort = 4)
@ApiModelProperty("子计划名称")
private String subPlanName;
@Excel(name = "巡查计划开始时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 5)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项开始时间")
private Date subPlanStartDate;
@Excel(name = "巡查计划结束时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 6)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项结束时间")
private Date subPlanEndDate;
@Excel(name = "巡查人", sort = 7)
private String createName;
@Excel(name = "巡查时长", sort = 8)
@ApiModelProperty("巡查时长")
private String duration;
@Excel(name = "巡查开始时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 9)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("巡查开始时间")
private Date startDate;
@Excel(name = "巡查结束时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 10)
@ApiModelProperty("巡查结束时间")
private Date endDate;
@Excel(name = "隐患状态", sort = 11)
@ApiModelProperty("状态")
private String status;
public void initDuration() {
if (this.startDate != null && this.endDate != null) {
long diff = this.endDate.getTime() - this.startDate.getTime();
long hours = diff / (1000 * 60 * 60);
this.duration = hours + "";
}
}
}

41
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordSearchDto.java

@ -1,5 +1,6 @@
package com.kms.yxgh.sz.dto;
import com.kms.yxgh.common.dto.IAdcd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -9,30 +10,34 @@ import java.util.List;
/**
* @ClassName: SzRecordSearchDto
* @Description: TODO
* {@code @Date:} 2023/11/15 下午4:02 *
* @Date: 2024/5/30 下午2:29
* *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("水闸巡视检查记录检索详情")
public class SzRecordSearchDto {
@ApiModelProperty("巡查记录")
private String id;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("巡查记录名称")
private String name;
@Data
@ApiModel("水闸巡视检查记录检索条件")
public class SzRecordSearchDto implements IAdcd {
@ApiModelProperty("行政区划")
private String adcd;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("路线名称")
private String lineName;
@ApiModelProperty("路线类型")
private String lineType;
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("处置状态")
private String handleStatus;
@ApiModelProperty("异常部位")
private List<String> parts;
@ApiModelProperty("操作者")
private String operatorName;
@ApiModelProperty("巡查记录IDs")
private List<String> ids;
}

96
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzRecordSimpleDto.java

@ -0,0 +1,96 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.OperatorDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @ClassName: DfRecordSearchDto
* @Description: TODO
* @Date: 2023/11/15 下午4:02 *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("水闸巡视检查记录检索详情")
public class SzRecordSimpleDto {
@ApiModelProperty("主键")
private String id;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("计划类型")
private String planType;
@ApiModelProperty("巡查范围")
private String scope;
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("处置状态")
private String handleStatus;
@ApiModelProperty("计划名称")
private String planName;
@ApiModelProperty("子计划ID")
private String subPlanId;
@ApiModelProperty("子计划名称")
private String subPlanName;
@ApiModelProperty("巡查路线ID")
private String lineId;
@ApiModelProperty("路线名称")
private String lineName;
@ApiModelProperty("路线类型")
private String lineType;
@ApiModelProperty("巡查责任人类型")
private String dutyHolderType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("记录开始时间")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("记录结束时间")
private Date endDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项开始时间")
private Date subPlanStartDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子项结束时间")
private Date subPlanEndDate;
@ApiModelProperty("创建者")
private String createUid;
@ApiModelProperty("创建者名称")
private String createName;
@ApiModelProperty("计划执行人")
List<OperatorDto> operators;
}

34
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzSubPlanSearchDto.java

@ -0,0 +1,34 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "水闸巡视检查子计划查询")
public class SzSubPlanSearchDto {
@ApiModelProperty(value = "计划名称")
private String planName;
@ApiModelProperty("巡查计划类型")
private String planType;
@ApiModelProperty(value = "水闸编号")
private String wagaCode;
@ApiModelProperty(value = "记录状态")
private String recordStatus;
private String user;
@ApiModelProperty("路线类型")
private String lineType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "开始时间")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "结束时间")
private Date endTime;
@ApiModelProperty("是否开始")
private Boolean isStart;
}

77
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzSubPlanSimpleDto.java

@ -0,0 +1,77 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.OperatorDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @ClassName: DfPlanSimpleDto
* @Description: TODO
* @Date: 2024/1/23 下午3:26
* *
* @author: hxh
* @version: 1.0
*/
@ApiModel(value = "巡查子计划查询信息")
@Data
public class SzSubPlanSimpleDto {
@ApiModelProperty("水闸编码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("计划id")
private String planId;
@ApiModelProperty("计划名称")
private String planName;
@ApiModelProperty("巡查计划类型")
private String planType;
@ApiModelProperty("子计划id")
private String subPlanId;
@ApiModelProperty("子计划名称")
private String subPlanName;
@ApiModelProperty("路线类型")
private String lineType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子计划开始时间")
private Date subPlanStartDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("子计划结束时间")
private Date subPlanEndDate;
@ApiModelProperty("记录id")
private String recordId;
@ApiModelProperty("记录状态")
private String recordStatus;
@ApiModelProperty("记录隐患状态")
private String recordHandleStatus;
@ApiModelProperty("当前已巡查项")
private Long currentItem;
@ApiModelProperty("所有巡查项目")
private Long allItem;
/**
* 执行人
*/
@ApiModelProperty("执行人")
private List<OperatorDto> operator;
}

3
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhPlanSearchDto.java

@ -34,6 +34,9 @@ public class SzYhPlanSearchDto implements IAdcd {
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("工程规模")
private String engScal;
@ApiModelProperty("水闸id")
private String wagaId;

68
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzCheckingLineMapper.java

@ -0,0 +1,68 @@
package com.kms.yxgh.sz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.sz.domain.SzCheckingLine;
import com.kms.yxgh.sz.domain.SzPlan;
import com.kms.yxgh.sz.dto.SzCheckingLineDto;
import com.kms.yxgh.sz.dto.SzCheckingLineSearchDto;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 水闸巡视检查路线Mapper接口
*
* @author sy
* @date 2023-11-09
*/
@Repository
public interface SzCheckingLineMapper extends BaseMapper<SzCheckingLine> {
//根据条件查询水闸巡视检查路线
@Select({
"<script>",
"SELECT ",
"df.id waga_id,",
"line.waga_code waga_code, df.waga_name waga_name, df.waga_type waga_type, ",
"line.id id, line.name name, line.type type, line.duty_holder_type duty_holder_type, line.xc_id xc_id, line.status status, ",
"line.create_time create_time, line.update_time update_time ",
"FROM bs_sgc_sz_xslx line ",
"left join att_waga_base df on line.waga_code = df.waga_code and df.expr_date is null ",
"left join bs_sgc_sz_xs xc on line.xc_id = xc.id ",
"where 1=1 ",
"<if test='dto.wagaCode != null and dto.wagaCode != \"\"'>",
"and df.waga_code = #{dto.wagaCode} ",
"</if>",
"<if test='dto.wagaName != null and dto.wagaName != \"\"'>",
"and df.waga_name like concat('%', #{dto.wagaName}, '%') ",
"</if>",
"<if test='dto.wagaType != null and dto.wagaType != \"\"'>",
"and df.waga_type = #{dto.wagaType} ",
"</if>",
"<if test='dto.adcd != null and dto.adcd != \"\"'>",
"and df.adcd like concat(#{dto.adcd}, '%') ",
"</if>",
"<if test='dto.lineName != null and dto.lineName != \"\"'>",
"and line.name like concat('%', #{dto.lineName}, '%') ",
"</if>",
"<if test='dto.type != null and dto.type != \"\"'>",
"and line.type = #{dto.type} ",
"</if>",
"<if test='dto.dutyHolderType != null and dto.dutyHolderType != \"\"'>",
"and line.duty_holder_type = #{dto.dutyHolderType} ",
"</if>",
"order by line.update_time desc ",
"</script>"
})
@Results(value = {
@Result(property = "wagaCode", column = "waga_code"),
@Result(property = "dutyHolders", column = "waga_code",
javaType = List.class,
many = @Many(select = "com.kms.yg.sz.mapper.BsSgcSzFzrMapper.getByWagaCode"))
})
IPage<SzCheckingLineDto> search(Page<SzPlan> page, @Param("dto") SzCheckingLineSearchDto dto);
}

30
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzCheckingPlanContentMapper.java

@ -0,0 +1,30 @@
package com.kms.yxgh.sz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kms.yxgh.sz.domain.SzCheckingPlanContent;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 水闸巡视检查计划详情Mapper接口
*
* @author sy
* @date 2023-11-09
*/
@Repository
public interface SzCheckingPlanContentMapper extends BaseMapper<SzCheckingPlanContent> {
@Insert({
"<script>",
"INSERT INTO bs_sgc_sz_xsjhxq (plan_id, line_id, name, start_date, end_date, scope, operator, status) VALUES ",
"<foreach collection='list' item='item' index='index' separator=','>",
"(#{item.planId}, #{item.lineId}, #{item.name}, #{item.startDate}, #{item.endDate}, #{item.scope}, #{item.operator}, #{item.status})",
"</foreach>",
"</script>"
})
void insertBatch(@Param("list") List<SzCheckingPlanContent> list);
}

103
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzPlanMapper.java

@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.sz.domain.SzPlan;
import com.kms.yxgh.sz.dto.SzPlanSearchDto;
import com.kms.yxgh.sz.dto.SzPlanSimpleDto;
import com.kms.yxgh.sz.dto.SzSubPlanSearchDto;
import com.kms.yxgh.sz.dto.SzSubPlanSimpleDto;
import com.shuili.common.utils.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.jdbc.SQL;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
@ -21,9 +24,103 @@ import java.util.Map;
*/
@Repository
public interface SzPlanMapper extends BaseMapper<SzPlan> {
@SelectProvider(type = SzPlanMapper.SzPlanSqlProvider.class, method = "selectByWagaCode")
@SelectProvider(type = SzPlanSqlProvider.class, method = "selectByWagaCode")
IPage<SzPlanSimpleDto> selectByWagaCode(Page<SzPlan> page, @Param("wagaCode") String wagaCode, @Param("planName") String planName);
@Select("<script>" +
"SELECT df.waga_name as waga_name, df.waga_code as waga_code, df.waga_type as waga_type, " +
"p.id, p.name, p.type plan_type, p.update_time as update_time, p.create_time as create_time, " +
"p.frequency, p.status, p.create_uid as createUid, " +
"(select count(1) from bs_sgc_sz_xsjhxq su where su.plan_id = p.id) as item_count ," +
"(select count(1) from bs_sgc_sz_xsjhjl r where p.id = r.plan_id and r.create_uid = #{dto.user} and r.status = '1' order by r.create_time desc limit 1) as record_status, " +
"(select id from bs_sgc_sz_xsjhjl r where p.id = r.plan_id and r.create_uid = #{dto.user} and r.status = '1' order by r.create_time desc limit 1) as record_id " +
"FROM bs_sgc_sz_xsjh p " +
"Left JOIN att_waga_base df ON p.waga_code = df.waga_code and df.expr_date is null " +
"WHERE 1=1 " +
"<if test='dto != null and dto.wagaCode != null and dto.wagaCode != \"\"'>" +
"AND p.waga_code = #{dto.wagaCode} " +
"</if>" +
"<if test='dto != null and dto.name != null and dto.name != \"\"'>" +
"AND p.name LIKE CONCAT('%', #{dto.name}, '%') " +
"</if>" +
"<if test='dto != null and dto.status != null and dto.status != \"\"'>" +
"AND p.status = #{dto.status} " +
"</if>" +
"<if test='dto != null and dto.startTime != null'>" +
"AND p.start_date &gt;= #{dto.startTime} " +
"</if>" +
"<if test='dto != null and dto.endTime != null'>" +
"AND p.end_date &lt;= #{dto.endTime} " +
"</if>" +
"<if test='dto != null and dto.recordStatus != null and dto.recordStatus == \"0\"'>" +
" and NOT EXISTS (" +
" SELECT plan_id FROM bs_sgc_sz_xsjhjl od WHERE p.id = od.plan_id and od.create_uid = #{dto.user} and od.status = '1'" +
") " +
"</if>" +
"<if test='dto != null and dto.recordStatus != null and dto.recordStatus == \"1\"'>" +
" and EXISTS (" +
" SELECT plan_id FROM bs_sgc_sz_xsjhjl od WHERE p.id = od.plan_id and od.create_uid = #{dto.user} and od.status = '1'" +
") " +
"</if>" +
"<if test='dto != null and dto.userIds != null and dto.userIds.size() > 0'>" +
"AND p.id in (select plan_id from bs_sgc_sz_xsjhzx where operator_uid in " +
"<foreach collection='dto.userIds' item='item' open='(' separator=',' close=')'> " +
"#{item} " +
"</foreach> " +
") " +
"</if>" +
"ORDER BY p.create_time DESC" +
"</script>")
IPage<SzPlanSimpleDto> search(Page<SzPlan> page, @Param("dto") SzPlanSearchDto searchDto);
@Select("<script>" +
"SELECT p.id as plan_id, sub.id as sub_plan_id, p.name as plan_name, p.type as plan_type, " +
"sub.name as sub_plan_name, " +
"p.waga_code as waga_code, p.waga_name as waga_name, p.waga_type as waga_type, " +
"sub.start_date as sub_plan_start_date, sub.end_date as sub_plan_end_date, lx.type as line_type, " +
"r.id record_id,r.status as record_status, r.handle_status as record_handle_status, r.update_time as last_time ," +
"(select count(1) from bs_sgc_sz_xsjhjlz z where z.record_id = r.id) as current_item, " +
"(select count(1) from bs_sgc_sz_xsx xs where xs.xc_id = lx.xc_id) as all_item " +
"FROM bs_sgc_sz_xsjhxq sub " +
"LEFT JOIN bs_sgc_sz_xsjh p ON sub.plan_id = p.id " +
"LEFT JOIN bs_sgc_sz_xsjhjl r ON r.sub_plan_id = sub.id and r.status = '0' " +
"LEFT JOIN bs_sgc_sz_xslx lx ON lx.id = sub.LINE_ID " +
"WHERE 1=1 " +
"<if test='searchDto != null and searchDto.wagaCode != null and searchDto.wagaCode != \"\"'>" +
"AND p.waga_code = #{searchDto.wagaCode} " +
"</if>" +
"<if test='searchDto != null and searchDto.planName != null and searchDto.planName != \"\"'>" +
"AND p.name LIKE CONCAT('%', #{searchDto.planName}, '%') " +
"</if>" +
"<if test='searchDto != null and searchDto.lineType != null and searchDto.lineType != \"\"'>" +
"AND lx.type = #{searchDto.lineType} " +
"</if>" +
"<if test='searchDto != null and searchDto.startTime != null'>" +
"AND sub.start_date &gt;= #{searchDto.startTime} " +
"</if>" +
"<if test='searchDto != null and searchDto.endTime != null'>" +
"AND sub.end_date &lt;= #{searchDto.endTime} " +
"</if>" +
"<if test='searchDto != null and searchDto.user != null and searchDto.user != \"\"'>" +
"AND exists (select 1 from bs_sgc_sz_xsjhzx zx where zx.operator_uid = #{searchDto.user}) " +
"</if>" +
"<if test='searchDto != null and searchDto.isStart != null and searchDto.isStart == true'>" +
"AND r.id is not null " +
"</if>" +
"<if test='searchDto != null and searchDto.isStart != null and searchDto.isStart == false'>" +
"AND r.id is null " +
"</if>" +
"ORDER BY last_time desc,sub.start_date " +
"</script>")
@Results({
@Result(property = "planType", column = "plan_type"),
@Result(property = "subPlanId", column = "sub_plan_id"),
@Result(property = "recordId", column = "record_id"),
@Result(property = "operator", column = "sub_plan_id", javaType = List.class, many = @Many(select = "com.kms.yxgh.sz.mapper.SzPlanOperatorMapper.selectOperatorBySubPlanId"))
})
IPage<SzSubPlanSimpleDto> subSearch(Page<SzPlan> page, @Param("searchDto") SzSubPlanSearchDto searchDto);
class SzPlanSqlProvider {
public String selectByWagaCode(final Map<String, Object> param) {
return new SQL() {{

8
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzPlanOperatorMapper.java

@ -1,9 +1,14 @@
package com.kms.yxgh.sz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.sz.domain.SzPlanOperator;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 水闸巡视检查计划执行人Mapper接口
*
@ -12,5 +17,6 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface SzPlanOperatorMapper extends BaseMapper<SzPlanOperator> {
@Select("SELECT id, operator_uid uid,operator_name name FROM bs_sgc_sz_xsjhzx WHERE sub_plan_id = #{subPlanId}")
List<OperatorDto> selectOperatorBySubPlanId(@Param("subPlanId") String subPlanId);
}

60
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzRecordMapper.java

@ -1,7 +1,10 @@
package com.kms.yxgh.sz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.sz.domain.SzRecord;
import com.kms.yxgh.sz.dto.SzRecordSearchDto;
import com.kms.yxgh.sz.dto.SzRecordSimpleDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@ -19,4 +22,61 @@ public interface SzRecordMapper extends BaseMapper<SzRecord> {
@Select("SELECT MAX(create_time) FROM bs_sgc_sz_xsjhjl WHERE waga_code = #{wagaCode} and plan_id = #{planId}")
Date getLastInsertTimeByWagaCodeAndPlanId(@Param("wagaCode") String wagaCode, @Param("planId") String planId);
@Select("<script>" +
"SELECT " +
"r.id, " +
"r.waga_code," +
"r.waga_name, " +
"r.waga_type, " +
"r.line_id, " +
"r.line_name, " +
"r.line_type, " +
"r.plan_id, " +
"r.plan_name, " +
"r.sub_plan_id, " +
"r.sub_plan_name, " +
"r.sub_plan_start_date, " +
"r.sub_plan_end_date, " +
"r.duty_holder_type, " +
"plan.type as plan_type, " +
"r.scope, " +
"r.status, " +
"r.handle_status, " +
"r.start_date, " +
"r.end_date, " +
"r.create_time, " +
"r.update_time, " +
"r.create_uid, " +
"r.update_uid " +
"FROM bs_sgc_sz_xsjhjl r " +
"LEFT JOIN att_waga_base df ON r.waga_code = df.waga_code and df.expr_date is null " +
"LEFT JOIN bs_sgc_sz_xsjh plan ON r.plan_id = plan.id " +
"where 1=1" +
"<if test='dto.wagaName != null and dto.wagaName != \"\"'> " +
"and r.waga_name like concat('%',#{dto.wagaName},'%') " +
"</if> " +
"<if test='dto.wagaType != null and dto.wagaType != \"\"'> " +
"and r.waga_type = #{dto.wagaType} " +
"</if> " +
"<if test='dto.lineName != null and dto.lineName != \"\"'> " +
"and r.line_name like concat('%',#{dto.lineName},'%') " +
"</if> " +
"<if test='dto.lineType != null and dto.lineType != \"\"'> " +
"and r.line_type = #{dto.lineType} " +
"</if> " +
"<if test='dto.dutyHolderType != null and dto.dutyHolderType != \"\"'> " +
"and r.duty_holder_type = #{dto.dutyHolderType} " +
"</if> " +
"<if test='dto.status != null and dto.status != \"\"'> " +
"and r.status = #{dto.status} " +
"</if> " +
"<if test='dto.handleStatus != null and dto.handleStatus != \"\"'> " +
"and r.handle_status = #{dto.handleStatus} " +
"</if> " +
"<if test='dto.adcdQx != null and dto.adcdQx != \"\"'> " +
"and df.adcd like concat(#{dto.adcdQx},'%') " +
"</if> " +
"order by r.end_date desc " +
"</script>")
IPage<SzRecordSimpleDto> search(IPage<SzRecord> page, @Param("dto") SzRecordSearchDto dto);
}

3
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhPlanMapper.java

@ -42,6 +42,9 @@ public interface SzYhPlanMapper extends BaseMapper<SzYhPlan> {
"<if test='dto.wagaCode != null and dto.wagaCode != \"\"'>",
"AND jd.waga_code = #{dto.wagaCode} ",
"</if>",
"<if test='dto.engScal != null and dto.engScal != \"\"'>",
"AND jb.eng_scal = #{dto.engScal} ",
"</if>",
"<if test='dto.name != null'>",
"AND yh.name LIKE CONCAT('%',#{dto.name},'%') ",
"</if>",

148
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzCheckingLineService.java

@ -0,0 +1,148 @@
package com.kms.yxgh.sz.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yg.sz.domain.BsSgcSzFzr;
import com.kms.yg.sz.domain.BsSgcSzSafeJbxx;
import com.kms.yg.sz.mapper.BsSgcSzFzrMapper;
import com.kms.yg.sz.mapper.BsSgcSzSafeJbxxMapper;
import com.kms.yxgh.base.SzException;
import com.kms.yxgh.common.dto.DutyHolderDto;
import com.kms.yxgh.sz.domain.SzCheckingLine;
import com.kms.yxgh.sz.domain.SzCheckingPlanContent;
import com.kms.yxgh.sz.domain.SzPlan;
import com.kms.yxgh.sz.dto.SzCheckingLineDto;
import com.kms.yxgh.sz.dto.SzCheckingLineExportDto;
import com.kms.yxgh.sz.dto.SzCheckingLineSearchDto;
import com.kms.yxgh.sz.mapper.SzCheckingLineMapper;
import com.kms.yxgh.sz.mapper.SzCheckingPlanContentMapper;
import com.kms.yxgh.util.BeanCopyUtils;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.utils.poi.ExcelUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 水闸巡视检查路线Service接口
*
* @author sy
* @date 2023-11-09
*/
@Service
@AllArgsConstructor
public class SzCheckingLineService extends BaseService<SzCheckingLineMapper, SzCheckingLine> {
private final SzCheckingPlanContentMapper szCheckingPlanContentMapper;
private final BsSgcSzFzrMapper szFzrMapper;
private final SzCheckingService szCheckingService;
private final BsSgcSzSafeJbxxMapper szSafeJbxxMapper;
public IPage<SzCheckingLineDto> search(SearchParam<SzCheckingLineSearchDto> sp) {
Page<SzPlan> page = new Page<>(sp.getPageNum(), sp.getPageSize());
SzCheckingLineSearchDto searchDto = Optional.ofNullable(sp.getData()).orElse(new SzCheckingLineSearchDto());
return this.baseMapper.search(page, searchDto);
}
public SzCheckingLineDto getDetailById(String id) {
SzCheckingLine checkingLine = this.getById(id);
SzCheckingLineDto dto = BeanCopyUtils.copy(checkingLine, SzCheckingLineDto.class);
if (dto != null) {
dto.setEntries(checkingLine.getPoints());
dto.setCheckingDetail(szCheckingService.getDetailById(dto.getXcId()));
BsSgcSzSafeJbxx sz = szSafeJbxxMapper.getByWagaCode(dto.getWagaCode());
if (sz != null) {
dto.setWagaName(sz.getWagaName());
dto.setWagaType(sz.getWagaType());
}
List<BsSgcSzFzr> fzrList = szFzrMapper.selectList(Wrappers.<BsSgcSzFzr>lambdaQuery().eq(BsSgcSzFzr::getWagaCode, dto.getWagaCode()));
dto.setDutyHolders(fzrList.stream().map(fzr -> {
DutyHolderDto dutyHolderDto = new DutyHolderDto();
dutyHolderDto.setName(fzr.getName());
dutyHolderDto.setPhone(fzr.getPhone());
dutyHolderDto.setDutyHolderType(fzr.getType());
return dutyHolderDto;
}).collect(Collectors.toList()));
}
return dto;
}
@Transactional(rollbackFor = Exception.class)
public SzCheckingLineDto add(SzCheckingLineDto dto) {
SzCheckingLine checkingLine = BeanCopyUtils.copy(dto, SzCheckingLine.class);
if (checkingLine != null) {
checkingLine.setId(null);
checkingLine.setPoints(dto.getEntries());
getBaseMapper().insert(checkingLine);
String id = checkingLine.getId();
return this.getDetailById(id);
}
return null;
}
@Transactional(rollbackFor = Exception.class)
public SzCheckingLineDto update(SzCheckingLineDto dto) {
if (exist(dto.getId())) {
SzCheckingLine checkingLine = BeanCopyUtils.copy(dto, SzCheckingLine.class);
if (checkingLine != null) {
checkingLine.setPoints(dto.getEntries());
getBaseMapper().updateById(checkingLine);
String id = checkingLine.getId();
return this.getDetailById(id);
}
}
throw new SzException("源数据不存在,请确认id值是否正确");
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String[] ids) {
if (ids.length == 1) {
if (isUsed(ids[0])) {
throw new SzException("该路线已被使用,无法删除");
}
}
return removeByIds(Arrays.asList(ids));
}
private boolean isUsed(String planId) {
Wrapper<SzCheckingPlanContent> wp = Wrappers.<SzCheckingPlanContent>lambdaQuery()
.eq(SzCheckingPlanContent::getLineId, planId);
return szCheckingPlanContentMapper.selectCount(wp) > 0;
}
private boolean exist(String id) {
Wrapper<SzCheckingLine> wp = Wrappers.<SzCheckingLine>lambdaQuery()
.eq(SzCheckingLine::getId, id);
return this.getBaseMapper().selectCount(wp) > 0;
}
public AjaxResult export(List<String> ids) {
List<SzCheckingLine> list = Optional.ofNullable(this.listByIds(ids)).orElse(Collections.emptyList());
ExcelUtil<SzCheckingLineExportDto> util = new ExcelUtil<>(SzCheckingLineExportDto.class);
return util.exportExcel(list.stream().map(line -> {
SzCheckingLineExportDto exportDto = BeanCopyUtils.copy(line, SzCheckingLineExportDto.class);
if (exportDto != null) {
BsSgcSzSafeJbxx sz = szSafeJbxxMapper.getByWagaCode(exportDto.getWagaCode());
if (sz != null) {
exportDto.setWagaName(sz.getWagaName());
exportDto.setWagaType(sz.getWagaType());
}
}
return exportDto;
}).collect(Collectors.toList()), "checking-line");
}
}

13
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzCheckingPlanContentService.java

@ -0,0 +1,13 @@
package com.kms.yxgh.sz.service;
import com.kms.yxgh.sz.domain.SzCheckingPlanContent;
import com.kms.yxgh.sz.mapper.SzCheckingPlanContentMapper;
import com.shuili.common.core.service.BaseService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class SzCheckingPlanContentService extends BaseService<SzCheckingPlanContentMapper, SzCheckingPlanContent> {
}

234
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzPlanService.java

@ -1,38 +1,35 @@
package com.kms.yxgh.sz.service;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.common.utils.UserUtils;
import com.kms.system.service.SysUserService;
import com.kms.yxgh.base.SzException;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.sz.domain.SzPlan;
import com.kms.yxgh.sz.domain.SzPlanOperator;
import com.kms.yxgh.sz.domain.SzPoint;
import com.kms.yxgh.sz.domain.SzRecord;
import com.kms.yxgh.sz.dto.SzPlanDetailDto;
import com.kms.yxgh.sz.dto.SzPlanSimpleDto;
import com.kms.yxgh.sz.dto.SzPointDto;
import com.kms.yxgh.sz.domain.*;
import com.kms.yxgh.sz.dto.*;
import com.kms.yxgh.sz.mapper.SzCheckingPlanContentMapper;
import com.kms.yxgh.sz.mapper.SzPlanMapper;
import com.kms.yxgh.sz.mapper.SzPlanOperatorMapper;
import com.kms.yxgh.sz.mapper.SzPointMapper;
import com.kms.yxgh.sz.mapper.SzRecordMapper;
import com.kms.yxgh.util.BeanCopyUtils;
import com.kms.yxgh.util.StreamUtils;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.function.Consumer;
import java.util.*;
import java.util.stream.Collectors;
import static com.alibaba.fastjson.JSON.toJSONString;
/**
* 水闸巡视检查计划Service接口
@ -44,42 +41,47 @@ import java.util.function.Consumer;
@AllArgsConstructor
public class SzPlanService extends BaseService<SzPlanMapper, SzPlan> {
private final SzPlanOperatorMapper SzPlanOperatorMapper;
private final SzRecordMapper szCheckRecordMapper;
private final SzPointMapper SzPointMapper;
private final SzRecordMapper szRecordMapper;
private final SzCheckingPlanContentService szCheckingPlanContentService;
private final SzCheckingLineService szCheckingLineService;
private final SzCheckingPlanContentMapper szCheckingPlanContentMapper;
private final SysUserService userService;
private final SzPlanOperatorService szPlanOperatorService;
public IPage<SzPlanSimpleDto> search(SearchParam<SzPlan> sp) {
public IPage<SzPlanSimpleDto> search(SearchParam<SzPlanSearchDto> sp) {
Page<SzPlan> page = new Page<>(sp.getPageNum(), sp.getPageSize());
String wagaCode = null;
String name = null;
SzPlan szPlan = sp.getData();
if (szPlan != null) {
wagaCode = szPlan.getWagaCode();
name = szPlan.getName();
SzPlanSearchDto searchDto = sp.getData();
SysUser user = UserUtils.getUser();
searchDto.setUser(Optional.ofNullable(user).map(SysUser::getId).orElse(null));
IPage<SzPlanSimpleDto> result = this.getBaseMapper().search(page, searchDto);
result.getRecords().forEach(item -> {
item.setCreateName(userService.userName(item.getCreateUid()));
});
return result;
}
return this.baseMapper.selectByWagaCode(page, wagaCode, name);
public IPage<SzSubPlanSimpleDto> searchSub(SearchParam<SzSubPlanSearchDto> sp) {
Page<SzPlan> page = new Page<>(sp.getPageNum(), sp.getPageSize());
SzSubPlanSearchDto searchDto = sp.getData();
SysUser user = UserUtils.getUser();
searchDto.setUser(Optional.ofNullable(user).map(SysUser::getId).orElse(null));
return this.getBaseMapper().subSearch(page, searchDto);
}
public SzPlanDetailDto getDetailById(String id) {
SzPlan szPlan = this.getById(id);
SzPlanDetailDto dto = BeanCopyUtils.copy(szPlan, SzPlanDetailDto.class);
if (dto != null) {
dto.setOtherConfig(JSON.parseObject(szPlan.getOtherConfig()));
List<SzPlanOperator> operators = Optional.ofNullable(szPlanOperatorService.list(Wrappers.<SzPlanOperator>lambdaQuery().in(SzPlanOperator::getPlanId, id))).orElse(Collections.emptyList());
Map<String, List<SzPlanOperator>> operatorMap = operators.stream().collect(Collectors.groupingBy(SzPlanOperator::getSubPlanId));
dto.setOtherConfig(JSON.parseObject(szPlan.getOtherConfig(), SzPlanDetailDto.OptionConfig.class));
dto.setContents(getContents(id).stream()
.map(item -> toDto(item, operatorMap))
.collect(Collectors.toList()));
if (StringUtils.isNotEmpty(szPlan.getFiles())) {
dto.setFiles(JSON.parseArray(szPlan.getFiles(), String.class));
}
Wrapper<SzPlanOperator> wp = Wrappers.<SzPlanOperator>lambdaQuery()
.select(SzPlanOperator::getId, SzPlanOperator::getOperatorUid,
SzPlanOperator::getOperatorName)
.eq(SzPlanOperator::getPlanId, id);
dto.setOperators(StreamUtils.toList(SzPlanOperatorMapper.selectList(wp), (o) -> {
OperatorDto itemDto = new OperatorDto();
itemDto.setId(o.getId());
itemDto.setUid(o.getOperatorUid());
itemDto.setName(o.getOperatorName());
return itemDto;
}));
}
return dto;
}
@ -91,13 +93,12 @@ public class SzPlanService extends BaseService<SzPlanMapper, SzPlan> {
if (szPlan != null) {
szPlan.setId(null);
if (checkNameDistinct(szPlan.getId(), szPlan.getName())) {
szPlan.setOtherConfig(JSON.toJSONString(dto.getOtherConfig()));
szPlan.setFiles(JSON.toJSONString(dto.getFiles()));
szPlan.setOtherConfig(toJSONString(dto.getOtherConfig()));
szPlan.setFiles(toJSONString(dto.getFiles()));
planeTime(szPlan, dto.getContents());
getBaseMapper().insert(szPlan);
String id = szPlan.getId();
if (CollectionUtil.isNotEmpty(dto.getOperators())) {
dto.getOperators().forEach(insertOperator(id));
}
saveOrUpdateContent(id, dto.getContents());
return this.getDetailById(id);
} else {
throw new SzException("该名称已存在");
@ -107,30 +108,18 @@ public class SzPlanService extends BaseService<SzPlanMapper, SzPlan> {
return null;
}
private Consumer<OperatorDto> insertOperator(String id) {
return (o) -> {
SzPlanOperator item = new SzPlanOperator();
item.setPlanId(id);
item.setOperatorName(o.getName());
item.setOperatorUid(o.getUid());
SzPlanOperatorMapper.insert(item);
};
}
@Transactional(rollbackFor = Exception.class)
public SzPlanDetailDto update(SzPlanDetailDto dto) {
if (exist(dto.getId())) {
SzPlan szPlan = BeanCopyUtils.copy(dto, SzPlan.class);
if (szPlan != null) {
if (checkNameDistinct(szPlan.getId(), szPlan.getName())) {
szPlan.setOtherConfig(JSON.toJSONString(dto.getOtherConfig()));
szPlan.setFiles(JSON.toJSONString(dto.getFiles()));
szPlan.setOtherConfig(toJSONString(dto.getOtherConfig()));
szPlan.setFiles(toJSONString(dto.getFiles()));
planeTime(szPlan, dto.getContents());
getBaseMapper().updateById(szPlan);
String id = szPlan.getId();
deleteItems(id);
if (CollectionUtil.isNotEmpty(dto.getOperators())) {
dto.getOperators().forEach(insertOperator(id));
}
saveOrUpdateContent(id, dto.getContents());
return this.getDetailById(id);
} else {
throw new SzException("该名称已存在");
@ -141,56 +130,43 @@ public class SzPlanService extends BaseService<SzPlanMapper, SzPlan> {
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
if (isUse(id)) {
public Boolean deleteById(String[] ids) {
if (ids.length == 1) {
if (isUsed(ids[0])) {
throw new SzException("该计划已被使用,无法删除");
}
boolean rt = removeById(id);
}
boolean rt = removeByIds(Arrays.asList(ids));
if (rt) {
deleteItems(id);
deleteItems(ids);
}
return rt;
}
private boolean isUse(String id) {
Wrapper<SzRecord> wp = Wrappers.<SzRecord>lambdaQuery()
.eq(SzRecord::getPlanId, id);
return szCheckRecordMapper.selectCount(wp) > 0;
}
@Transactional(rollbackFor = Exception.class)
public Boolean addPoints(String id, List<SzPointDto> points) {
Wrapper<SzPoint> wp = Wrappers.<SzPoint>lambdaQuery()
.eq(SzPoint::getPlanId, id);
SzPointMapper.delete(wp);
if (CollectionUtil.isNotEmpty(points)) {
points.forEach(po -> {
SzPoint point = BeanCopyUtils.copy(po, SzPoint.class);
if (point != null) {
point.setPlanId(id);
SzPointMapper.insert(point);
private void planeTime(SzPlan szPlan, List<SzCheckingPlanContentDto> contents) {
if (CollectionUtils.isEmpty(contents)) {
return;
}
});
}
return true;
szPlan.setStartDate(contents.stream().map(SzCheckingPlanContentDto::getStartDate).min(Date::compareTo).orElse(null));
szPlan.setEndDate(contents.stream().map(SzCheckingPlanContentDto::getEndDate).max(Date::compareTo).orElse(null));
}
public List<SzPointDto> getPoints(String id) {
Wrapper<SzPoint> wp = Wrappers.<SzPoint>lambdaQuery()
.eq(SzPoint::getPlanId, id);
return StreamUtils.toList(SzPointMapper.selectList(wp),
(o) -> BeanCopyUtils.copy(o, SzPointDto.class));
private void deleteItems(String[] planIds) {
Wrapper<SzCheckingPlanContent> wp = Wrappers.<SzCheckingPlanContent>lambdaQuery()
.in(SzCheckingPlanContent::getPlanId, Arrays.asList(planIds));
szCheckingPlanContentService.remove(wp);
szPlanOperatorService.remove(Wrappers.<SzPlanOperator>lambdaQuery().in(SzPlanOperator::getPlanId, Arrays.asList(planIds)));
}
private void deleteItems(String id) {
Wrapper<SzPlanOperator> wp = Wrappers.<SzPlanOperator>lambdaQuery()
.eq(SzPlanOperator::getPlanId, id);
SzPlanOperatorMapper.delete(wp);
private boolean isUsed(String planId) {
Wrapper<SzRecord> wp = Wrappers.<SzRecord>lambdaQuery()
.eq(SzRecord::getPlanId, planId);
return szRecordMapper.selectCount(wp) > 0;
}
private boolean checkNameDistinct(String id, String name) {
Wrapper<SzPlan> wp = Wrappers.<SzPlan>lambdaQuery()
.eq(SzPlan::getName, name)
@ -213,6 +189,76 @@ public class SzPlanService extends BaseService<SzPlanMapper, SzPlan> {
Wrapper<SzRecord> wp = Wrappers.<SzRecord>lambdaQuery()
.eq(SzRecord::getPlanId, id)
.eq(SzRecord::getCreateTime, getZeroTime());
return szCheckRecordMapper.selectCount(wp) > 0;
return szRecordMapper.selectCount(wp) > 0;
}
private void saveOrUpdateContent(String planId, List<SzCheckingPlanContentDto> contents) {
if (contents != null && !contents.isEmpty()) {
List<String> ides = contents.stream().map(SzCheckingPlanContentDto::getId).filter(StringUtils::isNotEmpty).collect(Collectors.toList());
List<SzCheckingPlanContent> oldContents = getContents(planId);
if (CollectionUtils.isNotEmpty(oldContents)) {
//获取删除的数据
List<String> deleteContents = oldContents.stream()
.map(SzCheckingPlanContent::getId)
.filter(id -> !ides.contains(id))
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(deleteContents)) {
szPlanOperatorService.remove(Wrappers.<SzPlanOperator>lambdaQuery().in(SzPlanOperator::getSubPlanId, deleteContents));
szCheckingPlanContentService.removeByIds(deleteContents);
}
}
contents.forEach(content -> {
content.setPlanId(planId);
SzCheckingPlanContent entity = toEntity(content);
if (entity.getId() == null) {
szCheckingPlanContentMapper.insert(entity);
} else {
szCheckingPlanContentMapper.updateById(entity);
}
String contentId = entity.getId();
List<SzPlanOperator> operators = content.getOperator().stream().map(operator -> {
SzPlanOperator po = new SzPlanOperator();
po.setId(operator.getId());
po.setSubPlanId(contentId);
po.setOperatorUid(operator.getUid());
po.setPlanId(planId);
po.setOperatorName(operator.getName());
return po;
}).collect(Collectors.toList());
szPlanOperatorService.saveOrUpdateBatch(operators);
});
} else {
throw new SzException("执行计划内容不能为空");
}
}
private SzCheckingPlanContent toEntity(SzCheckingPlanContentDto dto) {
return BeanCopyUtils.copy(dto, SzCheckingPlanContent.class);
}
private SzCheckingPlanContentDto toDto(SzCheckingPlanContent entity, Map<String, List<SzPlanOperator>> operatorMap) {
SzCheckingPlanContentDto dto = BeanCopyUtils.copy(entity, SzCheckingPlanContentDto.class);
if (dto != null) {
dto.setLineName(Optional.ofNullable(szCheckingLineService.getWithRedis(dto.getLineId())).map(SzCheckingLine::getName).orElse(""));
dto.setOperator(operatorMap.getOrDefault(dto.getId(), Collections.emptyList()).stream()
.map(item -> {
OperatorDto operatorDto = new OperatorDto();
operatorDto.setId(item.getId());
operatorDto.setUid(item.getOperatorUid());
operatorDto.setName(item.getOperatorName());
return operatorDto;
})
.collect(Collectors.toList()));
}
return dto;
}
private List<SzCheckingPlanContent> getContents(String planId) {
Wrapper<SzCheckingPlanContent> wp = Wrappers.<SzCheckingPlanContent>lambdaQuery()
.eq(SzCheckingPlanContent::getPlanId, planId);
return szCheckingPlanContentService.list(wp);
}
}

11
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzProjectService.java

@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yg.sz.domain.BsSgcSzSafeJbxx;
import com.kms.yg.sz.mapper.BsSgcSzSafeJbxxMapper;
import com.kms.yxgh.df.dto.DfCheckingLineProjectListDto;
import com.kms.yxgh.df.dto.DfCheckingLineSearchDto;
import com.kms.yxgh.df.dto.DfProjectListDto;
import com.kms.yxgh.sz.domain.SzChecking;
import com.kms.yxgh.sz.domain.SzProjectCheckingRel;
import com.kms.yxgh.sz.dto.*;
@ -103,4 +106,12 @@ public class SzProjectService {
SzYqStatisticsProjectQueDto szProject = Optional.ofNullable(sp.getData()).orElseGet(SzYqStatisticsProjectQueDto::new);
return bsSgcSzSafeJbxxMapper.getSzYqProjectStatisticsWithPage(page, szProject);
}
public IPage<SzCheckingLineProjectListDto> checkingLine(SearchParam<SzCheckingLineSearchDto> sp) {
Page<SzProjectListDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
SzCheckingLineSearchDto szProject = Optional.ofNullable(sp.getData()).orElseGet(SzCheckingLineSearchDto::new);
return bsSgcSzSafeJbxxMapper.getSzCheckingLineProjectListWithPage(page, szProject);
}
}

254
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzRecordService.java

@ -7,28 +7,32 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.system.service.SysUserService;
import com.kms.yxgh.base.SzException;
import com.kms.yxgh.base.enums.CheckingStatus;
import com.kms.yxgh.base.enums.RecordStatus;
import com.kms.yxgh.sz.domain.SzProjectCheckingRel;
import com.kms.yxgh.sz.domain.SzCheckingItem;
import com.kms.yxgh.sz.domain.SzCheckingLine;
import com.kms.yxgh.sz.domain.SzRecord;
import com.kms.yxgh.sz.domain.SzRecordItem;
import com.kms.yxgh.sz.dto.*;
import com.kms.yxgh.sz.dto.SzRecordDetailDto;
import com.kms.yxgh.sz.dto.SzRecordDetailDto.SzRecordItemDto;
import com.kms.yxgh.sz.mapper.SzProjectCheckingRelMapper;
import com.kms.yxgh.sz.mapper.SzRecordItemMapper;
import com.kms.yxgh.sz.dto.SzRecordDetailExportDto;
import com.kms.yxgh.sz.dto.SzRecordSearchDto;
import com.kms.yxgh.sz.dto.SzRecordSimpleDto;
import com.kms.yxgh.sz.mapper.SzCheckingItemMapper;
import com.kms.yxgh.sz.mapper.SzCheckingLineMapper;
import com.kms.yxgh.sz.mapper.SzPlanOperatorMapper;
import com.kms.yxgh.sz.mapper.SzRecordMapper;
import com.kms.yxgh.util.BeanCopyUtils;
import com.kms.yxgh.util.StreamUtils;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.utils.DateUtils;
import com.shuili.common.utils.StringUtils;
import com.shuili.common.utils.poi.ExcelUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.kms.yxgh.sz.service.SzCheckingService.PART_SEPARATOR;
@ -43,166 +47,174 @@ import static com.kms.yxgh.sz.service.SzCheckingService.PART_SEPARATOR;
@AllArgsConstructor
public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
private final SzRecordItemMapper szRecordItemMapper;
private final SzCheckingService szCheckingService;
private final SzPlanService szPlanService;
private final SzRecordItemService recordItemService;
private final SzCheckingLineMapper checkingLineMapper;
private final SysUserService userService;
private final SzProjectCheckingRelMapper szProjectCheckingRelMapper;
private final SzPlanOperatorMapper planOperatorMapper;
private final SzCheckingItemMapper szCheckingItemMapper;
public IPage<SzRecordSimpleDto> search(SearchParam<SzRecordSearchDto> sp) {
IPage<SzRecord> page = new Page<>(sp.getPageNum(), sp.getPageSize());
SzRecordSearchDto searchDto = sp.getData();
IPage<SzRecordSimpleDto> records = this.getBaseMapper().search(page, searchDto);
records.getRecords().forEach(r -> {
r.setCreateName(userService.userName(r.getCreateUid()));
r.setOperators(planOperatorMapper.selectOperatorBySubPlanId(r.getSubPlanId()));
});
return records;
public IPage<SzRecordSearchDto> search(SearchParam<SzRecord> sp) {
IPage<SzRecord> page = selectPage(sp);
if (CollectionUtil.isNotEmpty(page.getRecords())) {
List<String> ids = page.getRecords().stream().map(SzRecord::getId)
.collect(Collectors.toList());
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.in(SzRecordItem::getRecordId, ids)
.eq(SzRecordItem::getStatus, CheckingStatus.ABNORMAL.getValue());
Map<String, List<SzRecordItem>> items = Optional.ofNullable(szRecordItemMapper.selectList(wp))
.map(list -> list.stream().collect(
Collectors.groupingBy(SzRecordItem::getRecordId, Collectors.toList())))
.orElseGet(Collections::emptyMap);
List<SzRecordSearchDto> records = page.getRecords().stream().map(r -> {
SzRecordSearchDto dto = BeanCopyUtils.copy(r, SzRecordSearchDto
.class);
if (dto != null) {
dto.setParts(items.getOrDefault(r.getId(), Collections.emptyList())
.stream().map(SzRecordItem::getParts).collect(Collectors.toList()));
dto.setOperatorName(Optional.ofNullable(userService.getWithRedis(r.getCreateUid())).map(
SysUser::getNickName).orElse(""));
}
return dto;
}).collect(Collectors.toList());
Page<SzRecordSearchDto> recordSearchDtoPage = new Page<>(page.getCurrent(), page.getSize(),
page.getTotal());
recordSearchDtoPage.setRecords(records);
return recordSearchDtoPage;
} else {
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
@Transactional(rollbackFor = Exception.class)
public SzRecordDetailDto finish(String id) {
SzRecord record = this.getBaseMapper().selectById(id);
if (record == null) {
throw new SzException("巡查记录不存在");
}
record.setStatus("1");
record.setEndDate(new Date());
this.getBaseMapper().updateById(record);
return this.getDetailById(id);
}
@Transactional(rollbackFor = Exception.class)
public SzRecordDetailDto start(StartPlan startPlan) {
if (StringUtils.isEmpty(startPlan.getPlanId())) {
if (StringUtils.isEmpty(startPlan.getWagaCode())) {
throw new SzException("巡查计划id与水闸编码不能都为空");
}
String xcId = getXcId(startPlan);
if (StringUtils.isEmpty(xcId)) {
throw new SzException("该水闸没有配置巡查项目,开始巡查失败");
}
return initRecord(startPlan, xcId, null);
} else {
SzPlanDetailDto planDetailDto = szPlanService.getDetailById(startPlan.getPlanId());
if (planDetailDto != null) {
planDetailDto.setId(null);
return initRecord(startPlan, planDetailDto.getXcId(), planDetailDto.getName());
}
throw new SzException("巡查计划不存在,开始巡查失败");
}
}
private SzRecordDetailDto initRecord(StartPlan startPlan, String xcId, String name) {
SzCheckingDetailDto checkingDetailDto = szCheckingService.getDetailById(xcId);
if (checkingDetailDto != null) {
SzRecord record = new SzRecord();
record.setPlanId(startPlan.getPlanId());
record.setName(StringUtils.isEmpty(name) ? checkingDetailDto.getName() : name + DateUtils.getTime());
record.setStatus(RecordStatus.CHECKING.getValue().toString());
record.setWagaCode(startPlan.getWagaCode());
getBaseMapper().insert(record);
public SzRecordDetailDto add(SzRecordDetailDto dto) {
SzRecord record = BeanCopyUtils.copy(dto, SzRecord.class);
if (record == null) {
throw new SzException("巡查记录不能为空");
}
SzCheckingLine line = checkingLineMapper.selectById(record.getLineId());
if (line == null) {
throw new SzException("巡查路线不存在");
}
int itemCount = szCheckingItemMapper.selectCount(Wrappers.<SzCheckingItem>lambdaQuery().eq(SzCheckingItem::getXcId, line.getXcId()));
record.setHandleStatus(handleStatus(dto));
record.setRemaining((long) itemCount - dto.getItems().size());
int rsp = getBaseMapper().insert(record);
if (rsp <= 0) {
throw new SzException("新增巡查记录失败");
}
String id = record.getId();
if (CollectionUtil.isNotEmpty(checkingDetailDto.getItems())) {
checkingDetailDto.getItems().forEach(o -> {
SzRecordItem item = new SzRecordItem();
item.setRecordId(id);
item.setContent(o.getContent());
item.setParts(String.join(PART_SEPARATOR, o.getParts()));
item.setStatus(CheckingStatus.NORMAL.getValue().toString());
item.setProblem("");
szRecordItemMapper.insert(item);
});
if (CollectionUtil.isNotEmpty(dto.getItems())) {
List<SzRecordItem> items = dto.getItems()
.stream().map(getSzRecordItemDtoSzRecordItemFunction(id))
.collect(Collectors.toList());
recordItemService.saveBatch(items);
}
return this.getDetailById(id);
} else {
throw new SzException("查询巡查检查项数据异常");
}
private String handleStatus(SzRecordDetailDto dto) {
if (CollectionUtil.isEmpty(dto.getItems()) || dto.getItems().stream().allMatch(r -> CollectionUtil.isEmpty(r.getProblemImages()))) {
//无异常
return "0";
}
if (dto.getItems().stream().anyMatch(r -> CollectionUtil.isEmpty(r.getHandleImages()) && CollectionUtil.isNotEmpty(r.getProblemImages()))) {
//未处置
return "1";
}
//已处置
return "2";
}
private String getXcId(StartPlan startPlan) {
Wrapper<SzProjectCheckingRel> wrapper = Wrappers.<SzProjectCheckingRel>lambdaQuery()
.eq(SzProjectCheckingRel::getWagaCode, startPlan.getWagaCode())
.eq(SzProjectCheckingRel::getType, startPlan.getType());
SzProjectCheckingRel rel = szProjectCheckingRelMapper.selectOne(wrapper);
if (rel == null) {
return null;
private static Function<SzRecordItemDto, SzRecordItem> getSzRecordItemDtoSzRecordItemFunction(String recordId) {
return o -> {
SzRecordItem item = BeanCopyUtils.copy(o, SzRecordItem.class);
if (item != null) {
item.setRecordId(recordId);
item.setParts(String.join(PART_SEPARATOR, o.getParts()));
item.setDoc(o.getProblemImages(), o.getHandleImages(), o.getProblemVoices());
}
return rel.getXcId();
return item;
};
}
public SzRecordDetailDto getDetailById(String id) {
SzRecord record = this.getBaseMapper().selectById(id);
if (record != null) {
SzRecordDetailDto dto = BeanCopyUtils.copy(record, SzRecordDetailDto.class);
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.eq(SzRecordItem::getRecordId, id);
List<SzRecordItem> items = szRecordItemMapper.selectList(wp);
if (CollectionUtil.isNotEmpty(items) && dto != null) {
if (dto != null) {
SzCheckingLine line = checkingLineMapper.selectById(record.getLineId());
dto.setEntries(Optional.ofNullable(line).map(SzCheckingLine::getPoints).orElse(""));
dto.setCreateName(userService.userName(dto.getCreateUid()));
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery().eq(SzRecordItem::getRecordId, id);
List<SzRecordItem> items = recordItemService.list(wp);
if (CollectionUtil.isNotEmpty(items)) {
dto.setItems(StreamUtils.toList(items, r -> {
SzRecordItemDto itemDto = BeanCopyUtils.copy(r, SzRecordItemDto.class);
if (itemDto != null) {
itemDto.setParts(Arrays.stream(StringUtils.split(r.getParts(), PART_SEPARATOR))
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()));
SzRecordItem.Doc doc = r.getDocObj();
if (doc != null) {
itemDto.setProblemImages(doc.getProblemImages());
itemDto.setHandleImages(doc.getHandleImages());
itemDto.setProblemVoices(doc.getProblemVoices());
}
}
return itemDto;
}));
}
setFiles(dto);
return dto;
if (line != null && StringUtils.isNotBlank(line.getXcId())) {
dto.setAllItem((long) szCheckingItemMapper.selectCount(Wrappers.<SzCheckingItem>lambdaQuery().eq(SzCheckingItem::getXcId, line.getXcId())));
}
return null;
}
private void setFiles(SzRecordDetailDto dto) {
if (dto != null && StringUtils.isNotEmpty(dto.getPlanId())) {
SzPlanDetailDto planDetailDto = szPlanService.getDetailById(dto.getPlanId());
if (planDetailDto != null) {
dto.setFiles(planDetailDto.getFiles());
}
return dto;
}
return null;
}
@Transactional(rollbackFor = Exception.class)
public SzRecordDetailDto update(SzRecordDetailDto szRecord) {
SzRecord record = this.getBaseMapper().selectById(szRecord.getId());
if (record == null) {
throw new SzException("巡查记录不存在");
}
SzCheckingLine line = checkingLineMapper.selectById(record.getLineId());
if (line == null) {
throw new SzException("巡查路线不存在");
}
record = Optional.ofNullable(BeanCopyUtils.copy(szRecord, SzRecord.class)).orElse(record);
int itemCount = szCheckingItemMapper.selectCount(Wrappers.<SzCheckingItem>lambdaQuery().eq(SzCheckingItem::getXcId, line.getXcId()));
record.setHandleStatus(handleStatus(szRecord));
record.setRemaining((long) itemCount - szRecord.getItems().size());
if (CollectionUtil.isNotEmpty(szRecord.getItems())) {
szRecord.getItems().forEach(o -> {
SzRecordItem item = new SzRecordItem();
item.setId(o.getId());
item.setRecordId(szRecord.getId());
item.setContent(o.getContent());
item.setParts(String.join(PART_SEPARATOR, o.getParts()));
item.setStatus(o.getStatus());
item.setProblem(o.getProblem());
szRecordItemMapper.updateById(item);
});
List<SzRecordItem> items = szRecord.getItems()
.stream().map(getSzRecordItemDtoSzRecordItemFunction(szRecord.getId()))
.collect(Collectors.toList());
recordItemService.saveOrUpdateBatch(items);
}
this.baseMapper.updateById(BeanCopyUtils.copy(szRecord, SzRecord.class));
this.baseMapper.updateById(record);
return szRecord;
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
boolean rt = removeById(id);
public Boolean deleteById(String[] ids) {
boolean rt = removeByIds(Arrays.asList(ids));
if (rt) {
deleteItems(id);
deleteItems(ids);
}
return rt;
}
private void deleteItems(String id) {
private void deleteItems(String[] ids) {
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.eq(SzRecordItem::getRecordId, id);
szRecordItemMapper.delete(wp);
.in(SzRecordItem::getRecordId, Arrays.asList(ids));
recordItemService.remove(wp);
}
public AjaxResult export(List<String> ids) {
List<SzRecord> list = Optional.ofNullable(this.listByIds(ids)).orElse(Collections.emptyList());
ExcelUtil<SzRecordDetailExportDto> util = new ExcelUtil<>(SzRecordDetailExportDto.class);
return util.exportExcel(list.stream().map(record -> {
SzRecordDetailExportDto exportDto = BeanCopyUtils.copy(record, SzRecordDetailExportDto.class);
if (exportDto != null) {
exportDto.setCreateName(userService.userName(record.getCreateUid()));
exportDto.initDuration();
}
return exportDto;
}).collect(Collectors.toList()), "checking-record");
}
}

2
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzSuperviseTaskService.java

@ -42,7 +42,7 @@ public class SzSuperviseTaskService extends BaseService<SzSuperviseTaskMapper, S
public SzSuperviseTaskDto add(SzSuperviseTaskDto dto){
SzSuperviseTask superviseTask = BeanCopyUtils.copy(dto, SzSuperviseTask.class);
superviseTask.setId(null);
// 当选择多个防名称时,生成多条监督检查任务,命名为设置的“检查名称-水闸名称”。
// 当选择多个防名称时,生成多条监督检查任务,命名为设置的“检查名称-水闸名称”。
String[] wagaCodes = superviseTask.getWagaCode().split(",");
String[] wagaNames = dto.getWagaName().split(",");
for (int i = 0; i < wagaCodes.length; i++) {

77
sql/sy/v1.4.0/全量脚本/menu.sql

@ -54,10 +54,7 @@ INSERT IGNORE INTO sys_menu
VALUES('16f8801ba2e34cb29c09e4829295ba9b', '资源目录', '9084032ec3f1413daf759c0cc38e1083', 0, 'layerResource', 'aiSupervision/layerManage/resource/index', 1, 'C', '0', '0', NULL, '#', '1', '2024-03-06 15:28:49', '', '2024-03-06 15:28:49', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('1cd0041896bd41dcac9e1cd6d203ccbc', '巡查计划管理', 'bc79940eb32443fea3ac016fd224de0a', 1, 'inspectionPlan', 'sluice/runManage/enginerring/inspectionPlan/index', 1, 'C', '1', '0', '', 'clipboard', '1', '2024-01-15 16:52:22', '1', '2024-03-18 17:05:33', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('1e52f525b387400e87afff319e26fd24', '配置', '9ab0791b65c64b189158a1a0098c8244', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:checking:plan:config', '#', '1', '2024-03-25 15:44:05', '1', '2024-03-25 15:44:13', '', NULL);
VALUES('1cd0041896bd41dcac9e1cd6d203ccbc', '巡查计划管理', 'bc79940eb32443fea3ac016fd224de0a', 1, 'inspectionPlan', 'sluice/runManage/enginerring/inspectionPlan/index', 1, 'C', '0', '0', '', 'clipboard', '1', '2024-01-15 16:52:22', '1', '2024-03-18 17:05:33', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('25adc36ec2c74f02a84d23a40012734c', '办法管理', 'ae58fd1b4e57475eb740598f0c7c44c2', 0, 'dikeMethodsManage', 'dike/runManage/supervisionInspetion/methodsManage/index', 1, 'C', '0', '0', '', 'build', '1', '2024-02-28 15:03:15', '1', '2024-03-18 09:47:18', '', NULL);
@ -81,9 +78,6 @@ INSERT IGNORE INTO sys_menu
VALUES('2b74d23af5f5435594b1c12cb573700d', '调度运用管理', '2e2e13824d9c4a81b14314c8bcb307b0', 0, 'utilize', 'sluice/runManage/dispatch/utilize/index', 1, 'C', '0', '0', '', 'chart', '1', '2024-03-11 10:48:59', '1', '2024-03-11 10:51:00', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('2be2e1dec90e451b9a9f740d5216fa79', '添加', '1cd0041896bd41dcac9e1cd6d203ccbc', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:checking:plan:add', '#', '1', '2024-03-25 15:47:32', '', '2024-03-25 15:47:32', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('2d26df05dea643b5842ac12e39f25785', '维修养护', 'a56aab90c27d4d9bb9f896de8e537944', 1, 'maintenance', 'sluice/runManage/maintenance/index', 1, 'M', '0', '0', '', 'icon-wxyh', '1', '2024-01-16 10:19:04', '1', '2024-01-16 17:33:03', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
@ -207,9 +201,6 @@ INSERT IGNORE INTO sys_menu
VALUES('7789c3d7444d452c9d4eed3cf6720745', '导出', '3e82ff82619048c3af822e81f1dc8d42', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:sup:meth:down', '#', '1', '2024-03-25 16:16:12', '', '2024-03-25 16:16:12', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('778aa09ec6b94350a38b114b3249cb8f', '编辑', '1cd0041896bd41dcac9e1cd6d203ccbc', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:checking:plan:edit', '#', '1', '2024-03-25 15:48:00', '', '2024-03-25 15:48:00', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('77a5de4ee8fd4e5484b6d96667fd7c6a', '堤防测报管理', 'a382ef796b234538a18a30cac8b8ec69', 0, 'testReportManage', 'dike/runManage/waterRainReport/testReportManage/index', 1, 'C', '0', '0', '', 'cascader', '1', '2024-02-04 10:18:15', '1', '2024-03-04 14:11:29', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
@ -279,9 +270,6 @@ INSERT IGNORE INTO sys_menu
VALUES('9a725e61d2fe4c70887c7c50e0cf9dd0', '查看', 'bf67c547f2824a74b15c80386ab5181c', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:jc:report:view', '#', '1', '2024-03-25 16:28:49', '', '2024-03-25 16:28:49', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('9ab0791b65c64b189158a1a0098c8244', '水闸巡查管理', 'bc79940eb32443fea3ac016fd224de0a', 2, 'patrolManage', 'sluice/runManage/enginerring/patrolManage/index', 1, 'C', '0', '0', '', 'icon-wxjl', '1', '2024-02-01 09:59:21', '1', '2024-02-01 10:35:38', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('9d266937ea0b407e84fcc3f9c86335a9', '核查任务管理', '26db00db08f940758527b9a9b99ab387', 1, 'inspectTasks', 'dike/runManage/dangerWeakProject/inspectTasks/index', 1, 'C', '0', '0', '', 'documentation', '1', '2024-03-21 09:20:45', '1', '2024-03-21 09:23:12', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
@ -339,9 +327,6 @@ INSERT IGNORE INTO sys_menu
VALUES('bf67c547f2824a74b15c80386ab5181c', '核查报告管理', '9643924e57ad464abdfb233614b9a7b5', 2, 'inspectReport', 'sluice/runManage/dangerWeakProject/inspectReport/index', 1, 'C', '0', '0', NULL, 'education', '1', '2024-03-20 16:33:00', '', '2024-03-20 16:33:00', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('c46a2c8204904d208b3c524cf698732c', '计划查看', '9ab0791b65c64b189158a1a0098c8244', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:checking:plan:view', '#', '1', '2024-03-25 15:44:45', '', '2024-03-25 15:44:45', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('c5687c7772804e328a7175605d28dff9', '编辑', '57f194c1c0544120b2ec9ee358fe0bd3', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:jc:task:edit', '#', '1', '2024-03-25 16:26:29', '', '2024-03-25 16:26:29', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
@ -441,13 +426,10 @@ INSERT IGNORE INTO sys_menu
VALUES('f4d04537753644f2bb81eb5729814031', '删除', '773200b686d14ed3bdc4f0486229547f', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:du:plan:delete', '#', '1', '2024-03-25 16:07:05', '', '2024-03-25 16:07:05', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f53483a7234e4be2908ba8122d1a147c', '删除', '1cd0041896bd41dcac9e1cd6d203ccbc', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:checking:plan:delete', '#', '1', '2024-03-25 15:48:15', '', '2024-03-25 15:48:15', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f5597866cbda457d8966e97e7aa0a15c', '巡查项详情', 'd829361aed664acdbaab128c89a6ec7c', 1, 'inspectionItemDetails', 'dike/runManage/enginerring/inspectionItems/inspectionItemDetails', 1, 'C', '1', '0', NULL, '#', '1', '2024-03-18 14:08:37', '', '2024-03-18 14:08:37', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f6f3db8b9a71461487c1d366d5d2e6ba', '巡查记录', 'bc79940eb32443fea3ac016fd224de0a', 2, 'inspectionRecords', 'sluice/runManage/enginerring/inspectionRecords/index', 1, 'C', '1', '0', '', 'documentation', '1', '2024-01-16 10:04:51', '1', '2024-02-01 14:43:18', '', NULL);
VALUES('f6f3db8b9a71461487c1d366d5d2e6ba', '巡查记录', 'bc79940eb32443fea3ac016fd224de0a', 2, 'inspectionRecords', 'sluice/runManage/enginerring/inspectionRecords/index', 1, 'C', '0', '0', '', 'documentation', '1', '2024-01-16 10:04:51', '1', '2024-02-01 14:43:18', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f7363d3c7c134b408a6f67a2698d15cd', '查看', 'ebfbabbfc44f45deb4f77c2a80af1a13', 1, '', NULL, 1, 'F', '0', '0', 'sz:run:dtjc:view', '#', '1', '2024-03-25 16:33:23', '', '2024-03-25 16:33:23', '', NULL);
@ -552,6 +534,24 @@ INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('6f9467f042d94a21b34e55cdd3c9dc3b', '新增/编辑计划', '0c65b8e973b245f6b7453d64260ae1c9', 1, 'createMaintenancePlan', 'dike/runManage/maintenance/maintenancePlan/CreateMaintenancePlan', 1, 'C', '1', '0', '', '#', '1', '2024-07-08 15:06:52', '1', '2024-07-08 16:52:46', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('28444326c4b54b578b3b7214f3d41524', '巡查路线管理', 'bc79940eb32443fea3ac016fd224de0a', 1, 'inspectionRouteManage', 'sluice/runManage/enginerring/inspectionRouteManage/index', 1, 'C', '0', '0', NULL, 'guide', '1', '2024-07-19 13:56:47', '', '2024-07-19 13:56:47', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('5deee304c07743a28ac1fdc552ebd412', '巡查计划新增/编辑', 'bc79940eb32443fea3ac016fd224de0a', 5, 'createInspectionPlan', 'sluice/runManage/enginerring/inspectionPlan/CreateInspectionPlan', 1, 'C', '1', '0', NULL, '#', '1', '2024-06-07 19:27:05', '', '2024-06-07 19:27:05', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('5a2198ef8acc400d9fcceaecadabc3e9', '巡查记录新增/编辑', 'bc79940eb32443fea3ac016fd224de0a', 5, 'CreateInspectionRecords', 'sluice/runManage/enginerring/inspectionRecords/CreateInspectionRecords', 1, 'C', '1', '0', NULL, '#', '1', '2024-07-19 15:00:42', '', '2024-07-19 15:00:42', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('432ec45a2162484e86aa012241682730', '路线设置', 'bc79940eb32443fea3ac016fd224de0a', 0, 'createRoutePage', 'sluice/runManage/enginerring/inspectionRouteManage/CreateRoutePage', 1, 'C', '1', '0', NULL, '#', '1', '2024-07-19 14:56:39', '', '2024-07-19 14:56:39', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('631e305410fb4b1f9ff8eb9b079121a4', '列表项通过/驳回按钮', 'cf158177e62e49b9b1fd7d28e7de07cd', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:accept:item:submit', '#', '1', '2024-07-18 11:46:20', '', '2024-07-18 11:46:20', '', NULL);
@ -672,3 +672,40 @@ VALUES('b5fad7903f1b4b26bebb6101a1c9ef0b', '批量删除按钮', '3f7cf2a425984f
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('9a2823e740d74b03b28a0486a54ef3a4', '新增计划按钮', '3f7cf2a425984fc391100536d472517c', 0, '', NULL, 1, 'F', '0', '0', 'df:run:inspection:plan:add', '#', '1', '2024-07-18 11:29:55', '', '2024-07-18 11:29:55', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('0ea48df464594b00bbeb668c98d58a9c', '列表项删除按钮', 'f6f3db8b9a71461487c1d366d5d2e6ba', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:record:item:del', '#', '1', '2024-07-22 14:47:18', '', '2024-07-22 14:47:18', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('5e09077a228542bcbb778a1288302d9f', '列表项处置按钮', 'f6f3db8b9a71461487c1d366d5d2e6ba', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:record:item:deal', '#', '1', '2024-07-22 14:46:57', '', '2024-07-22 14:46:57', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('db5bb414f989410db744436c8aaaa3fa', '列表项编辑按钮', 'f6f3db8b9a71461487c1d366d5d2e6ba', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:record:item:edit', '#', '1', '2024-07-22 14:46:32', '', '2024-07-22 14:46:32', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f871f91a89de4079814d3b52e82d1152', '批量删除按钮', 'f6f3db8b9a71461487c1d366d5d2e6ba', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:record:delAll', '#', '1', '2024-07-22 14:46:09', '', '2024-07-22 14:46:09', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('ff0a7e44eca9402f88f1c28bd0d9aaae', '批量导出按钮', 'f6f3db8b9a71461487c1d366d5d2e6ba', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:record:export', '#', '1', '2024-07-22 14:45:42', '', '2024-07-22 14:45:42', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('702fa200370a42ee875ebc172ea9a609', '列表项删除按钮', '1cd0041896bd41dcac9e1cd6d203ccbc', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:plan:item:del', '#', '1', '2024-07-22 14:41:36', '', '2024-07-22 14:41:36', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('e8518a242e2141428c46ddb60951468d', '列表项编辑按钮', '1cd0041896bd41dcac9e1cd6d203ccbc', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:plan:item:edit', '#', '1', '2024-07-22 14:41:10', '', '2024-07-22 14:41:10', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('4bcee1cd4ceb4f0dba500b46cf21c295', '批量删除按钮', '1cd0041896bd41dcac9e1cd6d203ccbc', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:plan:delAll', '#', '1', '2024-07-22 14:40:47', '', '2024-07-22 14:40:47', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('936cacc4c993468a9c9a8674bb0d6d42', '列表项删除按钮', '28444326c4b54b578b3b7214f3d41524', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:line:item:del', '#', '1', '2024-07-22 14:34:11', '', '2024-07-22 14:34:11', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('c203c436a14e4ee9b372e4a87d7b36e5', '列表项编辑按钮', '28444326c4b54b578b3b7214f3d41524', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:line:item:edit', '#', '1', '2024-07-22 14:33:46', '', '2024-07-22 14:33:46', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('f3390f85d972479cac439d8e30cd4d9c', '批量导出按钮', '28444326c4b54b578b3b7214f3d41524', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:line:export', '#', '1', '2024-07-22 14:33:22', '', '2024-07-22 14:33:22', '', NULL);
INSERT IGNORE INTO sys_menu
(id, menu_name, parent_id, order_num, `path`, component, is_frame, menu_type, visible, status, perms, icon, create_uid, create_time, update_uid, update_time, remark, parent_name)
VALUES('18a2410c2d0f4ad48655099da9e9fa98', '批量删除按钮', '28444326c4b54b578b3b7214f3d41524', 0, '', NULL, 1, 'F', '0', '0', 'sz:run:inspection:line:delAll', '#', '1', '2024-07-22 14:27:00', '', '2024-07-22 14:27:00', '', NULL);

20
sql/sy/v1.4.0/增量脚本/v1.4.0-update.sql

@ -58,16 +58,6 @@ CREATE TABLE `bs_sgc_sp_objrole` (
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='审批对象角色表';
CREATE TABLE `bs_sgc_sp_objrole` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '审批对象角色编号',
`ROLE_ID` varchar(50) NOT NULL COMMENT '角色ID',
`OBJ_TYPE` varchar(50) NOT NULL COMMENT '对象类型',
`CREATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最近修改人',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '最近修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='审批对象角色表';
ALTER TABLE `bs_sgc_sz_yhjh` ADD `WAGA_NAME` varchar(50) COLLATE utf8mb4_general_ci COMMENT '水闸名称';
ALTER TABLE `bs_sgc_sz_yhjh` ADD `WAGA_TYPE` int COMMENT '水闸类型';
@ -177,7 +167,9 @@ CREATE TABLE `bs_sgc_job_task`(
delete from sys_menu where id in (
'2af1e46844a04dc1898f7bf27afd09bd','88a90a6452fb4af7b070b37b83fb73a4','dce5c717ecaf475ea71ca2d095232ec7',
'385993aea2c44283a21f09772b909bc3','e6d27d32dfbe4201ac7ea1036d05494e','025ea8a420a64bc399d6547d74542b24','e92cae0b06d242c4aa5bfc41d7c3c26c',
'f512341df2a8454e830fd2635e34b1bb','c85c1d9751174b4ba7b9284d0751dcd7','c825178955e4420a94238005a54ac084','364f425d93344ffa890c5ec185c28c49'
'f512341df2a8454e830fd2635e34b1bb','c85c1d9751174b4ba7b9284d0751dcd7','c825178955e4420a94238005a54ac084','364f425d93344ffa890c5ec185c28c49',
'9ab0791b65c64b189158a1a0098c8244','c46a2c8204904d208b3c524cf698732c','1e52f525b387400e87afff319e26fd24',
'2be2e1dec90e451b9a9f740d5216fa79','778aa09ec6b94350a38b114b3249cb8f','f53483a7234e4be2908ba8122d1a147c','a6b7f717b0af4076963b023e05b837a4'
)
update sys_menu set visible = '0' and menu_name = '维养计划' where id = '3f7cf2a425984fc391100536d472517c';
@ -185,6 +177,12 @@ update sys_menu set visible = '0' and menu_name = '维养计划' where id = '038
update sys_menu set visible = '0' and menu_name = '维养记录' where id = '29a31582ce3147449b6c0d6718f00d38';
update sys_menu set visible = '0' and menu_name = '维养记录' where id = 'f3e4f97a9aa8493892e8fbb3eeaa0efe';
update sys_menu set visible = '0' where id = 'f6f3db8b9a71461487c1d366d5d2e6ba';
update sys_menu set visible = '0' where id = 'fe97025934b64dd5b45e35d92bfac1f2';
update sys_menu set visible = '0' where id = '1cd0041896bd41dcac9e1cd6d203ccbc';
update sys_menu set visible = '0' where id = '0e55e53cf99f417d8a3cb058f7f525ec';
INSERT INTO sys_dict_type
(id, dict_name, dict_type, status, create_uid, create_time, update_uid, update_time, remark)

Loading…
Cancel
Save